LLM Security

Threat modeling d'une application IA : STRIDE adapté aux LLM

Threat modeling LLM avec STRIDE étendu : data flow diagrams, trust boundaries, MITRE ATLAS mapping, MAESTRO. Méthode 5 phases. Cas chatbot et agent.

Naim Aouaichia
14 min de lecture
  • threat modeling
  • STRIDE
  • architecture
  • MITRE ATLAS
  • méthodologie

Le threat modeling est la pratique qui transforme une intuition de risque en liste exploitable de menaces, mitigations et priorités. Pour une application LLM en 2026, STRIDE classique (Microsoft, 1999) ne suffit pas, il a été conçu pour des applications déterministes sans le modèle de menace particulier des LLM (prompt injection, model extraction, DoW, blind trust). Cet article documente une adaptation de STRIDE pour LLM : méthodologie 5 phases (scope → DFD → trust boundaries → STRIDE-PMCB analyse → DREAD priorisation), 4 catégories ajoutées à STRIDE classique (P/M/C/B), mapping avec MITRE ATLAS et OWASP LLM Top 10, exemples concrets sur 2 cas (chatbot SAV et agent IA avec tools), priorisation DREAD adaptée. Cible : architectes sécurité / AppSec / AI engineers structurant la sécurité d'une app IA, RSSI demandant un threat model formel pour conformité (EU AI Act annex III, NIST AI RMF).

Pour la matrice d'attaques de référence : MITRE ATLAS : matrice d'attaques sur systèmes IA. Pour le référentiel vulnérabilités : audit IA générative avec OWASP LLM Top 10.

Pourquoi STRIDE classique ne suffit pas pour les LLM

Rappel STRIDE

STRIDE (1999, Microsoft) couvre 6 classes :

ClasseDéfinitionExemple classique
SpoofingUsurper identitéPhishing, session hijack
TamperingAltérer donnéesSQL injection, file modification
RepudiationNier actionPas de logs d'audit
Information disclosureFuite donnéesXSS, IDOR
Denial of serviceSaturer ressourcesDDoS, resource exhaustion
Elevation of privilegeAcquérir + droitsPrivesc bug, sudo bypass

Méthodologie : pour chaque élément du DFD (process, data store, data flow), pour chaque classe STRIDE → identifier menaces.

Les 3 spécificités LLM non couvertes

1. Le modèle est un actif attaquable

STRIDE pense en termes de processus déterministes. Un LLM est un processus stochastique manipulable par son input. Prompt injection n'est pas du Tampering classique (l'input est légitime, c'est l'interprétation qui est détournée).

2. Frontière input/instruction floue

Dans une app classique : input utilisateur ≠ code applicatif. Trust boundary nette. Dans un LLM : input utilisateur + contenu RAG + image OCR-isée se concatènent et sont interprétés comme instructions. Boundary brouillée, STRIDE ne modélise pas cette confusion.

3. Coût asymétrique direct ($ DoW)

DoS classique = saturation infra (CPU, mémoire, bande passante). DoW LLM = coût $ direct facturé. C'est une classe distincte : un attaquant qui inflige 9000 € de coût n'a pas saturé une ressource technique, il a brûlé un budget.

→ Besoin d'extension.

Approches d'extension 2024-2026

ApprocheOrigineMaturité
STRIDE-AISEI Carnegie Mellon (2023-2024)Académique
MAESTROCloud Security Alliance (2024)Émergente
MITRE ATLASMITRE (depuis 2021)Mature comme référentiel
STRIDE + 4 catégories (cet article)Pratique terrainPragmatique

Cet article propose STRIDE-PMCB, extension pragmatique adoptable immédiatement.

STRIDE-PMCB : 4 catégories ajoutées

(P) Prompt Injection / Manipulation

Définition : input adversarial qui détourne les instructions du modèle.

Sous-classes :

  • Direct : utilisateur tape l'attaque
  • Indirect : payload arrive via RAG, image, email, web
  • Multi-turn : escalade progressive (Crescendo)

