Aller au contenu
Culture DevOps high

Threat modeling avec STRIDE : guide pratique DevSecOps

17 min de lecture

Le threat modeling avec STRIDE est la technique la plus utilisée pour anticiper les menaces sur un système avant de l'avoir construit. En 45 minutes de refinement, une équipe identifie des failles architecturales que les outils automatiques ne détecteront jamais, parce que ce sont des choix de conception, pas des bugs de code. Ce guide s'adresse aux équipes DevSecOps qui veulent intégrer STRIDE au quotidien, pas seulement le connaître en théorie : méthode en 4 étapes, exemple complet sur une API JWT couvrant les 6 catégories de menaces, place des outils assistés par IA, et intégration au backlog agile.


  • Comprendre les 6 catégories STRIDE et le contrôle technique associé à chacune
  • Conduire une session de threat modeling en 4 étapes chronométrées
  • Construire un Data Flow Diagram (DFD) minimal et identifier les limites de confiance
  • Appliquer STRIDE de bout en bout sur un exemple réaliste d'API d'authentification
  • Situer la place des outils assistés par IA dans la démarche, sans leur déléguer la décision
  • Traduire les menaces identifiées en user stories de sécurité et en vérifications CI/CD

STRIDE est simple à enseigner, simple à appliquer en équipe et couvre les menaces les plus courantes dans les systèmes web et Cloud Native. Ses 6 catégories correspondent directement à des contrôles techniques que les développeurs connaissent déjà, ce qui évite d'introduire un vocabulaire de sécurité déconnecté du code.

LettreCatégorieContre quoiContrôle associé
SSpoofingUsurpation d'identitéAuthentification forte
TTamperingAltération de donnéesIntégrité, signatures
RRepudiationNon-traçabilité des actionsJournalisation, audit trails
IInformation DisclosureExposition de données sensiblesChiffrement, contrôle d'accès
DDenial of ServiceIndisponibilitéRate limiting, circuit breakers
EElevation of PrivilegeEscalade de droitsMoindre privilège, RBAC

Le Threat Modeling Manifesto, référence citée par la fiche threat modeling de l'OWASP, résume toute démarche à 4 questions : sur quoi travaillons-nous, qu'est-ce qui peut mal tourner, que faisons-nous à ce sujet, et avons-nous fait du bon travail. Les 4 étapes détaillées plus loin répondent directement à ces questions, dans un format chronométré adapté au rythme d'un sprint.

Quand utiliser STRIDE : idéal pour les nouvelles fonctionnalités, les changements d'architecture ou les intégrations avec des systèmes externes. Pas pour auditer du code déjà en production : les scanners de code statique (SAST, pour Static Application Security Testing) font mieux pour ça.


Une session efficace suit toujours le même déroulé, qu'elle dure 30 minutes ou une demi-journée. Le chronométrage ci-dessous correspond à une feature de taille moyenne en refinement ; il se multiplie pour un changement d'architecture complet.

  1. Décrire le système : construire un Data Flow Diagram (DFD) simple listant composants, flux de données et limites de confiance (trust boundaries). 10 minutes.

  2. Identifier les menaces STRIDE : pour chaque flux et chaque composant, poser la question : quelles catégories STRIDE s'appliquent ici ? 20 minutes.

  3. Évaluer et prioriser : pour chaque menace identifiée, évaluer la probabilité et l'impact avec DREAD (Damage, Reproducibility, Exploitability, Affected users, Discoverability, une grille de notation sur 5 critères qui donne un score de risque) ou simplement Critique/Élevé/Moyen/Faible. 10 minutes.

  4. Décider des mitigations : accepter, corriger, transférer. Les corrections deviennent des user stories de sécurité dans le backlog. 10 minutes.


Vous n'avez pas besoin d'un outil dédié pour démarrer. Un tableau blanc ou un Miro suffit largement pour la première session. Ce qui compte, c'est de représenter clairement les éléments qui traversent une frontière de confiance, pas de produire un schéma esthétique.

Un DFD utile fait apparaître :

  • Les acteurs (utilisateur, service externe, admin)
  • Les composants (application, base de données, cache, queue)
  • Les flux de données (requêtes HTTP, appels SQL, messages)
  • Les limites de confiance, lignes qui marquent la frontière entre zones de confiance différentes
[Utilisateur] --HTTPS--> [API Gateway] --appel interne--> [Service Auth]
| |
trust boundary [Base de données]
|
[Service Profil] --> [Base de données]

Chaque flux qui franchit une limite de confiance est candidat à une analyse STRIDE. Un flux interne entre deux composants qui se font mutuellement confiance mérite moins d'attention qu'un flux qui traverse la frontière entre l'utilisateur et votre système.


Prenons une API d'authentification classique avec JWT (JSON Web Token, un jeton signé qui transporte l'identité de l'utilisateur). L'exemple suivant couvre les 6 catégories STRIDE sur ce même système, pour montrer qu'aucune catégorie ne doit être sautée par habitude.

Menace : Un attaquant usurpe l'identité d'un utilisateur en rejouant un token JWT expiré ou volé.

Questions à poser :

  • Les tokens ont-ils une expiration courte (15 min) ?
  • Les refresh tokens sont-ils révocables ?
  • Y a-t-il une vérification de l'empreinte client (IP, user-agent) ?

Mitigation :

  • JWT avec expiration courte et refresh token stocké en cookie HttpOnly
  • Révocation des tokens via liste de blocage en mémoire
  • Story backlog : "En tant que système, je dois invalider tous les tokens actifs d'un utilisateur sur demande ou détection d'anomalie"

Le threat modeling n'a pas besoin d'être un processus lourd pour produire de la valeur. L'enjeu est de le répéter souvent, en petit format, plutôt que d'organiser un grand exercice annuel vite oublié.

