talas-group/10_QUALITE_TESTS/Audit_Sécurité/PLAN_AUDIT_SECURITE.md
senke 1db6d066c0 nettoyage repo : réorganisation fichiers en vrac, ajout body solidworks + studio mic ref
- Body SolidWorks v1 → 02_PRODUITS_PHYSIQUES/Microphone/Conception/
- Studio Mic KiCAD (DIYPerks) → 02_PRODUITS_PHYSIQUES/R&D_References/DIY/
- cleanup_ports.sh → 04_INFRA_DEPLOIEMENT/
- mockup_jeu_ux → 11_RECHERCHE_&_LAB/
- Printables → 12_DOCUMENTATION/Imprimables/
- Screenshots, ideas, one.html → _BROUILLON/
- all-talas (23Go) → 13_ARCHIVES/
- Supprimé all-talas.zip (20Go doublon), lock files LibreOffice
- Nettoyé .gitignore
- Remote → Forgejo (10.0.20.105:3000)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 16:31:26 +02:00

11 KiB

Plan d'audit sécurité — Veza

Checklist OWASP, plan pentest, calendrier d'audits pour la plateforme Veza. À exécuter avant chaque phase de lancement (beta, publique, shop). Dernière mise à jour : avril 2026.


1. Périmètre

1.1 Composants audités

Composant Stack Criticité
Backend API Go/Gin Critique
Stream Server Rust/Axum Haute
Frontend Web React/Vite Moyenne
Base de données PostgreSQL 16 Critique
Cache/sessions Redis 7 Haute
Storage MinIO S3 Haute
Messaging RabbitMQ 3 Moyenne
Reverse proxy HAProxy Haute
WAF Coraza Haute
VPN WireGuard Haute
OS / infra Debian, Docker Haute

1.2 Hors périmètre V1

  • Applications desktop (Electron) — pas encore déployé
  • AudioGridder — feature V2
  • Applications mobiles — pas encore développé

2. Checklist OWASP Top 10 (2021)

A01:2021 — Broken Access Control

