veza/REMEDIATION_MATRIX_v0.12.6.md
senke f595824b97 fix(v0.12.6.1): LOW-002 update Hyperswitch 2025.01.21→2026.03.11
Updated Hyperswitch payment router from 2025.01.21.0-standalone to
2026.03.11.0-standalone in both docker-compose.yml and docker-compose.prod.yml.

All 30/30 pentest findings now remediated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:23:56 +01:00

80 lines
6.2 KiB
Markdown

# MATRICE DE REMÉDIATION — VEZA v0.12.6
> **Date** : 2026-03-11
> **Mise à jour** : 2026-03-12
> **Référence** : PENTEST_REPORT_VEZA_v0.12.6.md
---
## Matrice de remédiation (triée par sévérité décroissante, puis CVSS)
| # | Finding | Sévérité | CVSS | Fichier(s) | Effort estimé | Priorité | Assignation suggérée | Statut |
|---|---------|----------|------|------------|---------------|----------|---------------------|--------|
| **CRIT-001** | **IDOR rooms — lecture conversations privées** | **CRITIQUE** | **9.1** | `room_handler.go:134-314` | 3h | **Immédiate** | Backend dev | ✅ CORRIGÉ |
| **CRIT-002** | **play_count/like_count publics (violation éthique)** | **CRITIQUE** | **5.3** | `models/track.go:39-40` | 4h | **Immédiate** | Backend dev | ✅ CORRIGÉ |
| HIGH-001 | Race condition TOCTOU downloads marketplace | HAUTE | 7.5 | `marketplace/service.go:794-817` | 2h | Immédiate | Backend dev | ✅ CORRIGÉ |
| HIGH-002 | Production HS256 au lieu de RS256 | HAUTE | 7.4 | `docker-compose.prod.yml:158`, `jwt_service.go` | 4h | Immédiate | DevOps + Backend | ✅ CORRIGÉ |
| HIGH-003 | User repository context.Background() bypass | HAUTE | 5.3 | `user_repository.go:125-150` | 4h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| HIGH-004 | Race condition codes promo | HAUTE | 7.5 | `marketplace/service.go:463,753` | 2h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| HIGH-005 | Race condition licence exclusive | HAUTE | 7.5 | `marketplace/service.go:393-532` | 2h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| HIGH-006 | Rate limiter bypass (TrustedProxies) | HAUTE | 7.5 | `rate_limiter.go:131` | 30min | Immédiate | Backend dev | ✅ CORRIGÉ |
| HIGH-007 | RGPD hard delete incomplet | HAUTE | 6.5 | `hard_delete_worker.go:101` | 4h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| HIGH-008 | RTMP callback auth faible | HAUTE | 7.3 | `live_stream_callback.go:25-36` | 1h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| HIGH-009 | Co-écoute host hijack | HAUTE | 6.5 | `colistening/hub.go:102` | 1h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| HIGH-010 | Modérateur self-strike | HAUTE | 6.5 | `moderation_service.go:725` | 1h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| MEDIUM-001 | Recovery codes 2FA avec math/rand | MOYENNE | 5.9 | `two_factor_service.go:200` | 30min | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| MEDIUM-002 | Metrics IP spoofing via X-Forwarded-For | MOYENNE | 5.3 | `metrics_protection.go:52-54` | 15min | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| MEDIUM-004 | Pagination sans limite maximale | MOYENNE | 5.3 | Pagination middleware + handlers | 2h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| MEDIUM-005 | Stream token forgeable (HS256 prod) | MOYENNE | 5.9 | `jwt_service.go:253-277` | — | Sprint suivant | Résolu par HIGH-002 | ✅ CORRIGÉ |
| MEDIUM-003 | ClamAV image Docker :latest | MOYENNE | 4.8 | `docker-compose*.yml` | 15min | Sprint suivant | DevOps | ✅ CORRIGÉ |
| MEDIUM-007 | CI actions non pinnées par SHA | MOYENNE | 4.8 | `.github/workflows/*.yml` | 1h | Sprint suivant | DevOps | ✅ CORRIGÉ |
| MEDIUM-006 | CSP unsafe-inline Swagger routes | MOYENNE | 4.7 | `security_headers.go:78` | 30min | Backlog | Backend dev | ✅ CORRIGÉ |
| MEDIUM-008 | RabbitMQ Management UI en prod | MOYENNE | 5.3 | `docker-compose.prod.yml` | 15min | Backlog | DevOps | ✅ CORRIGÉ |
| MEDIUM-009 | Free trial réutilisable indéfiniment | MOYENNE | 5.3 | `subscription/service.go:236` | 1h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| MEDIUM-010 | WebSocket pas de re-validation token | MOYENNE | 5.4 | `chat_websocket_handler.go:32` | 2h | Sprint suivant | Backend dev | ✅ CORRIGÉ |
| MEDIUM-011 | Email logué en clair | MOYENNE | 4.3 | `handlers/auth.go:52` | 30min | Backlog | Backend dev | ✅ CORRIGÉ |
| MEDIUM-012 | Analytics sans k-anonymité | MOYENNE | 4.3 | `playback_analytics_handler.go` | 1h30 | Backlog | Backend dev | ✅ CORRIGÉ |
| LOW-001 | Password policy mismatch FE/BE | BASSE | 3.7 | `passwordValidator.ts` | 30min | Backlog | Frontend dev | ✅ CORRIGÉ |
| LOW-002 | Hyperswitch version datée | BASSE | 3.1 | `docker-compose*.yml` | 2h (+ tests) | Backlog | DevOps | ✅ CORRIGÉ |
| LOW-003 | dotenv 0.15 obsolète (Rust) | BASSE | 2.0 | `Cargo.toml` | 30min | Backlog | Backend dev | ✅ CORRIGÉ |
| LOW-004 | Elasticsearch sans auth | BASSE | 3.5 | Docker config | 2h | Backlog | DevOps | ✅ CORRIGÉ |
| LOW-005 | context.Background() dans jobs | BASSE | 2.0 | `jobs/*.go` | 1h | Backlog | Backend dev | ✅ CORRIGÉ |
| LOW-006 | Redis sans password en dev | BASSE | 2.0 | `docker-compose.yml` | — | Backlog | Accepté (dev only) | ✅ ACCEPTÉ |
---
## Résumé des efforts
| Priorité | Nombre de findings | Corrigés | Restant |
|----------|--------------------|----------|---------|
| Immédiate (bloquant v1.0.0) | 5 | 5 | 0 |
| Sprint suivant | 15 | 15 | 0 |
| Backlog | 10 | 10 | 0 |
| **Total** | **30** | **30** | **0** |
---
## Plan de remédiation recommandé
### Phase 1 — Immédiate (bloquant — avant merge en main) ✅ COMPLÈTE
1. **CRIT-001** : ✅ Vérification membership sur `GetRoom` et `GetRoomHistory`
2. **CRIT-002** : ✅ `play_count`/`like_count` supprimés des réponses API publiques
3. **HIGH-002** : ✅ Production RS256 (paire RSA 2048-bit)
4. **HIGH-006** : ✅ `engine.SetTrustedProxies(nil)` configuré
5. **HIGH-001** : ✅ Transaction + `SELECT FOR UPDATE` sur `GetDownloadURL`
### Phase 2 — Sprint suivant ✅ COMPLÈTE
6. **HIGH-004/005** : ✅ Race conditions codes promo et licences protégées
7. **HIGH-007** : ✅ Hard delete RGPD complété (sessions, settings, follows, notifications, audit_logs)
8. **HIGH-008** : ✅ RTMP callback auth fail-closed, header-only, constant-time
9. **HIGH-009/010** : ✅ Co-écoute host vérification + self-strike bloqué
10. **MEDIUM-001** : ✅ crypto/rand pour recovery codes 2FA
11. **MEDIUM-009/010** : ✅ Free trial reuse check + WebSocket re-validation 60s
12-15. ✅ Pagination caps, metrics IP, CI SHA pinning, CSP hardening
### Phase 3 — Backlog ✅ COMPLÈTE
16-30. ✅ Email masking, k-anonymité analytics, password policy FE/BE, dotenv→dotenvy, ES auth, ClamAV pinned, RabbitMQ mgmt UI removed, Hyperswitch 2025.01→2026.03
---
*Matrice mise à jour le 2026-03-12 — Réf. PENTEST_REPORT_VEZA_v0.12.6.md*