Cas avances : audit, pentest et conformité¶
Méthodologie d'audit de code, tests d'intrusion, exigences reglementaires et organisation des équipes sécurité.
La sécurité est un processus continu
Il n'existe pas d'application "100% sécurisée". L'objectif est de rendre l'exploitation suffisamment difficile et coteuse pour l'attaquant, tout en détectant rapidement les incidents. La sécurité est un effort continu, pas un projet avec une date de fin.
Audit de code : méthodologie¶
Un audit de code sécurité est une revue systematique du code source pour identifier les vulnérabilités logiques, les mauvaises pratiques et les défauts d'architecture.
Phases d'un audit¶
flowchart LR
A[Cadrage] --> B[Reconnaissance]
B --> C[Revue manuelle]
C --> D[Analyse automatisee]
D --> E[Verification et exploitation]
E --> F[Rapport]
F --> G[Remediation + retest] Phase 1 — Cadrage
- Périmètre : quels composants, quelles fonctionnalités ?
- Profil d'attaquant : externe non authentifie, utilisateur authentifie, admin ?
- Contraintes : boite blanche (accès au code), boite grise, boite noire ?
Phase 2 — Reconnaissance
- Cartographie de l'application : endpoints, modèles de données, flux
- Identification des actifs critiques : données PII, paiements, secrets
- Stack technique : frameworks, librairies, versions
Phase 3 — Revue manuelle
- Suivi des flux de données de l'entree jusqu'à la sortie
- Contrôles d'accès : qui peut faire quoi ?
- Gestion des erreurs et des cas limites
- Logique métier : y a-t-il des raccourcis exploitables ?
Phase 4 — Analyse automatisee
- SAST : Semgrep, CodeQL sur le code source
- Scan de dépendances : snyk, grype
- Secrets dans l'historique : gitleaks, trufflehog
Checklist d'audit¶
## Controle d'acces
- [ ] Chaque endpoint verifie l'authentification
- [ ] Chaque action verifie l'autorisation (ownership)
- [ ] Pas de references directes a des objets sans validation
## Donnees sensibles
- [ ] Mots de passe hasches avec bcrypt/Argon2
- [ ] PII chiffrees au repos
- [ ] Pas de secrets dans les logs
## Entrees / Sorties
- [ ] Validation whitelist sur toutes les entrees
- [ ] Encodage contextuel sur toutes les sorties
- [ ] Requetes parametrees (pas de concatenation SQL)
## Sessions
- [ ] Tokens de session cryptographiquement aleatoires
- [ ] Invalidation cote serveur a la deconnexion
- [ ] Regeneration apres elevation de privilege
## Infrastructure
- [ ] Headers de securite configures
- [ ] TLS 1.2+ uniquement, ciphers forts
- [ ] Logs d'audit sur les actions sensibles
Penetration testing¶
Le pentest est une attaque simulee et autorisee contre un système pour identifier les vulnérabilités exploitables.
Types de pentest¶
| Type | Accès auditeur | Realisme | Couverture |
|---|---|---|---|
| Boite noire | Aucun (public) | Élevé | Limitee |
| Boite grise | Utilisateur standard | Moyen | Bonne |
| Boite blanche | Code + credentials | Faible | Maximale |
Scope et règles d'engagement¶
Avant tout pentest, formaliser par écrit :
- Les systèmes dans le périmètre (IP, domaines, applications)
- Les systèmes hors périmètre (production live, tiers, partenaires)
- Les techniques autorisees et interdites (ex: pas de DoS en prod)
- La fenêtre temporelle
- Les contacts d'urgence en cas d'incident
Outils courants¶
# Reconnaissance passive
subfinder -d example.com -o subdomains.txt
httpx -l subdomains.txt -status-code -title
# Scan de vulnerabilites web
nuclei -u https://app.example.com -t cves/ -t vulnerabilities/
# Fuzzing d'endpoints
ffuf -w /wordlists/api-endpoints.txt -u https://app.example.com/FUZZ
# Test d'injection SQL
sqlmap -u "https://app.example.com/users?id=1" --batch --level=3
# Scanner de ports
nmap -sV -sC -p- --min-rate 5000 target.example.com
Pentest uniquement sur les systèmes autorises
Tester un système sans autorisation écrite est illegal dans la plupart des pays (CFAA aux USA, articles 323-x du code penal en France). Toujours obtenir un accord écrit signe avant de commencer.
Conformité reglementaire¶
RGPD (GDPR)¶
Applicable à toute organisation traitant des données de residents europeens.
| Exigence | Implémentation technique |
|---|---|
| Droit à l'oubli | Suppression effective des données + backups |
| Portabilité | Export des données en format standard (JSON, CSV) |
| Minimisation des données | Ne collecter que ce qui est nécessaire |
| Sécurité appropriee | Chiffrement, accès contrôle, audit log |
| Notification de violation | Processus de détection et notification sous 72h |
| Privacy by design | Sécurité intégrée des la conception |
SOC 2¶
Certification pour les fournisseurs de services SaaS, basée sur 5 critères (Trust Service Criteria).
graph TD
CC["Common Criteria\n(Controle acces, monitoring)"]
AV["Availability\n(SLA, DR)"]
PI["Processing Integrity\n(Validation des operations)"]
CO["Confidentiality\n(Chiffrement, acces)"]
PR["Privacy\n(RGPD-like pour USA)"]
CC --> AV
CC --> PI
CC --> CO
CC --> PR Exigences techniques clés :
- Gestion des accès avec MFA pour les accès privilegies
- Logs d'audit conserves (généralement 1 an)
- Gestion des vulnérabilités avec SLA de remédiation
- Chiffrement en transit et au repos
- Plan de reprise d'activité teste annuellement
ISO 27001¶
Norme internationale de management de la sécurité de l'information.
- Annexe A : 93 contrôles techniques et organisationnels
- Certification par un organisme tiers accredite
- Revue annuelle obligatoire
- Périmètre défini explicitement (pas forcement toute l'organisation)
Bug bounty¶
Les programmes de bug bounty invitent des chercheurs en sécurité externes a tester vos applications contre recompense.
Avant de lancer un programme¶
- Corrections des vulnérabilités critiques connues (éviter les "low hanging fruit")
- Périmètre clairement défini et documente
- Équipe de triage en place (SLA de réponse)
- Budget de recompenses défini
- Processus legal (safe harbor pour les chercheurs)
Plateformes¶
| Plateforme | Positionnement |
|---|---|
| HackerOne | Leader du marche, grands programmes publics |
| Bugcrowd | Bon pour les programmes prives/invites |
| Intigriti | Fort en Europe, interface moderne |
| YesWeHack | Acteur europeen, RGPD-friendly |
Grille de rémunération typique¶
| Sévérité | CVSS | Recompense typique (SaaS B2B) |
|---|---|---|
| Critical | 9.0-10 | 5 000 € - 50 000 € |
| High | 7.0-8.9 | 1 000 € - 10 000 € |
| Medium | 4.0-6.9 | 200 € - 2 000 € |
| Low | 0.1-3.9 | 50 € - 500 € |
Security Champions¶
Le programme Security Champions distribué la culture sécurité dans les équipes de développement.
graph TD
CISO["CISO / Equipe securite"] -->|"formation, outils, support"| SC1["Security Champion\nEquipe Frontend"]
CISO -->|"formation, outils, support"| SC2["Security Champion\nEquipe Backend"]
CISO -->|"formation, outils, support"| SC3["Security Champion\nEquipe Platform"]
SC1 -->|"sensibilisation, revues"| Dev1["Developpeurs"]
SC2 -->|"sensibilisation, revues"| Dev2["Developpeurs"]
SC3 -->|"sensibilisation, revues"| Dev3["Developpeurs"] Rôle du Security Champion :
- Relais entre l'équipe sécurité et son équipe produit
- Participation aux revues de code avec angle sécurité
- Formation des collegues aux vulnérabilités courantes
- Premier point de contact pour les questions sécurité
- Pas un expert sécurité à temps plein — un ambassadeur
Animer le programme :
- Formation trimestrielle (CTF, workshops OWASP)
- Canal de communication dédié (#security-champions)
- Reconnaissance visible (titre, budget formation)
- Partage des findings et post-mortems sécurité
Vers une culture sécurité¶
| Niveau | Caractéristiques |
|---|---|
| Reactif | Corrections uniquement après incidents ou audits |
| Conscient | SAST en CI, formation basique, quelques pratiques appliquees |
| Proactif | Threat modeling, shift-left, Security Champions actifs |
| Optimise | Bug bounty, pentest régulier, KPIs sécurité, continuous improvement |
Le chemin de "reactif" a "optimise" prend typiquement 2 a 4 ans pour une équipe engagee.
Tutoriel complet. Retour a l'index pour revoir le parcours complet.