🔐 État de SĂ©curitĂ© CERVUS

A-Note globale
DerniĂšre mise Ă  jour : 11 juin 2026 — rotation CLOSE (legacy dĂ©sactivĂ©es + 401 vĂ©rifiĂ©) · Route : dashboard.sascervus.com/securite.html · MAJ Ă  chaque session sĂ©cu

🔑 ClĂ©s API Supabase (Projet A) NEW

Phase 1 — N8N sur clĂ© dĂ©diĂ©e 5 workflows agents, clĂ© sb_secret « n8nkeys », scan 66 wf = 0 legacy (10/06)FAIT
Phase 2 — 62 EF migrĂ©es vers SUPABASE_SECRET_KEYS 67 occurrences patchĂ©es, fallback legacy le temps de la bascule (10/06)FAIT
Front basculĂ© sur clĂ© publishable VITE_SUPABASE_ANON_KEY → sb_publishable, redĂ©ployĂ© + REST testĂ© 200 (10/06)FAIT
ClĂ©s legacy DÉSACTIVÉES (anon + service_role) Clic Ben 11/06 · vĂ©rifiĂ© 401 « Legacy API keys are disabled » · systĂšme re-testĂ© OK (site + REST + EF 200) · ROTATION CLOSE 🎉FAIT
Clés fuitées du 18/04 Testées HTTP 401 le 09/06 = mortesMORTES

⚡ N8N (VPS Hostinger)

Secrets en credentials chiffrĂ©s Groq + Supabase apikey + Upstash — scan 66 workflows : 0 secret vivant en littĂ©ral (10/06)FAIT
5 agents LCD rĂ©parĂ©s (Anthropic morte → Groq gratuit) Iris · LĂ©o · Hugo · Nora · Maya testĂ©s live HTTP 200 + Debug Test dĂ©sactivĂ©. ⚠ Social Media Generator aussi cassĂ© depuis 29/05 (tĂąche flaggĂ©e)FAIT
Token Upstash RÉGÉNÉRÉ 11/06 via API management : ancien token mort (401 WRONGPASS), nouveau propagĂ© .env + secret Supabase (18 EF) + credential n8n · vĂ©rifiĂ©FAIT

đŸ›Ąïž Supabase — durcissement

Advisors sécurité 0 ERROR / 0 WARN aprÚs fixes du 09/06 (RLS deny-all + search_path)PROPRE
EF social-media-action — bypass corrigĂ© Secret env + fail-closed, testĂ©e 401 (09/06)FAIT
fireflies-webhook re-durci (fail-closed) Secret exigĂ©, testĂ© 401 sans secret (10/06)CORRIGÉ
security-shield : regex traversal corrigĂ©es `..%2f` / `..%5c` redĂ©ployĂ©es (10/06)CORRIGÉ
Webhooks sites clients en HMAC Majestic/Orchidia/HA/Mobimmo : signature X-Signature, aucune clé Supabase chez les clientsSAIN

đŸ‘€ Auth & accĂšs (Clerk)

Bot protection + Verify at sign-up Vérifiés ON le 10/06 (instance prod Cervus)ON
AccÚs Noémie révoqués Ban cervus-ia + lock sascervus + 0 session active + allowlists code (10/06)FAIT
Migration Clerk DEV → PROD 8 users sur instance test partagĂ©e 4 domaines — Ă  faire avant le prochain clientCHANTIER

đŸ’» Poste de travail (Mac M5)

FileVault + SIP + Gatekeeper Audit 09/06 : Mac sain, pas de MDM, SSH entrant ferméON
Pare-feu macOS 2 commandes sudo Ă  passer (voir checklist)OFF
gitleaks pre-commit Hooks posés GENGAR + CervuswebsiteACTIF
.env permissions 0600, gitignored, 7 sectionsOK

⚙ FiabilitĂ© opĂ©rationnelle