Lors du refinement d'une user story qui introduit un nouveau flux de données ou une nouvelle intégration, ajoutez 10 à 15 minutes de threat modeling :

  1. Dessinez le DFD du flux impacté au tableau
  2. Passez les 6 lettres STRIDE en 2 minutes chacune
  3. Notez les menaces identifiées
  4. Créez les stories de sécurité associées dans le même sprint ou dans le backlog de sécurité

Ajoutez un critère dans votre Definition of Done (DoD, l'ensemble des conditions qu'une story doit remplir pour être considérée terminée) pour les features qui touchent des données sensibles ou des accès :

- [ ] Threat modeling STRIDE réalisé et documenté dans le ticket
- [ ] Menaces critiques mitigées ou acceptées explicitement
- [ ] Stories de sécurité créées pour les mitigations non urgentes

Pour les changements d'architecture (nouvelle intégration, nouveau service), organisez une session dédiée de 90 minutes : 20 minutes pour construire le DFD ensemble, 40 minutes pour parcourir STRIDE (5 minutes par catégorie, 2 séquences), 20 minutes pour prioriser et décider, et 10 minutes pour documenter dans l'ADR (Architecture Decision Record, un document court qui trace une décision d'architecture et son contexte).



Threat modeling assisté par IA : accélérateur, pas remplaçant

Section intitulée « Threat modeling assisté par IA : accélérateur, pas remplaçant »

Depuis 2023, des outils assistés par IA générative accélèrent la première étape du threat modeling : la génération d'une liste de menaces STRIDE à partir d'une description d'architecture. STRIDE GPT, projet open source qui s'appuie sur des modèles de langage, transforme en quelques minutes une description texte ou un dépôt GitHub en un premier jet de menaces, de scores de risque et de tests à écrire, sous des formats exploitables comme Markdown ou SARIF (Static Analysis Results Interchange Format, un format JSON standardisé pour échanger des résultats d'analyse entre outils de sécurité). Des éditeurs commerciaux comme IriusRisk ou ThreatModeler ont ajouté des fonctionnalités comparables à leurs catalogues de menaces.

Ces outils ne remplacent pas la session collaborative. Un modèle de langage qui reçoit une description vague produit des menaces génériques, sans lien avec les vraies limites de confiance du système, et peut passer à côté d'un flux critique que l'équipe connaît par cœur. La pratique qui se stabilise en 2026 consiste à utiliser l'IA comme générateur de brouillon et validateur de complétude (a-t-on bien couvert les 6 catégories sur chaque flux sensible), puis à laisser l'équipe trancher la priorisation et les mitigations. Le projet TaaC-AI, référencé par la fiche threat modeling de l'OWASP, suit la même logique de threat modeling as code enrichi par un modèle de langage.

Des extensions académiques comme STRIDE-AI adaptent la grille aux systèmes d'IA générative et aux agents autonomes, avec des catégories de menaces propres à ces systèmes (empoisonnement de modèle, injection de prompt). Ces extensions restent expérimentales et ne concernent pas la majorité des équipes qui appliquent STRIDE à des API classiques.


Quand passer d'un tableau blanc à un outil dédié ?

Section intitulée « Quand passer d'un tableau blanc à un outil dédié ? »

Le DFD au tableau et les post-its colorés (un par catégorie STRIDE) suffisent pour les premières sessions, celles où l'équipe apprend encore la méthode. Ce qui compte à ce stade, c'est la conversation que génère l'exercice, pas le rendu final : un schéma imparfait mais discuté vaut mieux qu'un diagramme soigné produit seul dans son coin.

Le passage à un outil dédié devient pertinent quand deux signaux apparaissent ensemble : l'équipe maîtrise déjà les 4 étapes sans les relire, et le volume de sessions augmente (plusieurs par sprint, sur des systèmes qui partagent des composants). Des outils open source comme OWASP Threat Dragon permettent alors de conserver un historique des DFD et des menaces d'une session à l'autre, et des outils assistés par IA (voir plus haut) peuvent générer un premier jet de menaces à partir de ce DFD, sans dispenser l'équipe de la discussion finale.


Le threat modeling identifie des risques de conception. Beaucoup de ces risques peuvent être traduits en vérifications automatiques dans le pipeline CI/CD (intégration et déploiement continus), ce qui transforme une décision ponctuelle en garde-fou permanent.

Exemples de traductions :

Menace STRIDEType de vérification automatisable
Secrets exposés dans les logs (I)Scanner de secrets dans le code
Dépendances avec vulnérabilités connues (T/I)Analyse des composants (SCA, Software Composition Analysis)
Headers de sécurité absents (I)Tests de sécurité dynamiques (DAST, Dynamic Application Security Testing)
Endpoint sans authentification (S/E)Tests d'intégration d'autorisation
Absence de rate limiting (D)Tests de charge sur les endpoints sensibles
Processus exécuté sans isolation (E)Analyse statique de configuration

  • STRIDE est efficace en 30 à 60 minutes. Plus long, c'est qu'on cherche à tout modéliser, ce n'est pas le but.
  • Les 6 catégories (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) couvrent la majorité des menaces des systèmes web et Cloud Native.
  • Les résultats d'un threat modeling se traduisent en user stories de sécurité, pas en documents PDF.
  • Commencez par les flux qui franchissent les limites de confiance : c'est là que les risques sont les plus élevés.
  • Un threat modeling sans décision est un coût sans valeur.
  • Les outils assistés par IA accélèrent le brouillon de menaces, mais la priorisation reste une décision d'équipe.
  • Traduisez les menaces en vérifications CI/CD pour transformer une décision ponctuelle en garde-fou permanent.


Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn