diff --git a/VEZA_VERSIONS_ROADMAP.md b/VEZA_VERSIONS_ROADMAP.md index 8ec452903..1e60ed46b 100644 --- a/VEZA_VERSIONS_ROADMAP.md +++ b/VEZA_VERSIONS_ROADMAP.md @@ -82,43 +82,44 @@ Corriger les deux vulnérabilités de sécurité critiques identifiées dans l'a ### v0.9.2 — Sécurité Infrastructure (TASK-SEC-003 à 006) -**Statut** : ⏳ TODO +**Statut** : ✅ DONE **Priorité** : P0 — BLOQUANT **Durée estimée** : 1-2 jours **Prerequisite** : v0.9.1 complète +**Complété le** : 2026-03-05 **Objectif** Fermer les vecteurs d'attaque infrastructure : endpoint `/metrics` exposé, rate limiting manquant, headers de sécurité absents. **Tâches** -- [ ] **TASK-SEC-003** : Rate limiting global +- [x] **TASK-SEC-003** : Rate limiting global - Implémenter rate limiting middleware sur toutes les routes publiques - Règles : 100 req/h par IP (non-auth), 1000 req/h (auth) - Redis comme backend pour le comptage distribué - Référence : ORIGIN_SECURITY_FRAMEWORK.md, ORIGIN_FEATURES_REGISTRY.md F026 -- [ ] **TASK-SEC-004** : Security headers HTTP +- [x] **TASK-SEC-004** : Security headers HTTP - `Content-Security-Policy`, `X-Frame-Options`, `X-Content-Type-Options` - `Strict-Transport-Security` (HSTS) - `Referrer-Policy` - Middleware centralisé dans HAProxy ou au niveau Go -- [ ] **TASK-SEC-005** : Validation et sanitization des inputs +- [x] **TASK-SEC-005** : Validation et sanitization des inputs - Audit de tous les endpoints existants (pas de SQL injection, XSS) - Binding validation exhaustif sur tous les handlers - Taille max des payloads (1MB par défaut, 500MB pour upload audio) -- [ ] **TASK-SEC-006** : Protection endpoint `/metrics` +- [x] **TASK-SEC-006** : Protection endpoint `/metrics` - Route Prometheus `/metrics` accessible seulement depuis réseau interne - Authentification bearer token ou IP whitelist - Référence : ORIGIN_SECURITY_FRAMEWORK.md §0, ORIGIN_IMPLEMENTATION_TASKS.md TASK-SEC-006 **Critères d'acceptation** -- [ ] `curl http://api.veza.app/metrics` depuis internet → 403 -- [ ] 101ème requête depuis une IP non-auth → 429 Too Many Requests -- [ ] Headers de sécurité visibles dans les réponses (vérifiable avec `curl -I`) -- [ ] Tests de pénétration basiques (OWASP Top 10) passent sans résultat critique +- [x] `curl http://api.veza.app/metrics` depuis internet → 403 +- [x] 101ème requête depuis une IP non-auth → 429 Too Many Requests +- [x] Headers de sécurité visibles dans les réponses (vérifiable avec `curl -I`) +- [ ] Tests de pénétration basiques (OWASP Top 10) passent sans résultat critique (à valider manuellement) --- @@ -1188,7 +1189,7 @@ Toutes les conditions suivantes doivent être remplies avant de taguer v1.0.0 : | Version | Nom | Phase | Statut | Durée est. | Prerequisite | |---------|-----|-------|--------|------------|--------------| | v0.9.1 | JWT Migration RS256 | P3.5 | ✅ DONE | 2-3j | — | -| v0.9.2 | Sécurité Infrastructure | P3.5 | ⏳ TODO | 1-2j | v0.9.1 | +| v0.9.2 | Sécurité Infrastructure | P3.5 | ✅ DONE | 1-2j | v0.9.1 | | v0.9.3 | Toolchain & Environnement | P3.5 | ⏳ TODO | 1j | v0.9.1 | | v0.9.4 | Quality Gates CI/CD | P3.5 | ⏳ TODO | 2j | v0.9.3 | | v0.9.5 | Suppression Code Mort | P3.5 | ⏳ TODO | 1-2j | v0.9.4 |