Le threat modeling (modélisation de la menace) est la pratique d'identifier, énumérer et prioriser les menaces sur un système avant qu'il ne soit construit ou modifié, pas après. Microsoft mesure depuis 2014 un ROI de 1:100 : un dollar investi en threat modeling en phase de design économise 100 dollars en correction post-production. Méthodologies dominantes 2026 : STRIDE (Microsoft 1999, Praerit Garg & Loren Kohnfelder, ~80% des cas), PASTA (UcedaVélez 2012, 7 phases pour environnements réglementés), LINDDUN v3.0 (KU Leuven, décembre 2023, privacy/RGPD), Attack Trees (Bruce Schneier 1999, modélisation arborescente), VAST et Trike (niches). Le Threat Modeling Manifesto (2020) signé par Adam Shostack (auteur de « Threat Modeling: Designing for Security », 2014), Brook Schoenfield et 14 autres praticiens majeurs, pose 4 valeurs et 5 principes, « shift left and tightly bound to development », qui ont structuré la discipline. Côté outillage : OWASP Threat Dragon v2.4 (2024, gratuit), pytm (threat model as code), IriusRisk (commercial, librairie 2000+ threats), Microsoft Threat Modeling Tool 2016 (figé depuis 2022). Côté IA/LLM, MITRE ATLAS (juin 2021, MAJ 2024) et STRIDE-AI (Microsoft, novembre 2023) prennent le relais sur 70+ techniques spécifiques. Cet article documente les 5 méthodologies majeures, le workflow opérationnel, la stack outillage, et les anti-patterns persistants.
Pour les fondamentaux taxonomiques : voir CWE et CVE. Pour les TTPs adverses : TTP.
Le bon mental model : threat modeling = exercice d'imagination structuré
Le piège le plus répandu : croire que le threat modeling est un exercice de checklist. Faux. Le threat modeling est un exercice d'imagination contraint par une méthodologie qui empêche les biais cognitifs habituels (« on n'y pensera pas »). Les 4 questions canoniques du Threat Modeling Manifesto :
- What are we working on ?, diagramme architecture, data flow, trust boundaries.
- What can go wrong ?, application de la méthodologie (STRIDE, PASTA, LINDDUN…) pour énumérer les menaces.
- What are we going to do about it ?, mitigations, contrôles, acceptation de risque.
- Did we do a good job ?, review, validation, mise à jour.
Une équipe qui répond à ces 4 questions avec rigueur, même sans suivre une méthodologie précise, fait du threat modeling sérieux. Une équipe qui remplit un Excel STRIDE sans diagramme et sans data flow ne fait que du théâtre de sécurité.
STRIDE : la base à maîtriser
STRIDE (Microsoft, Praerit Garg & Loren Kohnfelder, 1999) est l'acronyme des 6 catégories canoniques de menaces. Mature, simple, rapide. Couverture : 80% des systèmes IT classiques.
| Lettre | Menace | Propriété violée | Exemple concret |
|---|---|---|---|
| S | Spoofing identity | Authentication | JWT volé, session fixation |
| T | Tampering with data | Integrity | Modification payload en transit, replay |
| R | Repudiation | Non-repudiation | Suppression de logs, non-signature transaction |
| I | Information disclosure | Confidentiality | SQL injection, IDOR, error messages verbeux |
| D | Denial of service | Availability | DDoS L7, ressource exhaustion |
| E | Elevation of privilege | Authorization | RCE → root, IDOR vertical, JWT none algorithm |
Workflow STRIDE pratique :
- Diagrammer le data flow (DFD, Data Flow Diagram) : entités externes, processus, data stores, flux, trust boundaries.
- Pour chaque élément du diagramme, appliquer le tableau STRIDE-per-element :
| Élément | S | T | R | I | D | E |
|---|---|---|---|---|---|---|
| External entity | ✓ | ✓ | ||||
| Process | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Data flow | ✓ | ✓ | ✓ | |||
| Data store | ✓ | ✓ (audit log) | ✓ | ✓ |
- Pour chaque menace identifiée, scorer (DREAD ou simple H/M/L) et proposer une mitigation.
- Documenter dans Threat Dragon, pytm ou Confluence avec ID unique par menace.
Exemple concret sur une API REST avec base PostgreSQL :
# Extrait threat model pytm-style
threat_id: TM-001
element: Process(API REST /users)
category: STRIDE-I (Information Disclosure)
description: |
Une SQL injection sur le param ?id=1 OR 1=1 expose tous les users.
CWE-89, classique.
likelihood: High (input direct DB query sans ORM)
impact: Critical (PII full table users)
mitigation:
- Préparer toutes les queries via ORM (Prisma, SQLAlchemy)
- Validation server-side (zod, joi, pydantic)
- WAF mode block sur patterns OWASP CRS rule 942100
- Tests SAST avec Semgrep rule p/sql-injection
status: Mitigated
verified_by: pentest #2025-Q3PASTA : 7 phases pour environnements réglementés
PASTA (Process for Attack Simulation and Threat Analysis) créée par Tony UcedaVélez (VerSprite) en 2012, formalisée dans le livre « Risk Centric Threat Modeling » (Wiley 2015). Adaptée aux secteurs banque, défense, santé qui ont besoin d'aligner threat model et business impact analysis (BIA). 7 phases en cascade :
| # | Phase | Livrables |
|---|---|---|
| 1 | Define Objectives | Business risks, compliance scope (PCI, HIPAA, NIS2), business impact tolerance |
| 2 | Define Technical Scope | Composants, dépendances, perimeter, data classifications |
| 3 | Application Decomposition | DFD, use cases, trust levels, entry/exit points |
| 4 | Threat Analysis | Threat agents, motivation, capability (MITRE ATT&CK, threat intel) |
| 5 | Vulnerability Analysis | Mapping CWE/CVE, scan SAST/DAST results, attack vectors |
| 6 | Attack Modeling | Attack trees, kill chains, scenarios scénarisés |
| 7 | Risk & Impact Analysis | Risk score, residual risk, treatment plan, validation |
PASTA produit ~2-5x plus de documentation que STRIDE pour la même app. Pertinent quand l'audit ISO 27001 ou PCI le demande. Inadapté en mode startup agile.
LINDDUN v3.0 : privacy threat modeling pour RGPD
LINDDUN (KU Leuven, Kim Wuyts et al., 2010, v3.0 décembre 2023) est l'analogue privacy de STRIDE. Catégories :
| Lettre | Menace | Exemple |
|---|---|---|
| L | Linkability | Cross-référencement données pseudonymisées vs identifiantes |
| I | Identifiability | Re-identification via fingerprint browser |
| N | Non-repudiation | Tracking action user impossible à nier |
| D | Detectability | Existence d'une donnée révélée par side-channel |
| D | Disclosure of information | Fuite de PII (similaire STRIDE-I) |
| U | Unawareness | User pas informé de la collecte |
| N | Non-compliance | RGPD art. 5, 25 (privacy by design) violés |
LINDDUN GO (version simplifiée 2020) propose 7 cartes-questions pour ateliers rapides 1-2h. Indispensable pour tout projet impliquant données personnelles santé, finance, mineurs, biométrie. Fortement recommandé par CNIL et EDPB en 2024-2025.
Attack trees et kill chains
Attack tree (Bruce Schneier 1999) : modèle arborescent où la racine est l'objectif adverse (« voler la base clients ») et les nœuds enfants les sous-objectifs nécessaires. Notation AND/OR. Permet de scorer le coût/probabilité de chaque branche et identifier les chemins les moins coûteux pour l'attaquant.
Voler base clients
├── (OR) SQL injection sur /api/users
│ ├── (AND) Trouver SQLi via DAST
│ ├── (AND) Bypasser WAF
│ └── (AND) Lire table users complète
├── (OR) Compromettre un employé
│ ├── (AND) Phishing email valide
│ ├── (AND) Credentials login
│ └── (AND) Pas de MFA actif
└── (OR) Exfiltrer via backup S3
├── (AND) Trouver bucket public
├── (AND) Bucket non chiffré
└── (AND) Bucket contient backup users
Kill chain (Lockheed Martin 2011, Hutchins/Cloppert/Amin) : 7 étapes d'une intrusion APT, Reconnaissance, Weaponization, Delivery, Exploitation, Installation, Command & Control, Actions on Objectives. Utile pour mapper TTPs MITRE ATT&CK sur scénarios d'attaque.
Stack outillage threat modeling 2026
| Outil | Modèle | Tarif | Force | Faiblesse |
|---|---|---|---|---|
| OWASP Threat Dragon v2.4 | Open Source (Apache 2.0) | Gratuit | GUI web, GitHub native, STRIDE auto | Limité aux STRIDE-DFD |
| pytm | Open Source (MIT) | Gratuit | Threat model as code, CI-friendly | Apprentissage Python, sans GUI |
| Microsoft Threat Modeling Tool 2016 | Closed source | Gratuit Windows | STRIDE complet, base de threats | Figé depuis 2022, Win-only |
| IriusRisk | Commercial | ~50-200€/user/mois | Librairie 2000+ threats, Jira sync | Coûteux pour petites équipes |
| ThreatModeler | Commercial | Sur devis | Automation cloud (AWS, Azure templates) | Lourd, intégration limitée |
| SD Elements | Commercial | Sur devis | Conformité orienté requirements | Complexité de mise en œuvre |
| Tutamantic Lite | Commercial | ~30€/user/mois | Léger, web | Moins mature qu'IriusRisk |
| LINDDUN GO cards | Open Source | Gratuit | Méthode atelier privacy | Manuel, pas d'outil dédié |
| Cairis | Open Source | Gratuit | Recherche académique, riche | Peu maintenu, UX vieillissante |
# pytm, Hello World threat model en Python
pip install pytm
cat > tm.py <<'EOF'
from pytm import TM, Server, Datastore, Dataflow, Boundary, Actor
tm = TM("API Users")
tm.description = "API REST exposant /users avec PostgreSQL"
internet = Boundary("Internet")
internal = Boundary("Internal Network")
user = Actor("End User")
user.inBoundary = internet
api = Server("API REST")
api.inBoundary = internal
api.OS = "Linux Alpine"
api.controls.sanitizesInput = True
api.controls.encodesOutput = True
db = Datastore("PostgreSQL")
db.inBoundary = internal
db.controls.isEncryptedAtRest = True
req = Dataflow(user, api, "GET /users?id=X")
req.protocol = "HTTPS"
req.dstPort = 443
req.controls.authenticatesSource = True
q = Dataflow(api, db, "SELECT * FROM users WHERE id=0.9 €")
q.protocol = "TCP"
q.dstPort = 5432
q.controls.usesParameterizedSQL = True
tm.process()
EOF
python tm.py --report template.md > threat_model.md
python tm.py --dfd | dot -Tpng -o dfd.webpThreat modeling adapté à l'IA/LLM
Triple approche émergente en 2026 :
-
STRIDE-AI (Microsoft Responsible AI, novembre 2023), extension de STRIDE avec catégories spécifiques :
- Spoofing → model spoofing, identity theft via voice cloning
- Tampering → data poisoning training set, prompt injection runtime
- Information disclosure → model inversion, training data extraction
- Elevation of privilege → jailbreak, agent tool abuse
-
MITRE ATLAS (Adversarial Threat Landscape for AI Systems, juin 2021, MAJ continue 2024-2026), catalogue 70+ techniques adverses sur ML/LLM, structure ATT&CK-like : Reconnaissance, Resource Development, Initial Access, ML Model Access, Execution, Persistence, Defense Evasion, Discovery, Collection, Exfiltration, Impact.
-
OWASP Top 10 for LLM Applications v2.0 (octobre 2024), 10 risques majeurs : LLM01 Prompt Injection, LLM02 Insecure Output Handling, LLM03 Training Data Poisoning, LLM04 Model DoS, LLM05 Supply Chain, LLM06 Sensitive Information Disclosure, LLM07 Insecure Plugin Design, LLM08 Excessive Agency, LLM09 Overreliance, LLM10 Model Theft.
Workflow combiné : STRIDE classique sur l'app, ATLAS sur le modèle, OWASP LLM Top 10 sur les surfaces LLM-specific (prompt, RAG, agents).
Erreurs fréquentes en threat modeling
| Erreur | Symptôme | Fix |
|---|---|---|
| Threat modeling post-design | Findings non actionables, risque accepté de facto | Faire en design phase, avant code |
| DFD trop abstrait sans trust boundaries | Menaces génériques, pas de profondeur | Granularité fine, boundaries explicites |
| STRIDE sans data flow | Liste de menaces théoriques, déconnectées | DFD obligatoire avant STRIDE |
| Pas de mise à jour 6+ mois | Threat model pourri, ne reflète plus la réalité | Cadence trimestrielle ou par release |
| Mitigation = "à voir avec sécu" | Aucune action, dette accumulée | Mitigation nominative + ID ticket Jira |
| Threat modeling fait par sécu seule | Pas de buy-in dev, théorique | Workshop dev + architecte + sécu (Manifesto) |
| Outil unique sans méthode | False sense of completeness | Méthode d'abord (STRIDE/PASTA), outil ensuite |
| Pas de validation par pentest | Théorie pure, jamais confrontée | Pentest annuel valide les hypothèses |
| Scoring DREAD subjectif | Argument bikeshed sur les chiffres | Préférer H/M/L simple ou CVSS-like |
| Documentation Word non versionnée | Pas de Git, perte d'historique | pytm ou Threat Dragon en Git |
| Compliance-driven sans valeur tech | « threat model pour cocher la case » | Aligner objectifs business + tech |
| Surcharge de documentation PASTA | 200 pages, personne ne lit | Démarrer STRIDE, monter en maturité |
Mapping framework : threat modeling dans les référentiels
| Framework | Référence | Exigence threat modeling |
|---|---|---|
| OWASP SAMM v2.0 | Threat Assessment | Pratique de niveau 1 à 3 |
| OWASP ASVS v4.0.3 | V1.1.2 | Threat model documenté à chaque release |
| NIST SP 800-154 | 2016 (data-centric) | Methodology guide |
| NIST SSDF SP 800-218 | PW.1.1 | Threat modeling SDLC requirement |
| ISO/IEC 27034 | Application security | Threat & risk identification |
| PCI DSS v4.0 | 6.2.3, 6.2.4 | Threat modeling sur changes critical |
| Microsoft SDL | Phase 2: Design | Practice 4, Threat Modeling |
| BSIMM 14 (2024) | AM1.2, AM1.3, AM2.5 | Activités attack modeling |
| FedRAMP | SC-7, SA-15 | Threat modeling intégré au SDLC |
| NIS2 directive | art. 21 §2 (b) | Risk management measures |
Pour aller plus loin
- CWE (Common Weakness Enumeration), pour cataloguer les classes de bugs identifiées par STRIDE.
- CVE, pour mapper menaces théoriques vers CVE concrètes.
- TTP (Tactics, Techniques & Procedures), pour modéliser le comportement adverse au-delà des menaces.
- Zero Trust Architecture (ZTA), modèle architectural qui change la donne du threat modeling.
- SAST, pour valider que les mitigations identifiées sont implémentées.
- Sources externes : Threat Modeling Manifesto, OWASP Threat Dragon, pytm, MITRE ATLAS, LINDDUN v3.0, Adam Shostack book.
Points clés à retenir
- ROI threat modeling Microsoft 2014 : 0.9 € investi en design phase = 90 € économisés en correction post-prod. Toujours en design, pas après.
- 5 méthodologies majeures 2026 : STRIDE (Microsoft 1999, ~80% des cas), PASTA (UcedaVélez 2012, banque/défense), LINDDUN v3.0 (KU Leuven déc. 2023, privacy/RGPD), Attack Trees (Schneier 1999), Microsoft SDL.
- Threat Modeling Manifesto (2020, signataires : Adam Shostack, Brook Schoenfield, Izar Tarandach et 14 autres) : 4 questions, 4 valeurs, 5 principes, référence canonique.
- STRIDE = Spoofing, Tampering, Repudiation, Information disclosure, DoS, Elevation of privilege. Mature, rapide, mapping naturel sur DFD.
- LINDDUN v3.0 (décembre 2023) = Linkability, Identifiability, Non-repudiation, Detectability, Disclosure, Unawareness, Non-compliance. Indispensable pour RGPD / HIPAA / mineurs / biométrie.
- Outillage : OWASP Threat Dragon v2.4 (2024, gratuit), pytm (threat model as code), Microsoft Threat Modeling Tool 2016 (figé), IriusRisk (50-200€/user/mois, 2000+ threats).
- Threat modeling IA/LLM 2026 : combiner STRIDE-AI (Microsoft, novembre 2023), MITRE ATLAS (juin 2021, MAJ continue), OWASP Top 10 for LLM v2.0 (octobre 2024).
- Anti-pattern n°1 : threat modeling tardif (post-design) = théâtre de sécurité, ROI s'effondre. Discipline a une fenêtre design phase.
- Anti-pattern n°2 : threat modeling fait par l'équipe sécu seule sans dev/archi → pas de buy-in, théorique. Manifesto : workshop tripartite.
- Cadence opérationnelle : threat model léger à chaque epic/story qui touche un trust boundary, complet par release majeure, mise à jour trimestrielle.
- Mapping framework : OWASP SAMM v2.0 Threat Assessment, ASVS v4 V1.1.2, NIST SP 800-154, NIST SSDF SP 800-218 PW.1.1, Microsoft SDL Phase 2, BSIMM 14 AM1.2.
- Threat modeling vs pentest vs red team : threat modeling = proactif design (5-15j/personne), pentest = réactif test (5-15k€), red team = simulation adversaire (50-300k€). Complémentaires.