# Vérification Comment tester Statut
1 Accès horizontal : user A ne peut pas voir les données de user B Tester GET/PUT/DELETE avec ID d'un autre user
2 Accès vertical : user normal ne peut pas accéder aux endpoints admin Tester sans rôle admin
3 IDOR sur tous les endpoints à paramètre :id Fuzzer les IDs (UUID valides d'autres users)
4 Force browsing : pages admin non accessibles sans auth Scanner /admin/, /internal/
5 CORS : origins autorisées uniquement les domaines Talas Vérifier Access-Control-Allow-Origin
6 Méthodes HTTP : seules GET/POST/PUT/DELETE autorisées Tester OPTIONS, TRACE, PATCH

A02:2021 — Cryptographic Failures

# Vérification Statut
7 TLS 1.2+ obligatoire, pas de TLS 1.0/1.1
8 Certificats Let's Encrypt valides, auto-renew
9 Pas de secrets en clair dans le code ou les logs
10 Passwords hashés bcrypt cost ≥12
11 Tokens TOTP chiffrés AES-256-GCM en DB
12 JWT signés RS256, pas HS256 en prod
13 Pas de données sensibles dans les JWT (payload minimal)

A03:2021 — Injection

# Vérification Statut
14 SQL injection : GORM paramétré, pas de raw queries non-escaped
15 NoSQL injection : N/A (pas de NoSQL)
16 OS command injection : pas de exec() avec user input
17 LDAP injection : N/A
18 XSS : sanitisation de tous les inputs rendus HTML
19 SSRF : pas de fetch d'URL arbitraire fournie par l'utilisateur

A04:2021 — Insecure Design

# Vérification Statut
20 Rate limiting sur login, register, reset password
21 Verrouillage de compte après N échecs
22 Pas de réponse différente "email existe" vs "email inconnu"
23 Captcha ou proof-of-work sur formulaires publics (V1.5)

A05:2021 — Security Misconfiguration

# Vérification Statut
24 Headers sécurité : HSTS, CSP, X-Content-Type, X-Frame
25 Pas de stack traces exposées en production
26 Pas de debug mode en production
27 Docker : pas de containers root, images signées
28 Ports exposés : uniquement 80/443 vers l'extérieur
29 MinIO : pas de bucket public sauf previews
30 Redis : auth activée, pas d'accès externe
31 PostgreSQL : auth MD5/scram, pas d'accès externe

A06:2021 — Vulnerable and Outdated Components

# Vérification Statut
32 Go : govulncheck sans vulnérabilité critique
33 Rust : cargo audit sans vulnérabilité critique
34 NPM : npm audit sans critical/high
35 Docker images : trivy image scan clean
36 OS packages : mise à jour sécurité < 7 jours

A07:2021 — Identification and Authentication Failures

# Vérification Statut
37 Password policy appliquée (12 car, complexité)
38 Sessions expirent (access 15min, refresh 30j)
39 Logout invalide le refresh token
40 Cookies HTTP-only + Secure + SameSite=Lax
41 OAuth state parameter vérifié
42 2FA fonctionne et bloque sans code

A08:2021 — Software and Data Integrity Failures

# Vérification Statut
43 Uploads scannés ClamAV avant stockage
44 Checksums vérifiés après upload MinIO
45 Webhooks Mollie vérifiés (re-call API)
46 Dépendances : lockfiles commités, pas de floating versions

A09:2021 — Security Logging and Monitoring Failures

# Vérification Statut
47 Audit log sur login, logout, password change, admin actions
48 Logs structurés (JSON) en production
49 Alertes Sentry sur erreurs 500
50 Fail2ban actif sur SSH et HTTP brute-force
51 Métriques Prometheus exportées et dashboardées

A10:2021 — Server-Side Request Forgery (SSRF)

# Vérification Statut
52 Pas de proxy/fetch d'URL arbitraire
53 Callbacks OAuth limités aux domaines autorisés
54 Webhooks Mollie : vérification IP source (optionnel)

3. Tests de pénétration

3.1 Scope pentest V1

Cible Type de test
API REST (tout /api/v1/*) Blackbox + greybox (avec un compte user)
Auth (login, register, 2FA, OAuth) Blackbox
Upload fichiers (tracks, samples, cloud) Greybox
WebSocket streaming Blackbox
Infra réseau (ports, services) Blackbox depuis extérieur

3.2 Outils

Outil Usage Self-hosted ?
Nmap Scan ports + services
OWASP ZAP Proxy scanner web, fuzzer
Nuclei Scan vulnérabilités templates
SQLMap Injection SQL (validation)
ffuf Fuzzer endpoints / dirs
Burp Suite Community Proxy manuel
Trivy Scan containers Docker
govulncheck Vulns Go
cargo audit Vulns Rust
npm audit Vulns JS

3.3 Déroulement d'un pentest

Phase 1 — Reconnaissance (2h)
  → Nmap scan réseau externe
  → ffuf directory brute-force
  → Nuclei templates scan

Phase 2 — Authentication (2h)
  → Brute-force login (rate limit test)
  → Password reset flow (token enum)
  → Session hijacking attempt
  → 2FA bypass attempts
  → OAuth redirect manipulation

Phase 3 — Authorization (3h)
  → IDOR sur chaque endpoint avec :id
  → Escalation user → admin
  → Cross-user data access
  → File access cross-tenant (cloud, uploads)

Phase 4 — Input validation (2h)
  → XSS sur tous les champs affichables
  → SQL injection sur search + filtres
  → File upload : extensions interdites, LFI, path traversal
  → Payload size limits

Phase 5 — Business logic (2h)
  → Stock manipulation (réservation concurrente)
  → Payment flow bypass
  → Double-submit paiement
  → Rate limit contournement

Phase 6 — Infrastructure (1h)
  → Docker escape (container → host)
  → Redis accès sans auth
  → PostgreSQL accès direct
  → MinIO bucket listing

Phase 7 — Rapport (2h)
  → Rédaction des findings
  → Classification CVSS
  → Recommandations de remediation

Durée totale : ~14 heures (2 jours de travail intensif).


4. Calendrier d'audit

4.1 Audits obligatoires

Quand Type Scope
Avant beta (mai 2026) OWASP checklist complète Tout
Avant ouverture publique (juin 2026) Pentest léger (phases 1-4) API + auth
Avant lancement shop (août 2026) Pentest complet + focus paiement Shop + payment
Trimestriel Scan vulnérabilités (Trivy, govulncheck, npm audit) Dépendances
Après chaque release majeure Revue OWASP ciblée Code modifié

4.2 Audits continus (automatisés en CI)

Check Outil Fréquence
Vulnérabilités Go govulncheck Chaque PR
Vulnérabilités Rust cargo audit Chaque PR
Vulnérabilités NPM npm audit --audit-level=high Chaque PR
Docker images trivy image Chaque build
Secrets dans le code gitleaks Chaque PR
Headers sécurité Script custom (curl + check) Daily cron
Certificat TLS expiration openssl s_client Weekly cron

5. Classification des vulnérabilités

Niveau CVSS Délai de correction Exemples
Critique 9.0-10.0 24h RCE, SQLi, auth bypass, données exposées
Haute 7.0-8.9 72h XSS stocké, IDOR critique, CSRF paiement
Moyenne 4.0-6.9 2 semaines XSS réfléchi, info leak mineur, rate limit faible
Basse 0.1-3.9 1 mois Headers manquants, verbose errors, enumeration

6. Reporting

6.1 Format de rapport pentest

## Finding: [Titre]

**Sévérité**: Critique / Haute / Moyenne / Basse
**CVSS**: X.X
**Composant**: Backend API / Frontend / Infra
**Endpoint**: POST /api/v1/...
**CWE**: CWE-XXX

### Description
[Ce qui a été trouvé]

### Preuve
[Commande/screenshot/payload]

### Impact
[Ce qu'un attaquant pourrait faire]

### Remédiation
[Comment corriger]

### Statut
☐ À corriger / ☐ Corrigé / ☐ Accepté (risque mitigé)

6.2 Suivi

Un fichier FINDINGS_LOG.md dans ce dossier trace toutes les vulnérabilités trouvées :

| # | Date | Sévérité | Titre | Statut | Corrigé le |
|---|------|----------|-------|--------|-----------|
| 001 | 2026-05-15 | Haute | IDOR sur /tracks/:id | Corrigé | 2026-05-16 |
| 002 | ... | ... | ... | ... | ... |

7. Règles de Coraza WAF à valider

Règle Vérifie
OWASP CRS 4.x activé
Anomaly scoring threshold = 5
SQL injection rules actives
XSS rules actives
Path traversal rules actives
File upload rules actives
Rate limiting intégré (ou HAProxy)
Logging des blocked requests
False positives identifiés et whitelistés

Voir aussi