Mapping :

  • ATLAS : AML.T0051 LLM Prompt Injection
  • OWASP : LLM01 Prompt Injection

Cibles DFD : tout process LLM, tout data flow vers le LLM.

(M) Model Extraction / Theft

Définition : exfiltration des capacités, du training data, ou des paramètres du modèle.

Sous-classes :

  • Membership inference (Shokri et al. 2017) : détecter si une donnée était dans training set
  • Model extraction : reconstruire un modèle équivalent par interrogation massive
  • Weights theft : exfiltration directe des poids (RCE, supply chain)

Mapping :

  • ATLAS : AML.T0024 ML Model Extraction, AML.T0044 Membership Inference
  • OWASP : LLM10 Unbounded Consumption (lié)

Cibles DFD : modèle, API endpoint, weights storage.

(C) Cost / Resource Exhaustion

Définition : épuisement budget $ ou ressources spécifique LLM, distinct du DoS classique.

Sous-classes :

  • DoW direct (volume requêtes coûteuses)
  • Recursive tool calling (amplification interne)
  • Context window abuse (prompts max-size systématiques)

Mapping :

  • ATLAS : AML.T0034 Cost Harvesting
  • OWASP : LLM10 Unbounded Consumption

Cibles DFD : LLM provider API, agent process, tool calls.

(B) Blind Trust (over-reliance)

Définition : confiance excessive aux outputs LLM dans le pipeline applicatif. Couvre les classes "fiabilité" qui se transforment en sécurité.

Sous-classes :

  • Hallucinations exploitables (Air Canada, Mata v. Avianca)
  • Slopsquatting (recommandation packages inexistants)
  • Code completion qui inclut backdoor
  • Output exécuté/rendu sans validation (XSS, SQLi via output)

Mapping :

  • ATLAS : AML.T0048 LLM Output Manipulation
  • OWASP : LLM05 Improper Output Handling, LLM09 Misinformation

Cibles DFD : output du LLM, processes consommant l'output (front, autres systems).

Méthodologie 5 phases

Phase 1, Scope

Définir précisément :

  • Système à modéliser : nom, version, owners
  • Frontières : ce qui est in-scope / out-of-scope (rare-t-on aussi le LLM provider lui-même ? le réseau corporate ?)
  • Cas d'usage primaires : chatbot SAV ? agent IA avec tools ? RAG enterprise ?
  • Acteurs : utilisateurs, admins, dev, attaquants potentiels (interne / externe / supply chain)
  • Données sensibles : PII, secrets, IP, données clients

Phase 2, Data Flow Diagram (DFD)

