Modèle / jeu de données
mrwadams/stride-gpt avatar
mrwadams/stride-gpt

STRIDE GPT : générer un threat model à partir d'une description, et ce que cela coûte en vérification

An AI-powered threat modeling tool that leverages OpenAI's GPT models to generate threat models for a given application based on the STRIDE methodology.

1 123 étoiles324 forksPythonMIT

En bref

De quoi s’agit-il ?
STRIDE GPT transforme une description d'application, un dépôt GitHub ou un diagramme draw.io en threat model STRIDE, en arbres d'attaque et en sorties SARIF ou HTML. L'outil est utile pour démarrer vite, à condition d'accepter que la qualité du résultat dépend d'un LLM et d'une saisie manuelle.
À qui s’adresse-t-il ?
STRIDE GPT convient aux équipes qui veulent un premier threat model STRIDE rapidement, en CLI ou dans Streamlit, et qui acceptent de relire chaque menace avant de la transmettre. Il ne convient pas si vous cherchez une analyse déterministe ou si vous ne pouvez pas envoyer la description de votre système à un fournisseur de LLM.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème : une description d'application, pas un diagramme

Le threat modeling formel demande du temps et un certain nombre de décisions préalables. Il faut décrire le système, identifier les frontières de confiance, puis dérouler une méthode comme STRIDE pour produire des menaces. STRIDE GPT attaque ce point précis : l'utilisateur fournit les détails de l'application (type, méthodes d'authentification, exposition à Internet, traitement de données sensibles) et le modèle produit le threat model. Le README liste aussi la génération d'arbres d'attaque, des mitigations suggérées, un scoring DREAD et des cas de test Gherkin. Le public visé est donc l'équipe qui doit produire un document de menaces sans avoir un spécialiste disponible immédiatement. Le projet est en Python, sous licence MIT, et une instance publique tourne sur stridegpt.streamlit.app. Rien dans le matériel fourni ne permet de dire combien de personnes l'utilisent ni quelle est la qualité moyenne des sorties.

Le flux de données : description, contexte optionnel, LLM, format de sortie

Le mécanisme est celui d'un pipeline de prompt. En entrée, une description textuelle de l'application, éventuellement enrichie par une image d'architecture, par un diagramme draw.io intégré, par l'analyse d'un dépôt GitHub, ou par un DFD Mermaid confirmé. Les fonctionnalités dites agentiques modifient ce flux : le CLI peut être pointé sur une base de code et l'agent « planifie, explore et synthétise » selon le README, au lieu de travailler sur une simple description. La détection de motifs architecturaux (pipelines RAG, systèmes multi-agents, environnements d'exécution de code, écosystèmes d'outils) s'appuie sur la description pour choisir un contexte de menace adapté, une inspiration revendiquée du cadre CSA MAESTRO. En sortie, plusieurs formats : Markdown, JSON, SARIF et une vue HTML autonome. Les menaces sont annotées avec des identifiants MITRE ATT&CK ou ATLAS, exposés comme colonnes en Markdown, comme pastilles liées en HTML et comme propriétés mitre_attack en SARIF. Le fournisseur de LLM passe par LiteLLM, ce qui couvre OpenAI, Anthropic, Google AI, Mistral, Groq, DeepSeek et un hébergement local via LM Studio Server.

Installation et clés de configuration

Deux chemins existent : l'application Streamlit et le CLI. Le paquet s'installe avec pip install stride-gpt, et la version 0.19 ajoute stride-gpt --version, qui affiche la version installée puis quitte ; la bannière du TUI interactif affiche également la version en cours. La gestion des dépendances est passée sur uv : uv.lock est désormais la source unique, les fichiers requirements.txt dupliqués sont retirés, et l'image Docker ainsi que le workflow de scan de sécurité installent depuis uv.lock via uv export. Ce détail compte pour la reproductibilité : ce qui est scanné et ce qui est livré ne peuvent plus diverger du verrou. Une variable d'environnement est nommée explicitement dans le README : STRIDE_GPT_DRAWIO_URL, qui permet de pointer l'éditeur draw.io intégré vers une instance auto-hébergée au lieu de embed.diagrams.net, ce qui est la seule voie mentionnée pour un déploiement en réseau isolé. Le README renvoie aussi à un guide d'opérationnalisation dans docs/operationalization-guide.md pour injecter des contrôles organisationnels. Le projet indique ne stocker aucune donnée d'application.

Ce que le README ne dit pas sur la qualité des menaces

La limite principale est structurelle : la sortie est produite par un LLM à partir d'une description. Le README ne fournit aucune mesure de rappel, aucun jeu de menaces de référence, aucune comparaison avec un threat model humain. Un modèle peut produire une liste plausible et incomplète, ou inventer une menace qui ne s'applique pas à votre architecture. Le scoring DREAD et les identifiants MITRE ATT&CK donnent une apparence de rigueur, mais ce sont des annotations générées, pas des correspondances validées. Autre point : l'analyse d'un dépôt GitHub et l'analyse de codebase envoient du contenu de code à un fournisseur de LLM, sauf si vous passez par LM Studio Server en local. Le README mentionne l'absence de stockage côté outil, ce qui ne dit rien de la politique du fournisseur. Enfin, l'éditeur draw.io chargé par défaut depuis embed.diagrams.net suppose un accès réseau sortant depuis le navigateur de l'utilisateur. Ce n'est pas un outil à utiliser quand une analyse reproductible et auditable est exigée, ni quand la description du système est elle-même confidentielle.

Face à un modèle de menaces écrit à la main

L'alternative évidente n'est pas un autre outil mais la pratique manuelle : une session de threat modeling avec l'équipe, un diagramme de flux de données dessiné puis validé, et une liste de menaces revue par des personnes qui connaissent le système. La différence d'approche est nette. STRIDE GPT part d'une description en langage naturel et génère ; la pratique manuelle part du système réel et négocie ce qui compte. L'outil apporte la vitesse et la couverture de surface, la pratique manuelle apporte l'ancrage. Un point intéressant de STRIDE GPT est le DFD Mermaid : le README indique qu'on peut générer un DFD depuis la description, éditer la source Mermaid en direct, puis réinjecter le diagramme confirmé comme modèle de système faisant autorité dans les prompts de threat model et d'arbre d'attaque. Cette étape de confirmation est le seul garde-fou explicite du flux, et c'est celle qu'il faut utiliser plutôt que de laisser la description brute piloter la génération.

Coût de maintenance et implications de licence

Le dépôt n'est pas archivé et la dernière version publiée est v0.19.0. La cadence de publication est irrégulière : le README montre une version 0.18 puis 0.19, avec des changements fonctionnels réels (drapeau --version, bascule vers uv, éditeur draw.io intégré). Le coût de mise à jour vient surtout des dépendances LLM : les modèles cités dans les fonctionnalités (séries GPT-5.4/5.5, Claude 4.6/4.8, Gemini 3, Mistral Magistral) évoluent vite, et la couche LiteLLM absorbe une partie de ce travail mais pas les changements de comportement des modèles, qui peuvent modifier la forme des sorties. La licence MIT du projet s'applique au code, pas aux sorties ni aux données que vous envoyez à un fournisseur. Les composants tiers cités dans le README, notamment l'éditeur diagrams.net et le cadre CSA MAESTRO, relèvent de leurs propres conditions, que ce texte ne couvre pas.

Conclusion éditoriale

STRIDE GPT convient aux équipes qui veulent un premier threat model STRIDE rapidement, en CLI ou dans Streamlit, et qui acceptent de relire chaque menace avant de la transmettre. Il ne convient pas si vous cherchez une analyse déterministe ou si vous ne pouvez pas envoyer la description de votre système à un fournisseur de LLM. Avant d'adopter, vérifiez deux points dans le dépôt : le fichier uv.lock pour les dépendances verrouillées, et la variable STRIDE_GPT_DRAWIO_URL si vous devez héberger l'éditeur draw.io vous-même.

Sources officielles

  1. License: MIT
  2. mrwadams/stride-gpt on GitHub
  3. Project website
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté