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>
80 lines
6.2 KiB
Markdown
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*
|