Élaborer DFD niveau 1 (vue d'ensemble) puis niveau 2 (zoom sur composants critiques).

Légende standard :

□  External entity (user, attaquant, third-party)
○  Process (service, endpoint, function)
═  Data store (DB, vector DB, file storage)
→  Data flow (request, message, file)
┄┄┄ Trust boundary (zone de confiance)

Exemple niveau 1, Chatbot SAV avec RAG :

                          ┄┄┄┄┄┄┄┄┄ Internet/Edge ┄┄┄┄┄┄┄
   □ User                                                  
        │                                                  
        ▼                                                  
   ○ Frontend (React)                                      
        │                                                  
        ▼                                                  
   ┄┄┄┄┄┄┄┄┄┄┄┄┄ Frontend/Backend ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
        │                                                  
        ▼                                                  
   ○ API Gateway ──► ○ Auth service ──► ═ User DB         
        │                                                  
        ▼                                                  
   ○ Chat App                                              
        ├─► ○ Guardrail (input)                            
        ├─► ═ RAG Vector Store                             
        ├─► ○ Conversation Memory                          
        └─► ┄┄┄┄┄ External LLM Boundary ┄┄┄┄┄┄              
             │                                              
             ▼                                              
        ○ LLM Provider (OpenAI / Anthropic) □ External    
             │                                              
        ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
             ▼                                              
        ○ Guardrail (output)                                
             │                                              
             ▼                                              
        ═ Logs / Observability                              

Phase 3, Trust boundaries

Identifier explicitement les zones de confiance :

BoundaryCôté trustedCôté untrusted
EdgeBackend, appInternet, users
Frontend/BackendBackend servicesFrontend (browser, manipulable)
Application/LLMApp codeModèle (output stochastique non validé)
Application/RAGApp codeRAG content (peut contenir injection)
Agent/ToolsAgent processTool inputs (résultats peuvent être manipulés)
Tenant boundaryTenant A dataAutre tenant data (cross-tenant)

Règle : tout data flow qui traverse une trust boundary mérite un examen STRIDE-PMCB systématique.

Phase 4, Analyse STRIDE-PMCB par élément

Pour chaque élément du DFD, parcourir les 10 catégories (STRIDE + PMCB) et lister menaces.

Exemple ciblé sur LLM Provider :

CatégorieMenace identifiée
S, SpoofingAPI key compromise, attaquant utilise notre quota
T, TamperingMITM sur connexion (TLS fait le job, mais audit pinning)
R, RepudiationPas d'audit trail des prompts/réponses → impossible de prouver ce qui a été dit
I, Information disclosureProvider logs nos prompts (Sam Altman a confirmé OpenAI peut voir les prompts) → fuite IP
D, Denial of serviceProvider rate limits → notre app down
E, Elevation of privilege(n/a directement)
P, Prompt injectionInjection via user prompt, RAG, image
M, Model extractionAttaquant utilise notre app pour extraction (slow scraping)
C, Cost exhaustionDoW via volume / max_tokens / context window
B, Blind trustApp rend output sans validation → XSS, SQLi, hallucination

10 menaces identifiées rien que sur un seul élément. Le DFD complet d'une app moyenne génère 50-200 menaces brutes, d'où l'importance de la phase 5 (priorisation).

Phase 5, Priorisation DREAD

Pour chaque menace : score DREAD adapté.

def dread_score(threat: dict) -> dict:
    # Chaque dimension scorée 1-10
    d = threat["damage"]          # impact $ + reputation + breach
    r = threat["reproducibility"] # facilité reproduction (HackAPrompt baisse cette barre)
    e = threat["exploitability"]  # compétences/ressources requises
    a = threat["affected_users"]  # nombre/type users impactés
    di = threat["discoverability"]
    
    score = (d + r + e + a + di) / 5
    
    if score >= 7:
        priority = "critical"
    elif score >= 5:
        priority = "high"
    elif score >= 3:
        priority = "medium"
    else:
        priority = "low"
    
    return {"score": round(score, 1), "priority": priority}

Output : threat list rangée par score. Garder top 10-30 pour mitigation roadmap.

Exemple complet, chatbot SAV avec RAG

Phase 1, Scope

  • Système : ChatBot SAV ZerodaySupport v2.1
  • In-scope : front, API, app middleware, RAG store, OpenAI provider
  • Out-of-scope : OpenAI infrastructure interne, LAN corporate
  • Cas d'usage : réponses commandes/retours/livraison
  • Acteurs : clients, admins SAV, attaquants externes, employés malveillants
  • Données : PII clients, infos commandes, codes promo internes (ne devraient pas être dans RAG mais c'est à vérifier)

Phase 2-3, DFD + boundaries

Cf section précédente.

Phase 4, Top 10 menaces identifiées

#ÉlémentCatégorieMenaceMitigation
1LLM callPDirect prompt injection extrait system promptInput classifier + system prompt sans secrets
2RAG storeP + TIndirect injection via doc empoisonnéModération à l'ingestion + tenant isolation
3LLM callCDoW via context window abuseMax_tokens server-side + token budget per user
4LLM callMModel extraction via volumeVolume-based anomaly detection
5Output flowBXSS via output rendu innerHTMLOutput sanitization (bleach)
6API GatewaySAPI key compromisePer-user JWT + key rotation
7Conversation memoryICross-user leakStrict scoping per user_id + tenant filter
8LogsIPII en clair dans logsPresidio redaction au log
9RAG storeICross-tenant query leakFilter tenant_id immutable au retrieval
10Auth serviceSCredential stuffing → DoWMFA + HaveIBeenPwned + rate limit login

Phase 5, Priorisation

#1 Direct prompt injection, DREAD 7.4, CRITICAL
#2 Indirect injection RAG, DREAD 7.0, CRITICAL
#3 DoW context abuse, DREAD 6.8, HIGH
#5 XSS output, DREAD 6.6, HIGH
#9 Cross-tenant RAG, DREAD 6.4, HIGH
#7 Cross-user memory, DREAD 5.8, HIGH
#10 Credential stuffing → DoW, DREAD 5.6, HIGH
#6 API key compromise, DREAD 5.2, HIGH
#8 PII en clair logs, DREAD 4.8, MEDIUM
#4 Model extraction, DREAD 4.0, MEDIUM

Roadmap mitigation : adresser top 7 critical/high en 3 sprints, medium en planning trimestre suivant.

Exemple complémentaire, agent IA avec tools

Pour un agent IA (Copilot-like, custom LangChain) avec accès à outils sensibles (mail, drive, code commit) :

Trust boundaries spécifiques

┄┄┄┄┄ Agent boundary ┄┄┄┄┄
   ↑
   ├── User prompts (untrusted)
   ├── Tool results (untrusted, peuvent être manipulés)
   ├── Memory inter-session (untrusted si shared)
   ├── RAG documents (untrusted)
   └── External web fetched (untrusted)
   ↓
   ► Tool : send_email (high impact, external)
   ► Tool : commit_code (high impact, repo)
   ► Tool : delete_file (high impact, irreversible)
   ► Tool : search_docs (low impact, read)

Menaces additionnelles spécifiques

#Menace agentCatégorieMitigation
11Confused deputy : tool call dérivé d'injectionP + EOAuth on-behalf-of + capability tokens
12Recursive tool calling loop (DoW)CRequestBudget per request (max 10 calls)
13Tool poisoning (résultat manipulé)T + BValidate tool outputs, distrust by default
14Memory poisoning entre sessionsT + PMemory scopée per user, no shared mem
15Excessive agency : action critique sans confirmE + BHuman-in-the-loop sur tools sensibles

→ Threat model agent 2× plus dense qu'un chatbot simple. À refaire spécifiquement quand on passe d'app statique à agent.

Mapping STRIDE-PMCB ↔ ATLAS ↔ OWASP

Tableau de correspondance pour aligner les référentiels :

STRIDE-PMCBATLAS techniqueOWASP LLM v2
S, SpoofingAML.T0012 Valid Accounts(n/a, infra classique)
T, Tampering dataAML.T0020 Poison Training DataLLM04 Data Poisoning
T, Tampering RAGAML.T0070 RAG PoisoningLLM04 + LLM08 Vector
R, Repudiation(faible focus ATLAS)(logging recommandé)
I, DisclosureAML.T0048 Output HandlingLLM02 Sensitive Disclosure
D, DoS(n/a, infra)LLM10 Unbounded
E, ElevationAML.T0061 LLM Plugin CompromiseLLM06 Excessive Agency
P, Prompt InjectionAML.T0051 LLM Prompt InjectionLLM01 Prompt Injection
M, Model extractionAML.T0024 ML Model Extraction(cousin LLM10)
C, CostAML.T0034 Cost HarvestingLLM10 Unbounded Consumption
B, Blind trustAML.T0048 + AML.T0049LLM05 Improper Output + LLM09 Misinformation

Threat library : tenir une base avec ces correspondances + status mitigation. Format Notion ou tableau Excel, devient l'asset le plus précieux de l'équipe sécurité IA.

Cadence et déclencheurs

Cinq déclencheurs pour refaire le threat model

DéclencheurAction
Initial avant prodWorkshop 4-8h, threat library complète
Changement architecture majeur (ajout tools, nouveau provider)Refresh partie impactée 2-4h
Nouveau cas d'usage / scopeRefresh complet 4h
Nouveau threat émergent (paper, incident public)Re-évaluation ciblée 1-2h
Annuel minimumWorkshop 4h

Format workshop

  • Participants : 1 architecte sécurité, 1-2 AI engineers, 1 AppSec, 1 product owner.
  • Durée : 2-4h initial, 1-2h refresh.
  • Output : DFD à jour + threat library updated + mitigation roadmap.
  • Outils : Microsoft Threat Modeling Tool (Windows), OWASP Threat Dragon (multi-platform), draw.io, IriusRisk.

Outils logiciels

Microsoft Threat Modeling Tool

  • Gratuit, Windows uniquement
  • DFD éditeur avec stencils STRIDE
  • Auto-génération de menaces basée sur règles
  • Export Word / Excel

OWASP Threat Dragon

  • Open-source, multi-platform
  • Web ou desktop
  • DFD éditeur
  • Threat library customisable
  • Plus simple que Microsoft Threat Modeling Tool

IriusRisk

  • Commercial
  • Threat library extensive incluant LLM
  • Workflow gestion mitigations
  • Intégration Jira / Azure DevOps

Pour LLM spécifiquement (2026)

  • Pas encore d'outil dédié mature
  • Approche pragmatique : OWASP Threat Dragon + threat library custom STRIDE-PMCB en Notion/Confluence
  • Veille : projets émergents 2025-2026 (MAESTRO tooling, AI Threat Modeling Toolkit)

Erreurs récurrentes

Erreur 1, Threat model fait une fois puis oublié

À 18 mois, c'est de la fiction. Cadence annuelle minimum + déclencheurs.

Erreur 2, DFD trop détaillé d'emblée

100 éléments → ingérable. Commencer niveau 1 (vue d'ensemble) puis zoom progressif.

Erreur 3, STRIDE classique only

Manque les 4 catégories LLM. Adopter STRIDE-PMCB systématiquement.

Erreur 4, Pas de priorisation

Liste de 200 menaces sans score → backlog mort. DREAD ou matrice 2D obligatoire.

Erreur 5, Mapping ATLAS/OWASP absent

Threat parle un langage seulement → silos. Mapping triple obligatoire pour collab cross-équipes.

Erreur 6, Pas de propriétaire de la threat library

Document orphelin. Owner explicite (architecte sécurité IA) qui maintient.

Erreur 7, Output non actionable

Threat list sans roadmap mitigation. Top 10 → tickets Jira → sprints.

Ce que ça change pour votre dispositif

Un threat model LLM mature 2026 :

  • STRIDE-PMCB systématiquement (10 catégories pour chaque élément DFD)
  • DFD + trust boundaries documentés et maintenus
  • Priorisation DREAD ou matrice 2D
  • Mapping ATLAS + OWASP pour collab cross-équipes
  • Cadence + déclencheurs définis
  • Threat library vivante avec owner
  • Output actionable : roadmap mitigation top 10 en backlog

C'est le pivot méthodologique qui transforme une démarche sécurité IA opportuniste en démarche structurée. Sans threat model formel, on patch des incidents au fil de l'eau. Avec, on conçoit défensivement.

ROI : 1-2 jours-homme initiaux, 2-4h/trimestre en routine. Bénéfice : alignement équipes, conformité (EU AI Act + NIST AI RMF demandent threat assessment), réduction incidents non anticipés de l'ordre de 30-50% sur 12 mois.


Pour aller plus loin : la suite naturelle est l'architecture sécurisée pour déployer un LLM on-premise, où le threat model identifié se traduit en choix d'infra concrets : VPC isolé, KMS, observabilité, hardware sécurisé. À découvrir dans le prochain article du cluster.

Questions fréquentes

  • Pourquoi STRIDE classique ne suffit-il pas pour les LLM ?
    **STRIDE** (Microsoft, 1999) est une méthode de threat modeling qui couvre 6 classes : Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege. Elle a été conçue pour des **applications déterministes** avec des trust boundaries claires. Les LLM introduisent **3 spécificités** non couvertes nativement. (1) **Le modèle lui-même est un actif attaquable** : prompt injection, jailbreak, model extraction, pas de catégorie STRIDE pour 'manipulation des instructions du modèle via input'. (2) **Frontière input/instruction floue** : un message utilisateur peut contenir des instructions que le modèle interprète comme système. STRIDE n'a pas de modèle pour cette confusion. (3) **Coût asymétrique direct** (DoW) : Denial of Service classique = saturation ressources. DoW LLM = coût $ direct, classe distincte. **Solutions 2024-2026** : extensions comme **STRIDE-AI** (cf SEI Carnegie Mellon), **MAESTRO** (Multi-Agent Environment, Security, Threat, Risk, Outcome, Cloud Security Alliance), **MITRE ATLAS** comme référentiel d'attaques. Plus pratique : enrichir STRIDE avec 4 catégories adaptées (cf article).
  • Comment dessiner un Data Flow Diagram (DFD) pour une app LLM ?
    Un DFD LLM comprend 5 éléments : **External entities** (utilisateurs, attaquants, third-party APIs), **Processes** (frontend, API, application middleware, LLM provider, agents, tools), **Data stores** (vector DB, conversation history, logs, model weights), **Data flows** (toutes les flèches entre éléments), **Trust boundaries** (lignes pointillées délimitant zones de confiance). Spécifique LLM : tracer aussi (1) le **prompt assembly** (où system prompt + user prompt + RAG context + tool history se mélangent), (2) le **modèle** comme processus avec un trust level distinct, (3) les **tool calls** comme flows externes potentiels. **Boundaries critiques à matérialiser** : Internet/edge, frontend/backend, application/LLM provider, application/RAG store, agent/tools-with-side-effects. **Outils** : Microsoft Threat Modeling Tool (gratuit Windows), OWASP Threat Dragon (open-source multi-platform), draw.io avec stencils custom, IriusRisk (commercial). Pour démarrer : commencer simple, identifier 5-10 entities + 3-5 boundaries, lister les data flows, puis enrichir.
  • Quelles sont les 4 catégories à ajouter à STRIDE pour LLM ?
    Extension STRIDE-LLM proposée 2024-2026. **(P) Prompt Injection / Manipulation**, input adversarial qui détourne instructions modèle (LLM01 OWASP). Couvre direct, indirect (RAG, image, doc), multi-turn (Crescendo). **(M) Model Extraction / Theft**, exfiltration de capabilities ou data training via interrogation massive (membership inference, model stealing). **(C) Cost / Resource Exhaustion**, DoW spécifique, recursive tool calling, context window abuse. Distinct du DoS classique car coût $ direct. **(B) Blind Trust**, confiance excessive aux outputs LLM (hallucinations exploitables, slopsquatting, jurisprudence inventée). Pas dans STRIDE classique car concerne la **fiabilité** plus que la **sécurité technique**. **STRIDE complet adapté** = STRIDE + PMCB. Mnémo : **STRIDE-PMCB**. Chaque catégorie à appliquer pour chaque element du DFD : pour chaque process / data store / data flow → identifier risques par classe. Méthode classique enrichie, pas révolution.
  • Comment mapper STRIDE-LLM avec MITRE ATLAS et OWASP LLM Top 10 ?
    Trois référentiels complémentaires. **STRIDE-LLM** : méthodologie de threat modeling (comment trouver les menaces). **MITRE ATLAS** : taxonomie des techniques d'attaque (quoi en pratique). **OWASP LLM Top 10** : classes de vulnérabilités (où c'est documenté). Pour chaque menace identifiée par STRIDE, mapper à ATLAS + OWASP. **Exemples mapping** : Tampering sur RAG store → ATLAS AML.T0020 (Poison Training Data) + OWASP LLM04 (Data Poisoning). Information Disclosure via output → ATLAS AML.T0048 (LLM Output Handling) + OWASP LLM02 (Sensitive Disclosure). Prompt Injection direct → ATLAS AML.T0051 + OWASP LLM01. Cost Exhaustion → ATLAS AML.T0034 (Cost Harvesting) + OWASP LLM10 (Unbounded Consumption). **Bénéfice** : un même risque parle 3 langages, équipe sécurité (STRIDE), threat intel (ATLAS), audit/conformité (OWASP). **Outils** : tableau Excel ou base Notion avec colonnes [Threat ID, STRIDE category, ATLAS technique, OWASP class, Asset, Mitigation, Severity, Status]. Maintenu vivant comme threat library.
  • Comment prioriser les menaces identifiées (DREAD, scoring) ?
    Scoring DREAD adapté LLM. **D**amage (1-10) : impact si menace réalisée. **R**eproducibility (1-10) : facilité reproduction par attaquant. **E**xploitability (1-10) : compétences/ressources requises. **A**ffected users (1-10) : nombre/type users impactés. **D**iscoverability (1-10) : facilité découverte vulnérabilité. **Score total** = moyenne des 5. **Priorisation** : > 7 = critical, 5-7 = high, 3-5 = medium, < 3 = low. **Adaptations LLM 2026** : (1) Damage doit inclure $ DoW potentiel, pas seulement breach. (2) Reproducibility doit considérer transferabilité (un payload qui marche sur un modèle marche-t-il sur d'autres ?). (3) Exploitability moindre car HackAPrompt a démocratisé les payloads. **Alternative simplifiée** : matrice 2D [probabilité × impact] avec 4 niveaux chacun. Plus rapide, suffisant pour la plupart des contextes. Réserver DREAD complet aux apps haut risque (EU AI Act annex III). **Output** : threat list rangée par score, avec mitigation recommandée pour top 10. Pas plus, sinon backlog ingérable.
  • À quelle fréquence refaire le threat modeling d'une app LLM ?
    Cinq déclencheurs. (1) **Initial** : avant premier déploiement production. Non négociable. (2) **Changement majeur architecture** : ajout de tools à un agent, changement de provider modèle, intégration nouveau RAG, changement de trust boundary. Refaire la partie impactée. (3) **Changement de scope** : nouveau cas d'usage (ex: chatbot SAV qui ajoute traitement de documents médicaux). Élargit attack surface. (4) **Nouveau threat émergent dans le domaine** : exemple, sortie de Crescendo paper en 2024 a obligé re-threat-modeling des apps multi-turn. Veille mensuelle équipe sécurité. (5) **Annuel minimum** : même sans changement, refaire car threat landscape évolue. **Format** : workshop 2-4h avec architectes + AI eng + AppSec + product owner. Output mis à jour : DFD, threat library, mitigations roadmap. **Erreur fréquente** : threat model fait une fois au lancement puis oublié. À 18 mois, c'est de la fiction. **Bonne pratique** : threat modeling intégré au cycle de vie produit, comme les tests de sécu.

Écrit par

Naim Aouaichia

Cyber Security Engineer et fondateur de Zeroday Cyber Academy

Ingénieur cybersécurité avec un parcours hybride : développement, DevOps Capgemini, DevSecOps IN Groupe (sécurité des documents d'identité régaliens), audits CAC 40. Fondateur de Hash24Security et Zeroday Cyber Academy. Présence LinkedIn 43 000 abonnés, Substack Zeroday Notes 23 000 abonnés.