LaunchAgents 6h/19h — RÉPARÉS et testĂ©s 11/06 : lanceur python `dashboard_cron.py` (charge .env sans zsh) + plists pointĂ©s sur le binaire python3.9 FINAL (le shim /usr/bin/python3 cassait TCC) + python3.9 autorisĂ© FDA. Les 2 crons testĂ©s live = JSON rĂ©gĂ©nĂ©rĂ© + deploy Vercel auto ✓FAIT
Backup hebdo gengar-sync Script sync_and_push.sh introuvable — Ă  rĂ©parer ou recrĂ©erCASSÉ
Sitemap site figĂ© au 28/04 lastmod Ă  rĂ©gĂ©nĂ©rer + soumettre GSC (TODO-105)À FAIRE
✅ Checklist — les clics qui restent à Ben
1
DĂ©sactiver les clĂ©s legacy Supabase (aprĂšs GO Claude fin de bascule) — Dashboard Supabase Projet A → Settings → API Keys → Disable legacy keys. RĂ©versible. Puis Claude vĂ©rifie le 401.
✓
RĂ©gĂ©nĂ©rer le token Upstash — FAIT le 11/06 (rotation API + propagation + vĂ©rif). Pense Ă  supprimer la clĂ© management jetable sur console.upstash.com → Account → Developer API.
3
RĂ©parer les mises Ă  jour auto du dashboard — RĂ©glages SystĂšme → ConfidentialitĂ© et sĂ©curitĂ© → AccĂšs complet au disque → ajouter python3 (et zsh). Sans ça, les crons 6h/19h restent bloquĂ©s.
4
Activer le pare-feu — sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on puis --setstealthmode on.
5
Soumettre le sitemap à Google Search Console — TODO-105 du 12/06 (15 min, compte Google).
🧠 Les techniques qui te protùgent (et pourquoi)
1 clé = 1 consommateur. N8N a sa clé, les EF la leur, le front sa publishable. Une fuite = on ne rote qu'une serrure, pas tout l'immeuble.
Jamais de secret en littéral. Credentials n8n chiffrés, secrets Supabase, Vault pour pg_cron. Un secret dans le code finit toujours par fuiter (git, screenshot, API).
RLS deny-all par dĂ©faut. Toute table sans policy explicite est inaccessible, mĂȘme si une clĂ© front fuit.
HMAC pour les webhooks. Les sites clients signent leurs requĂȘtes (X-Signature + timestamp) — pas de clĂ© partagĂ©e Ă  voler.
Un statut sécu se PROUVE. RÚgle maison : on teste (curl 401, gitleaks, advisors), on ne déclare pas. C'est ce qui a déterré la clé vivante du 09/06.
Fail-closed. Si un secret d'auth manque cÎté serveur, la fonction refuse tout (au lieu de laisser passer). Le contraire = la faille social-media-action.
Rotation périodique. Prochaine revue clés + tokens : septembre 2026 (trimestrielle).
Surface minimale. Vitrine (cervus-ia.com) sans session sensible, app (sascervus.com) cloisonnĂ©e — dĂ©cision Ben 09-10/06.
📜 Historique des audits
10/06/2026Rotation Phase 2 : 62 EF migrĂ©es + dĂ©ployĂ©es, front → publishable, credentials n8n, agents → Groq, rĂ©vocation accĂšs NoĂ©mie. Rapport contrats (7 contrats analysĂ©s) + contrĂŽle fraĂźcheur donnĂ©es.
10/06/2026Rotation Phase 1 : clé sb_secret dédiée n8n, 5 workflows patchés, scan 66 wf = 0 legacy restante.
09/06/2026Audit « Mac piraté ? » : Mac SAIN. Découvertes prod : EF bypass corrigée (401 testé), clé service_role vivante dans N8N, token Upstash en dur. Advisors 0/0. Lynis 64/100.
29/05/2026Rotation clés fuitées du 18/04 (confirmées mortes 401 le 09/06).