Files
brain-template/agents/reviews/SuperOAuth/security-v1.md
Tetardtek 878886cd51 feat: brain-template v2.0 — BSI-v3 complet + tiers documentés
- 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)
2026-03-16 23:26:38 +01:00

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)