- PENTEST_REPORT_VEZA_v0.12.6.md: 14 findings (0 CRIT, 2 HIGH, 5 MEDIUM, 4 LOW, 3 INFO), 18 PASS controls - REMEDIATION_MATRIX_v0.12.6.md: prioritized remediation actions (P1: 4h, P2: 5h, P3: 5.5h) - ASVS_CHECKLIST_v0.12.6.md: OWASP ASVS Level 2 — 92/101 (91.1%) conformity Methodology: SAST + manual code review, OWASP Top 10 2021, API Security Top 10 2023 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Matrice de Remédiation — VEZA v0.12.6
Date : 2026-03-13 Référence : PENTEST_REPORT_VEZA_v0.12.6.md
Priorité de remédiation
Les actions sont classées par priorité d'implémentation (combinaison sévérité + facilité de fix + impact business).
Actions Prioritaires (P1 — Avant release v1.0.0)
| ID | Finding | Sévérité | Fichier(s) | Action | Effort | Responsable |
|---|---|---|---|---|---|---|
| REM-001 | HIGH-001 | HIGH | handlers/common.go:601-610 |
Remplacer c.GetHeader("X-Forwarded-For") par c.ClientIP() + configurer SetTrustedProxies() |
1h | Backend |
| REM-002 | HIGH-002 | HIGH | user_service.go:75, social_service.go:321, types/stats.go:31 |
Supprimer followers_count/following_count de PublicUserResponse et SuggestionUser. Exposer uniquement dans le dashboard privé. |
2h | Backend |
| REM-003 | MEDIUM-001 | MEDIUM | auth/service.go:156, :986 |
Remplacer bcrypt.DefaultCost par bcryptCost (12) importé depuis password_service.go ou une constante partagée |
30min | Backend |
| REM-004 | MEDIUM-004 | MEDIUM | social/models.go:32 |
Ajouter json:"-" sur LikeCount du modèle Post ou créer une DTO publique sans ce champ |
30min | Backend |
Effort total P1 : ~4h
Actions Recommandées (P2 — Sprint suivant)
| ID | Finding | Sévérité | Fichier(s) | Action | Effort |
|---|---|---|---|---|---|
| REM-005 | MEDIUM-002 | MEDIUM | sast.yml, security-scan.yml, cd.yml, stream-ci.yml, container-scan.yml, staging-validation.yml |
Épingler les 12+ GitHub Actions par SHA. Configurer Dependabot pour les mises à jour. | 2h |
| REM-006 | MEDIUM-003 | MEDIUM | .env.production:40 |
Renommer en .env.local ou .env.development. Mettre les valeurs HTTPS par défaut. Ajouter validation au startup. |
1h |
| REM-007 | MEDIUM-005 | MEDIUM | handlers/dashboard.go:149-150 |
Créer TrackPreviewPublic (sans métriques) et TrackPreviewPrivate (avec métriques). Utiliser le bon type selon le contexte. |
1h |
| REM-008 | LOW-001 | LOW | config/config.go:138 |
Passer CookieSameSite de lax à strict si pas de flow OAuth redirect cross-site |
30min |
| REM-009 | LOW-003 | LOW | utils/utils.go:57 |
Aligner HashPassword() sur bcryptCost = 12 ou la supprimer si non utilisée en prod |
15min |
Effort total P2 : ~5h
Actions Optionnelles (P3 — Backlog)
| ID | Finding | Sévérité | Fichier(s) | Action | Effort |
|---|---|---|---|---|---|
| REM-010 | LOW-002 | LOW | migrations/*.sql |
Auditer les 30+ CASCADE DELETE. Remplacer par RESTRICT/SET NULL pour orders, payments, subscriptions | 4h |
| REM-011 | INFO-001 | INFO | veza_back_api_db/ |
Ajouter au .gitignore, purger de l'historique git avec BFG |
1h |
| REM-012 | INFO-002/003 | INFO | cmd/tools/hash_gen/main.go, cmd/tools/create_test_user/main.go |
Aligner sur bcryptCost 12 | 15min |
| REM-013 | LOW-004 | LOW | staging-validation.yml:35 |
Épingler docker/setup-buildx-action par SHA |
10min |
Effort total P3 : ~5.5h
Résumé par effort
| Priorité | Findings | Effort total |
|---|---|---|
| P1 (Bloquant v1.0.0) | 4 | ~4h |
| P2 (Sprint suivant) | 5 | ~5h |
| P3 (Backlog) | 4 | ~5.5h |
| Total | 13 | ~14.5h |
Workflow de remédiation
1. REM-001 (IP spoofing fix) → Test: vérifier rate limit avec X-Forwarded-For forgé
2. REM-002 (followers_count) → Test: vérifier que /api/v1/users/:id ne retourne plus followers_count
3. REM-003 (bcrypt cost) → Test: vérifier que le hash créé a un cost de 12
4. REM-004 (Post like_count) → Test: vérifier que les posts API n'exposent pas like_count
5. REM-005 (GitHub Actions SHA) → Test: vérifier que tous les `uses:` contiennent un SHA
6. REM-006 (.env.production) → Test: vérifier que le startup refuse HTTP origins en production
Métriques de suivi
| Métrique | Valeur actuelle | Cible v1.0.0 |
|---|---|---|
| Findings CRITICAL | 0 | 0 |
| Findings HIGH | 2 | 0 |
| Findings MEDIUM | 5 | 0 |
| Findings LOW | 4 | ≤ 2 |
| Actions pinned by SHA | ~60% | 100% |
| bcrypt cost consistency | 2 valeurs (10, 12) | 1 valeur (12) |
| Public popularity metrics | 3 endpoints | 0 endpoints |
Matrice générée le 2026-03-13 — VEZA v0.12.6