- 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)
77 lines
2.8 KiB
Markdown
77 lines
2.8 KiB
Markdown
# 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 `exactOptionalPropertyTypes` seul
|
|
- 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 ?
|
|
- [x] N'a pas inventé de commandes — tout ancré dans le vrai code
|
|
- [x] A dit "À discuter" pour les décisions comportementales (fail-open vs fail-closed)
|
|
- [x] A géré l'erreur TypeScript sans l'ignorer
|
|
|
|
### 📐 Périmètre respecté ?
|
|
- [x] N'a pas débordé sur la perf (noté ⚠️ sans plonger)
|
|
- [x] A suggéré commits/PR sans les exécuter
|
|
- [x] 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
|
|
|
|
- [x] Review complète
|
|
- [x] Gap reporté dans `agents/security.md` changelog
|
|
- [x] 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)
|