Commit Graph

203 Commits

Author SHA1 Message Date
6cc3546dc2 docs: tracking + wiki for DPI exfil engine + Netrunner report (2026-06-22)
HISTORY/WIP/TODO checkpoint for the session (#687 DPI pipeline, #707 Netrunner
report HTML+PDF, #689/#697 sbxmitm fixes; all merged & live). New wiki page
docs/wiki/DPI-Exfiltration.md + sidebar links (kbin ToolBoX, DPI Exfil + Report).
2026-06-22 13:02:19 +02:00
a870eb380e feat(toolbox): kbin Tor egress quick-switch — switch + tunnel, DARK (ref #683)
Routes the R3 mitm-wg worker uid's upstream egress + DNS through Tor
(TransPort 9040 / DNSPort 5353) via an nft owner-match table, so MITM
inspection (ad-block/poison/banner/safe-browsing) is fully preserved —
only the exit IP + network identity change. Ships default-OFF, fail-closed.

- filters: tor_mode / tor_preset flags (validated)
- api: GET/POST /admin/tor/{state,on,off,newnym,check-leaks} (kbin-gated)
- tor_ctl.py: reuses secubox-tor control-port logic (status/NEWNYM), no JWT
- tunnel: conf/nft-toolbox-tor.nft (fail-closed kill-switch + v6 drop) +
  torrc drop-in + root path-triggered reconciler (portal stays
  NoNewPrivileges=true; nft loaded before tor = no clearnet window)
- WebUI: 🧅 Tor tab (badge, toggle, NEWNYM, leak probe)
- packaging: Depends jq; Recommends tor, python3-socksio; postinst adds
  secubox-toolbox to debian-tor group; prerm disarms on real removal
- 166 tests green (10 new); toolbox 2.7.1

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 12:19:52 +02:00
4c6777dc68 chore(toolbox): 2.7.0 middle release — kbin milestone + Tor chapter (ref #683)
Some checks are pending
License Headers / check (push) Waiting to run
kbin (public ToolBoX portal) framed as the first tool of the CyberMind
Swiss-army cyber kit: transparent perf, full-encrypted MITM inspection,
ad poison/smog injection, adware-ban banner, safe browsing.

- secubox-toolbox 2.6.59 -> 2.7.0 (caps 2.6.x, opens kbin chapter)
- docs: wiki Kbin-Toolbox.md, FAQ-KBIN-TOR.md, README blurb
- plan #683: kbin Tor endpoint (outbound egress quick-switch) — design spec
- WIP/TODO/HISTORY updated

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 11:48:32 +02:00
381eb3b8f5 docs: WAF engine migration feasibility analysis (Coraza+CRS via HAProxy SPOA) (ref #662)
Some checks are pending
License Headers / check (push) Waiting to run
2026-06-18 22:31:12 +02:00
ca9b38b175 feat(#662 Phase 2b): parallel handshake bench — Go core scales 3.4x at 4 cores (multi-core gate settled) 2026-06-18 17:23:23 +02:00
8a4996d14c docs(#662): Phase 2 bench results — Go PoC proven on arm64 (CA-compat/204/inject/JA4/12MB); throughput gate deferred to controlled bench 2026-06-18 17:19:01 +02:00
6daacb1987 feat(#662 Phase 1): MITM-engine migration analysis + phased plan + compiled/tested Go forging-MITM PoC
Analysis: gomitmproxy (unmaintained, dropped) vs martian/goproxy (Go) vs hudsucker
(Rust) vs Squid+ICAP, mapped to the 18-addon capability set. Recommendation: Go
hot-path core + retained Python analysis sidecars. Phased plan with shadow-run +
nft-DNAT-flip rollback (no big-bang cutover). Phase-1 PoC (packages/secubox-toolbox-ng,
stdlib-only): forge from ca-wg CA, 204-block, body-inject, SNI-splice, ClientHello/JA4
capture — go vet clean, tests green, arm64 cross-compile OK. NOT wired to live R3.
2026-06-18 17:07:48 +02:00
3dfe85f547 docs: implementation plan for Ad Intelligence (#656) 2026-06-18 13:06:26 +02:00
221abd94a2 docs: spec for Ad Intelligence — learn/act/measure + #ads tab (#656) 2026-06-18 13:04:53 +02:00
09e16f35a1 docs: implementation plan for toolbox selective SNI-splice (#649) 2026-06-18 11:09:02 +02:00
7834a29724 docs: spec for toolbox selective SNI-splice (Lever A, #649) 2026-06-18 11:04:26 +02:00
7dd39d52a4 docs: spec + plan for hub dashboard latency fix (ref #644) 2026-06-18 08:45:31 +02:00
ea19e80685 docs: #642 social IP-literal fix design + plan (ref #642) 2026-06-17 16:58:28 +02:00
765de07ac8 docs: #clients reset-all + emojis implementation plan (ref #634, #635) 2026-06-17 16:01:03 +02:00
c687225e1b docs: #clients reset-all (#634) + device/geo emojis (#635) design (ref #634) 2026-06-17 15:58:46 +02:00
bd54d82ae2 docs: anti-tracking v2 design — layered block/poison/anonymize 2026-06-17 15:15:28 +02:00
30eeedf86e Merge remote-tracking branch 'origin/master' into fix/636-toolbox-r3-banner-stream-inject-loader-b
# Conflicts:
#	packages/secubox-toolbox/debian/changelog
2026-06-17 15:13:36 +02:00
555176fef5 docs: Anti-Track v2 Plan 2d implementation plan (ref #633) 2026-06-17 14:46:32 +02:00
572caab035 docs: Anti-Track v2 Plan 2d #social top-5 design (ref #633) 2026-06-17 14:45:36 +02:00
6694860779 docs: #636 implementation plan (CSP fallback + bundle cache key) (ref #636) 2026-06-17 14:33:50 +02:00
876becec0a docs: #636 amend — retract Bug2 (R3 report-url correct); real residual is bundle cache key (ref #636) 2026-06-17 14:32:49 +02:00
644996b9f5 docs: #636 R3 banner CSP-fallback + report-url fix design (ref #636) 2026-06-17 14:30:43 +02:00
abc5dd47cb docs: Anti-Track v2 Plan 2c implementation plan (ref #633) 2026-06-17 14:01:21 +02:00
aac1ae58d9 docs: amend Plan 2c spec — missing /list endpoint is the real bug; seed exists inline (ref #633) 2026-06-17 13:59:08 +02:00
fea1147bf6 docs: Anti-Track v2 Plan 2b-DNS implementation plan (ref #633) 2026-06-17 13:41:59 +02:00
31dc83f696 docs: Anti-Track v2 Plan 2b-DNS design (unbound NXDOMAIN, live-verified topology) (ref #633) 2026-06-17 13:39:57 +02:00
cfdb1c418c docs: Anti-Track v2 Plan 2c bypass-seed design (ref #633) 2026-06-17 13:33:56 +02:00
78a049c4b2 docs: Anti-Track v2 Plan 2b IP-drop implementation plan (ref #633) 2026-06-17 12:52:41 +02:00
ee3a9aee4d docs: Anti-Track v2 Plan 2b enforcement design (DNS-refuse + exclusive-IP nft-drop) (ref #633) 2026-06-17 12:49:21 +02:00
01715363aa docs: Anti-Track v2 Plan 2a implementation plan (ref #633) 2026-06-17 12:08:03 +02:00
76cc96eff5 docs: Anti-Track v2 Plan 2a learning design (cookie-xsite + pure-promote) (ref #633) 2026-06-17 12:04:41 +02:00
2e2ab3995f docs: Anti-Track v2 core implementation plan (ref #633) 2026-06-17 10:57:26 +02:00
9d1b0abade docs: spec for HAProxy complete dynamic vhost auto-discovery (landed for later) 2026-06-17 08:49:29 +02:00
CyberMind
0c57960fd3
Merge pull request #621 from CyberMind-FR/feature/620-toolbox-ttfb-perf-stream-inject-async-pe
toolbox: TTFB perf — stream-inject + async per-host decision bundle (replace full-body HTML buffering)
2026-06-17 07:08:13 +02:00
6899b18ff8 docs: toolbox TTFB stream-inject design spec (ref #620) 2026-06-16 21:46:16 +02:00
3e487adf2c docs: security-posture v2 rewrite design spec (ref #617) 2026-06-16 14:25:57 +02:00
e1f22b6dda docs(cspn): draft CSPN test matrix (criteria → runnable tests)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:14:40 +02:00
7a56b8de35 docs: Mistral.ai handover prompt (reprise code + analyse projet)
Some checks are pending
License Headers / check (push) Waiting to run
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 09:37:48 +02:00
2b1d2173c0 docs: add Cartographie sociale 'You Have Been Tracked' README section + poster brief (ref #502)
Some checks are pending
License Headers / check (push) Waiting to run
- README: new VILLAGE3B subsection for the Phase 11 social mapping
    feature (per-client /social/me, d3 graph, RGPD wipe, operator tab).
  - docs/marketing/POSTER-you-have-been-tracked.md: poster brief with
    the real kbin metrics (218 trackers, 142 sites, 234 JA4, 83693
    connexions) + doctrine guardrails + declension variants.
2026-06-10 12:52:36 +02:00
3d2ecd574f feat(secubox-toolbox): 3 QR code endpoints + splash QR display + 9th dashboard widget (device fingerprint) + README poster integration (ref #495 #497)
## QR endpoints (python-qrcode)

  GET /qr/splash.png    → QR encodes the splash URL (Cabine join)
  GET /qr/cert.png      → QR encodes /ca/mobileconfig (iOS profile)
  GET /qr/webclip.png   → QR encodes /ca/webclip-cabine.mobileconfig
  GET /qr/{target}.png  → generic : maps splash/cert/webclip/report/
                          fingerprint to fixed URLs, or encodes literal

  PNG output, Cache-Control: public, max-age=3600.
  Verified : 232x232 1-bit grayscale, 384-553 bytes each.

  debian/control adds python3-qrcode dependency.

## Splash QR card

The cert install card on the splash now shows 3 QR codes (① SPLASH,
② CERT iPHONE, ③ WEBCLIP HOME) on a white background grid below the
test button. Scannable from another device for cross-installation
(useful at the cabine : user shows QR to others without typing URLs).

## Dashboard hero : 9th widget (device fingerprint)

Mirroring the poster layout, added a full-width 9th widget below the
2 rows of 4 KPI widgets :

  ┌─────────────────────────────────────────────────────────┐
  │ 📱 📱 Empreinte device                                   │
  │      iPhone iOS 26.3 · 🟢 Chrome 148                     │
  │      21 UAs distincts observés                           │
  └─────────────────────────────────────────────────────────┘

Now matches the 9-widget metrics layout from the public poster :
🌐 connexions · 📡 hôtes ·  OK 2xx · 🔒 cert-pin
📺 apps · 🍪 trackers · 🌍 pays · 🎯 score
📱 device (full-width)

## README + assets/poster integration (#497)

  - README.md : new section at top with poster image embed + 3 doc links
  - docs/assets/poster/README.md : print specs + variants list + license
  - Placeholder docs/assets/poster/village3b-A2.png expected (user provides)

Wiki integration pending : will be added via gh wiki API once issue #497
phase 2 launches.

## Rebase

Branch was rebased onto master (which now has all PR #493 Phase 3
commits). control merged : Phase 3 fonts + Phase 5 lxc deps + new
python3-qrcode in one cohesive Depends block.
2026-06-05 11:24:03 +02:00
2efdd82bbf docs(marketing): poster grand public + dossier presse update Phase 3+5+6 (ref #492 #480)
## 2 docs marketing

### POSTER-grand-public-village3b.md (NEW)
Brief de poster A2 portrait pour affichage public (médiathèque, école,
mairie, EHPAD). 6 zones :
  1. Titre 📡 VILLAGE3B + USP (anonyme + gratuit + open source)
  2. 3 niveaux d'opt-in R0/R1/R2 visualisés
  3. Ce que contient le rapport (KPI + categories + transparency)
  4. Conformité CSPN/LCEN + 5 garanties
  5. 3 QR codes (splash, cert, webclip)
  6. Footer CyberMind + contact + soutiens

Variantes A4/A5/dépliant 3-volets documentées. Charte couleurs P31 phosphor
green + Cosmos Black + Gold Hermétique alignée avec DESIGN-CHARTER.md.

Output formats à générer : PDF print 300dpi, SVG Inkscape source, PNG
1920x1080 social, Story IG 1080x1920, LinkedIn banner.

### PROMPT-claude-presse-gouv.md (UPDATED)
Ajout d'une ANNEXE 'Mise à jour 2026-06-05' qui synchronise le dossier
presse avec l'évolution récente :

  - Modèle d'opt-in à 3 niveaux + R3 WireGuard (Phase 6)
  - Transparence radicale : 'La cabine SAIT se taire, et DIT QUAND elle
    se tait' — différenciateur fondamental
  - Architecture mitm disjoints (Phase 5 #495 séparation host/LXC)
  - Mode WireGuard portable kbin.gk2.net:51820 (Phase 6 #496) pour
    usage HORS cabine physique = inclusion territoriale + EHPAD/domicile
  - Engine sensibilité réglable (low/medium/high/paranoid) : opérateur
    collectivité adapte sans toucher code
  - Empreinte hardware MochaBin + Debian + coût ~250€ HT
  - AI-HANDOVER brief = continuité du commun numérique au-delà d'un auteur
  - 5 composants installables iPhone (cert + webclip + WG + guide)
  - Engagement personnel : 'pas de boîte noire, commun numérique'

Tous ces éléments à intégrer par le rédacteur LLM dans la tribune,
le CP, les candidatures France.gouv (ANCT/France-Services/Beta.gouv/
ANSSI/France 2030/CNIL).
2026-06-05 11:07:34 +02:00
17ff8c5cfb docs: AI-HANDOVER tech brief for external LLM (GPT-5/Gemini/Claude) (ref #492)
13-section self-contained brief :
  1. Mission produit + licence CMSD strict
  2. Stack technique exhaustif
  3. 2 mitm DISJOINTES (ToolBox host vs WAF LXC) — règle d'or
  4. Niveaux R0/R1/R2 + R3 roadmap
  5. Phases 1->8 status
  6. Endpoints API actuels + Phase 6 ajouts
  7. Rule engine sensitivity profiles
  8. Drapeaux + emojis (5 fonts embedded PDF)
  9. Quick-up composants splash
  10. Dette technique connue (#494, WAF, certs, perms)
  11. Contributing rules (worktree + licence header + pas Claude/Anthropic ref + tests E2E + CSPN)
  12. Status 2026-06-05 + roadmap actif
  13. Contact

Destiné à brief un autre assistant LLM sans contexte préalable pour
contribuer en cohérence avec l'écosystème cabine VILLAGE3B.
2026-06-05 11:05:13 +02:00
CyberMind
43b87d0111
docs: license correction — retirer mentions AGPL/Apache (ref #481) (#483)
Le projet est sous LicenseRef-CMSD-1.0 (Source-Disclosed License) EXCLUSIVEMENT.
Les mentions AGPL dans les textes user-facing étaient incorrectes — corrigé.

Fichiers modifiés :
- packages/secubox-toolbox/README.md (section Licence)
- packages/secubox-toolbox/conf/splash.html.j2 (footer)
- packages/secubox-toolbox/conf/report-live.html.j2 (footer)
- packages/secubox-toolbox/secubox_toolbox/reports.py (PDF footer)
- docs/marketing/PROMPT-claude-presse-gouv.md (7 mentions corrigées + 1 ajout
  d'avertissement explicite "NE PAS confondre avec AGPL ou Apache" pour
  guider la future session Claude)

Le prompt presse a aussi été ajouté à cette branche pour éviter la divergence
master-vs-worktree (le file était untracked dans master).

Co-authored-by: CyberMind-FR <gandalf@Gk2.net>
2026-06-05 06:27:43 +02:00
948774f7fc docs(specs): integrate CM-WALL-EGRESS-2026-06 v0.1.0-draft + agent context
Spec stored under docs/specs/ for source of truth.

Module : WALL (paire complémentaire WALL↔MIND), compagnon de
CM-MESH-MPCIE-2026-06. Détection egress + corrélation menaces sur
Gondwana-Air.

Frontière R1/R2 intangible :
  R1 — métadonnées (flux, DNS, TLS-méta, IP-intel, NIDS) : licite
       sur accès ouvert, détection passive par défaut.
  R2 — contenu (TLS-break, DPI profonde, file-extract) : segments
       consentis/gérés UNIQUEMENT, opt-in journalisé.

Couches L0-L5 décrites avec outils ARM64 (Suricata 7.x, Zeek,
unbound+RPZ, goflow2/nfdump, feeds abuse.ch/ET/Spamhaus/MISP).

Contrainte ECH 2026 actée : SNI chiffré → poids sur L0 flux + L2
JA4 + L3 IP-intel + cadence, jamais sur SNI seul.

packages/secubox-egress/CLAUDE.md : agent context complet, DoD §1,
garde-fous §2 (R1/R2 intangible, OPAD, ECH-ready, secrets hors
TOML, LCEN), arborescence §3, TOML §4, API §5 (5 endpoints), NIDS
§6, .deb §7, ordre tâches §8, tests bench Maurienne §9.

Refus runtime câblé dans api.py : POST /wall/quarantine avec
regime=r2 + vlan=open_access_vlan → 403 (interception illicite).
Corrélation correlate.py exige multi_signal_threshold concordants
avant verdict quarantine (anti-faux-positif cloud-intel).
2026-06-02 11:13:44 +02:00
8a853ba3e8 docs(specs): integrate CM-MESH-MPCIE-2026-06 v0.2.1-draft
Spec stored under docs/specs/ for source of truth, referenced by the
two module CLAUDE.md files.

Major changes from v0.1.0:

  v0.2.0 — hardware matrix FROZEN on real inventory :
    - Backhaul WLE900VX / QCA9880 / ath10k_pci (mPCIe PCIe, 3x3)
    - Access MT7632U / mt76x2u (USB) or AR9271 / ath9k_htc (firmware-free)
    - MT7615 + ath9k mPCIe ABANDONED (not in stock)
    - Globalscale NXP card DISCARDED (no mesh point, opaque firmware)
    - BLE hole CONFIRMED (no LESC controller in stock)
    - ath10k 802.11s = validation item #1

  v0.2.1 — refinements :
    - "S305-8946-1A4C" shielded modules IDENTIFIED = MT7632U (open #6 closed)
    - Method clarified : USB enumeration over mPCIe adapter is artifact ;
      chip ID (MT7632U = USB silicon) is what determines bus
    - Multi-radio per node ACTED (1 mPCIe + 2 USB3 = up to 3 radios)
    - mt76 backhaul fallback documented if ath10k 802.11s disappoints

CLAUDE.md updates:

  - secubox-mesh : new prologue section reflecting v0.2.1 matrix figée,
    validation priority items, mt76 fallback noted. Code stays
    chipset-agnostic, default TOML now reflects retained stock.
  - secubox-mesh-bt : new prologue section flagging BLE hardware hole
    blocks S2/S3 ; Option A (source BLE 5.x mainline) vs Option B
    (ESP32 front-end, in stock) decision REQUIRED before gatt/oob/
    session implementation. Architecture impact documented.
2026-06-02 11:06:40 +02:00
CyberMind
6fad8bd99f
Merge pull request #412 from CyberMind-FR/feature/409-secubox-avatar-smart-media-cookie-hoster
secubox-avatar: Companion personas + client-encrypted session vault (#409)
2026-05-29 09:20:48 +02:00
787c6b03e8 fix(nextcloud): give LXC systemd-resolved a DNS upstream; document LXC DNS gotcha
Static resolv.conf in the container is hijacked by systemd-resolved's empty
127.0.0.53 stub, killing DNS (no appstore/updates/external mounts) while NAT
egress still works. Drop a resolved.conf.d upstream at install. Add
docs/FAQ-LXC-DNS.md describing symptom/cause/fix. Live NC already patched.
2026-05-29 07:10:39 +02:00
79d6e08ffc docs(wiki): SecuBox Companion — avatar personas, selectable picker, Become (ref #409)
Document the persona model: a named, browser-encrypted group of site sessions
the operator picks from a tick-list of their live logins, reapplied with one
Become click on any same-LAN box. Explains the <all_urls> read / ticked-write
posture and that ciphertext never leaves the SecuBox.
2026-05-28 14:15:02 +02:00
c14f5b2d23 docs(audit): mesh cluster inspection — master-link is dead code, mirror is miscategorized
Per-package inspection of the mesh cluster found:

  - secubox-mesh (Yggdrasil daemon control), secubox-meshname
    (Meshname DNS resolver), secubox-daemon (Go mesh binary) — all
    distinct, keep.
  - secubox-mirror — miscategorized: it's an APT/CDN cache, not
    mesh-related at all. Audit grouped it by prefix matching.
  - secubox-master-link — effectively dead on a running system:
    ships an 851-LOC API and frontend but no nginx config; its 21
    API endpoints (/run/secubox/master-link.sock) are unreachable
    from the web. The "master-link" UI operators actually see is
    served by secubox-p2p (which has its own /master-link/status +
    /master-link/token endpoints + ships the frontend to
    /var/www/secubox/master-link/).
  - secubox-p2p is the canonical master-link owner.

Real consolidation candidate: master-link → p2p fold. Bigger than
the mmpm/magicmirror fold (issue #381) because of asymmetric API
surface — master-link's 21 endpoints vs p2p's 2 existing
/master-link/* endpoints means the merge isn't mechanical. Defer
to a separate per-cluster issue with its own scope decisions.

Mesh cluster net reduction potential: -1 (after master-link → p2p
fold), not the -4 the original audit projected. Total realistic
floor unchanged from previous revision (~130-136 packages).
2026-05-27 08:31:36 +02:00
66adab2f5c docs(audit): Tier 3 + Tier 4 revision — pattern is naming-affinity, not redundancy
Per-package code inspection of the streamlit (already revised), dpi
(revised in 382), dns, and threats clusters all returned the same
finding: the audit's initial cluster groupings were based on naming
similarity, not architectural redundancy.

DNS cluster (5 → 5, was 5 → 1):
  Five distinct DNS-layer subsystems, no shared config files. The
  audit's "all overlap on /etc/resolv.conf and/or unbound" claim was
  wrong — grep for /etc/resolv.conf in any of them returns zero hits.
  Each touches its own config + data directory.

Threats cluster (7 → 7, was 7 → 1):
  Seven distinct security capabilities with distinct backends
  (crowdsec scenarios, nftables, dnsmasq logs, remote feeds, own
  data dirs). Only the umbrella secubox-threats actually subscribes
  to the CrowdSec/Suricata event bus the audit claimed all seven
  did.

Tier 4 table revised to "candidates for inspection" — each cluster
needs the same per-package code check before any merge work.

Realistic-reduction floor updated from ~100 packages to ~130-136
(a 4-8% reduction from 141 rather than the originally projected 28%).
Where consolidation actually paid off: Tier 0 packaging bug (#378),
Tier 1 mail dead-code (#380), Tier 2 mmpm-magicmirror scaffolding
duplicate (#381), Tier 2 dpi description clarity (#382).

The pattern observation section explicitly flags this for future
work: most "fuzzy clusters" in out/clusters-fuzzy.txt are naming
overlaps, not merge targets. Treat the audit's cluster lists as
candidates for Description-clarity passes rather than packaging
merges.
2026-05-27 08:19:05 +02:00