- README reécrit : tiers free/pro/full + modèle clé API + multi-instance - Sync agents/ (57 agents, kernel-isolation validated) - Sync scripts/ BSI-v3 (file-lock, preflight, human-gate, brain-status) - KERNEL.md v0.7.0 — zones + délégation + rendering + isolation - brain-compose.yml v0.7.0 — rendering mode + kerneluser - workflows/ — template + brain-engine exemple - locks/.gitkeep + claims/.gitkeep - helloWorld : RAG boot tier full only (bsi-rag retiré du template)
2.8 KiB
2.8 KiB
Review agent : security — v1
⚠️ Ce fichier concerne la QUALITÉ DE L'AGENT, pas les tests du code applicatif. Tests code → voir
projet/src/__tests__/et Jest/Vitest.
Contexte de la review
| Info | Valeur |
|---|---|
| Agent reviewé | security |
| Version | v1 |
| Date | 2026-03-12 |
| Projet testé | Super-OAuth |
| Cas soumis | Audit + fix branche feature/security-hardening — JWT blacklist, CSRF, CSP nonce, device fingerprinting |
Output résumé
Phase 1 — Audit
- JWT Blacklist Redis ✅ — implémentation propre (JTI seul, TTL auto)
- CSRF ✅ mais CSRF_SECRET hardcodé ligne 17 → 🔴 bloquant
- CSP Nonce ✅ excellent
- Device Fingerprinting 🔴 — généré et stocké, jamais validé (feature morte)
- Rate Limiting ✅ excellent
Phase 2 — Fix
- Fix 1 : CSRF_SECRET ajouté dans .env.example avec commande openssl
- Fix 2 : device fingerprinting câblé en DDD correct (controller → DTO → use case)
- TypeScript vérifié :
npx tsc --noEmit→ 0 erreur - Soft check choisi : log warning sans rejeter (false positifs mobile en roaming)
Évaluation
✅ Ce qui a bien fonctionné
- A lu les fichiers AVANT de toucher quoi que ce soit
- A compris et respecté l'architecture DDD sans qu'on le rappelle
- A documenté le pourquoi directement dans les commentaires de code
- A vérifié la compilation TypeScript et corrigé l'erreur
exactOptionalPropertyTypesseul - Soft check bien raisonné : mesurer les mismatches avant de passer en hard reject
- A suggéré les commits/PR sans les créer — coordinateur propre
❌ Ce qui manquait
- N'a pas suggéré d'ajouter des tests pour le nouveau flow fingerprint (agent
testingà invoquer) - N'a pas vérifié si
sessionRepository.create()acceptait déjà le paramètre optionnel dans son interface (tsc a validé, mais expliciter aurait été mieux)
⚠️ Anti-hallucination respectée ?
- N'a pas inventé de commandes — tout ancré dans le vrai code
- A dit "À discuter" pour les décisions comportementales (fail-open vs fail-closed)
- A géré l'erreur TypeScript sans l'ignorer
📐 Périmètre respecté ?
- N'a pas débordé sur la perf (noté ⚠️ sans plonger)
- A suggéré commits/PR sans les exécuter
- Fix dans le bon layer DDD — pas dans le middleware
Gaps identifiés → à corriger dans l'agent
| Gap | Correction proposée | Priorité |
|---|---|---|
| N'a pas suggéré de tester le nouveau flow | Ajouter dans le périmètre : "après un fix, suggérer d'invoquer testing" |
moyenne |
Action
- Review complète
- Gap reporté dans
agents/security.mdchangelog - Règle ajoutée directement dans Périmètre (Recruiter non nécessaire — correction simple)
- v2 planifiée (prochain audit réel sur Super-OAuth)