
attackgen v0.15.0
AttackGen est un outil de test de réponse aux incidents en cybersécurité qui exploite la puissance des grands modèles de langage et du cadre complet MITRE ATT&CK. L'outil génère des scénarios de réponse aux incidents adaptés, en fonction des groupes d'acteurs de menace sélectionnés par l'utilisateur et des informations de votre organisation.
AttackGen
AttackGen est un outil de test de réponse aux incidents de cybersécurité qui exploite la puissance des grands modèles de langage et les frameworks complets MITRE ATT&CK et ATLAS. L'outil génère des scénarios de réponse aux incidents sur mesure en fonction des groupes de menaces sélectionnés par l'utilisateur, des études de cas d'attaques IA et des informations sur votre organisation.
Table des matières
- Star le dépôt
- Fonctionnalités
- Versions
- Prérequis
- Installation
- Configuration LangSmith
- Configuration des données
- Exécution d'AttackGen
- Serveur MCP
- Compétences de l'agent
- Utilisation
- Bonnes pratiques de sécurité
- Contribution
- Licence
Star le dépôt
Si vous trouvez AttackGen utile, pensez à mettre une étoile au dépôt sur GitHub. Cela aide davantage de personnes à découvrir l'outil. Votre soutien est grandement apprécié ! ⭐
Fonctionnalités
- Génère des scénarios uniques de réponse aux incidents en fonction des groupes de menaces choisis ou des études de cas ATLAS.
- Permet de spécifier la taille et le secteur d'activité de votre organisation pour un scénario personnalisé.
- Prend en charge les frameworks MITRE ATT&CK Enterprise, ICS (Systèmes de contrôle industriels) et ATLAS (Paysage des menaces adversariales pour les systèmes d'IA).
- Affiche une liste détaillée des techniques utilisées par le groupe de menaces ou l'étude de cas sélectionné.
- Crée des scénarios personnalisés à partir d'une sélection de techniques ATT&CK ou ATLAS.
- Utilise des modèles de scénarios pour générer rapidement des scénarios personnalisés basés sur des types courants d'incidents cybernétiques, y compris des schémas d'attaque spécifiques à l'IA/ML.
- Génère des scénarios de menaces internes liées à l'IA — des exercices de réponse aux incidents dans lesquels un agent d'IA frontière déployé au sein de votre organisation se comporte comme une menace interne, sur la base du modèle de menace de Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents. Les scénarios sont façonnés par l'archétype de déploiement de l'agent (niveau d'autonomie), la catégorie de menace, les menaces STRIDE et une graine de scénario en texte libre facultative.
- Assistant AttackGen — une interface de discussion pour mettre à jour et/ou poser des questions sur les scénarios générés.
- Capture les retours des utilisateurs sur la qualité des scénarios générés.
- Scénarios téléchargeables au format Markdown.
- Utilisez l'API OpenAI, l'API Anthropic (modèles Claude), l'API Google AI, l'API Mistral, l'API Groq ou tout point de terminaison personnalisé compatible OpenAI (Ollama, LM Studio, Azure OpenAI, OpenRouter, etc.) pour générer des scénarios de réponse aux incidents. Tous les fournisseurs sont acheminés via LiteLLM derrière un wrapper interne unique, donc l'ajout d'un nouveau modèle est une modification d'une seule ligne.
- Disponible en tant qu'image de conteneur Docker pour un déploiement facile.
- Intégration facultative avec LangSmith pour un débogage, des tests et une surveillance puissants des performances du modèle.
- Gestion sécurisée des identifiants à l'aide d'un fichier .env pour les clés API et les secrets.

Versions
v0.16
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Génération scénario de base en premier | - Scénario avant l'attente : la génération s'exécute désormais par phases — le scénario de base s'affiche en premier avec ses boutons Télécharger le scénario et Télécharger la couche ATT&CK Navigator déjà actifs, et le récit optionnel de l'équipe violette est diffusé ensuite. Si cette seconde passe est lente, ou si vous n'en avez pas besoin, le scénario est utilisable immédiatement plutôt que d'être retenu jusqu'à ce que tout soit terminé. - Entrées figées à la génération : chaque exécution fonctionne à partir d'un instantané pris au moment où vous appuyez sur Générer, donc modifier la barre latérale en cours d'exécution ne peut pas réécrire partiellement le scénario en cours de production. - Progression honnête : une étiquette de temps écoulé et des phases nommées — préparation des entrées, génération du scénario de base, construction des exports déterministes, génération du récit de l'équipe violette — montrent où une longue exécution en est réellement arrivée. |
| Sélecteurs neutres, sans impasse | - Uniquement des options qui fonctionnent : les sélecteurs de groupes de menaces et d'études de cas n'offrent désormais que les choix qui produisent réellement un scénario, donc une sélection ne peut plus mener à une impasse. - Ordre naturel : les groupes sont triés en ordre numérique naturel, donc APT3 vient avant APT28 et APT30 plutôt que d'être triés comme du texte et de se retrouver entre eux. |
| Barre latérale de configuration partagée sur chaque page | - Configuration unique : le fournisseur, le modèle, le framework, le secteur et la taille de l'entreprise vivent désormais dans une seule barre latérale Configuration partagée sur chaque page de scénario — Groupe de menaces, Personnalisé et Menace interne liée à l'IA — au lieu d'être ressaisis sur chacune. - Survit à la navigation : les sélections non secrètes persistent lorsque vous vous déplacez entre les pages et sont reflétées dans l'URL, tandis que les clés API sont délibérément exclues de la chaîne de requête. |
| Maintenance de la plateforme et de la sécurité | - MCP sur le SDK 2.x : le serveur MCP est passé au SDK mcp 2.x.- Image de base plus récente : l'image Docker est désormais construite sur python:3.14-slim.- Portes CI plutôt qu'avertissements : les analyses de sécurité font désormais échouer la construction en cas de constatations au lieu de simplement les signaler — pip-audit et Bandit bloquent, Trivy ne compte plus le SBOM vendu de pip comme des paquets installés, et les CVE d'images exploitables sont corrigées. Les GitHub Actions ont quitté le runtime Node 20 et Dependabot suit désormais les actions de workflow elles-mêmes. |
Versions antérieures (v0.15 et plus anciennes)
v0.15
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Préréglage d'évasion de l'environnement d'évaluation et graine de scénario | - Répéter un incident spécifique : un nouveau modèle de menace interne liée à l'IA répète un agent d'évaluation atteignant des systèmes réels depuis un environnement supposé isolé — forçant le confinement, la rotation des identifiants, la notification aux tiers et la préservation des preuves. Il couvre les divulgations de juillet 2026 concernant des agents d'évaluation s'échappant de leurs sandbox, où la frontière d'isolement était supposée plutôt qu'appliquée. - Les modèles atteignent désormais l'invite : les modèles de démarrage rapide ne pré-remplissaient auparavant que les widgets de la page et n'influençaient jamais le scénario généré. Ils portent désormais un brief narratif et les required_decisions que les questions de discussion doivent imposer, tous deux intégrés dans l'invite — donc un modèle produit un exercice de table chronométré utilisable plutôt qu'un fourre-tout de questions. Cela les divise en deux classes : les six modèles archétype originaux ne définissent que des décisions, donc le modèle invente le postulat et ré-exécuter l'un d'eux donne un exercice frais pour le même profil de menace ; les modèles incident définissent également un brief, fixant la situation.- Graine de scénario en texte libre : une boîte de graine facultative sur la page Menace interne liée à l'IA oriente le récit sur n'importe quel scénario. La sélection d'un modèle la pré-remplit, et vous pouvez la modifier ou écrire la vôtre de zéro. - Taxonomie étendue à 27 menaces / 6 catégories : ajoute une sixième catégorie de menace (Confinement et impact sur les tiers) et quatre menaces STRIDE sur lesquelles l'exercice repose — S5 rejeu d'identifiants de charge de travail réutilisables, R4 suppression de la télémétrie côté agent, I5 compromission de tiers et en aval, et E5 défaillance de l'assurance de la frontière de confinement. AttackGen étend désormais le modèle de menace publié plutôt que de le refléter.- Modèles utilisables via MCP : get_ai_insider_prompt et generate_ai_insider_scenario acceptent template= et scenario_seed=, et list_ai_insider_options renvoie chaque modèle avec les sélections et le brief qu'il applique — donc un client peut choisir un préréglage sur le mérite et appeler avec seulement un modèle, un secteur et une taille d'entreprise. Auparavant, les noms de modèles étaient listés mais aucun outil n'en acceptait un. |
| Compétence attackgen-tabletop : chemin de menace interne liée à l'IA | - Un deuxième chemin d'exercice : la compétence d'agent construit désormais un exercice de table à partir du modèle de menace interne liée à l'IA ainsi que d'une chaîne de destruction MITRE. Choisissez un modèle de démarrage rapide (ou un archétype de déploiement et des catégories de menace) et il transforme la charge utile de get_ai_insider_prompt en un MSEL.- Même forme, colonne vertébrale différente : l'exercice conserve les mêmes six sections, mais le tableau de chaîne de destruction devient un profil d'agent et une portée de menace STRIDE, le tableau de bord de détection est jugé par rapport à la posture de détection de l'archétype de déploiement — donc les lignes qui ne déclencheraient pas deviennent la constatation — et les décisions requises du modèle deviennent des questions de discussion obligatoires. - Chemin choisi pour vous : la description de la compétence se déclenche désormais sur les formulations d'agent malveillant, donc demander un « exercice de table sur menace interne liée à l'IA » atteint le bon chemin. Un acteur externe avec des techniques accélérées par l'IA reste sur le chemin MITRE. - Réponse, pas exploitation : les deux chemins sont explicitement limités à la répétition des décisions qu'une équipe de réponse doit prendre — aucun code d'exploitation, charge utile ou vulnérabilité réelle non corrigée — et le chemin IA attribue le comportement de l'agent à la configuration, à l'accès et à l'objectif plutôt qu'à un motif humain. |
| Correctif : les invites MCP de menace interne IA perdaient les capacités de l'agent | - Même modèle, même invite : le bloc de capacités de l'agent frontière — les lignes fondées sur des benchmarks qui rendent un scénario de menace interne IA crédible — était omis de chaque appel get_ai_insider_prompt / generate_ai_insider_scenario qui ne nommait pas capabilities explicitement. Aucun modèle ne les fournit, donc l'argument retombait à vide et l'invite substituait une ligne générique « supposer un agent de codage frontière capable », tandis que la page 3 envoyait les quatre pour le même modèle.- Les valeurs par défaut correspondent désormais à l'application : omettre capabilities applique l'ensemble complet, comme le fait la sélection multiple de la page. Passer [] les laisse toujours non spécifiées, donc le retrait délibéré est inchangé. |
| Correctif : génération de scénarios Anthropic Claude 4.7+ | - Chaque modèle Claude fonctionne à nouveau : Claude 4.7 et versions ultérieures rejettent toute temperature d'échantillonnage, renvoyant BadRequestError: 'temperature' is deprecated for this model. Quatre des cinq modèles Anthropic listés — Fable 5, Opus 4.8, Sonnet 5 et Opus 4.7 — ne pouvaient pas générer de scénario sur aucune page ; seul Haiku 4.5 fonctionnait.- Limité par modèle, pas par fournisseur : la règle de température était auparavant acheminée depuis le fournisseur, ce qui ne peut pas exprimer un fournisseur dont les modèles sont en désaccord. ModelInfo.supports_temperature marque désormais les modèles qui en rejettent une, donc Haiku 4.5 conserve sa température configurée tandis que ses frères l'omettent. OpenAI reste une règle au niveau du fournisseur (chaque modèle de discussion actuel est un modèle de raisonnement), et les modèles non enregistrés — points de terminaison locaux Ollama / LM Studio — reçoivent toujours une température. |
v0.14
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Serveur MCP pour clients agentiques | - Génération de scénarios comme outils : un nouveau serveur FastMCP (mcp_server.py, SDK mcp officiel) expose AttackGen aux clients agentiques via stdio, donc un assistant comme Claude Code ou Claude Desktop peut récupérer les données MITRE et générer des scénarios sans l'interface Streamlit.- Deux niveaux : les outils de données ( list_threat_groups, list_case_studies, get_kill_chain, get_detection_report, get_navigator_layer, list_ai_insider_options, get_ai_insider_prompt) ne font aucun appel LLM et ne nécessitent aucune clé API — ils renvoient des données MITRE structurées et, lorsque c'est utile, une invite prête à l'emploi, donc ils peuvent être hébergés en toute sécurité sur HTTP. Les outils de génération (generate_threat_group_scenario, generate_custom_scenario, generate_ai_insider_scenario) prennent une configuration apportez-votre-propre-clé et renvoient du Markdown terminé — conservez-les sur stdio local.- Implémentation partagée : le serveur réutilise les mêmes constructeurs headless core/prompts.py et les chargeurs core/attack_data.py que les pages Streamlit utilisent, donc les scénarios correspondent à l'application plutôt que de dériver. Lancez avec python -m mcp_server ou le script console attackgen-mcp. |
| Compétence d'agent attackgen-tabletop | - Exercices de table prêts pour l'animateur : une nouvelle compétence d'agent s'appuie sur les outils de données MCP pour transformer un groupe de menaces ou une étude de cas MITRE ATT&CK/ATLAS en un exercice de table IR complet / MSEL — récit de scénario, chaîne de destruction mappée par phases, injections horodatées, questions de discussion NIST SP 800-61 et un tableau de bord de couverture de détection. - S'exécute sur le modèle de l'appelant : la compétence fournit le savoir-faire de l'exercice tandis que le serveur MCP fournit les données, donc elle s'exécute sur le propre modèle du client sans clé API supplémentaire. - Deux formats de sortie : livré en Markdown (par défaut) ou en rapport HTML autonome et imprimable. |
| L'assistant affine la sortie Détection et réponse | - Édition équipe violette : l'assistant AttackGen peut désormais affiner le récit Détection et réponse, pas seulement le scénario. Lorsqu'un scénario est généré avec la bascule de récit 🟣 Équipe violette (pages Groupe de menaces / Personnalisé), un sélecteur Édition : apparaît sur la page Assistant afin que le chat puisse cibler soit le scénario, soit la procédure pas à pas du défenseur — auparavant l'assistant n'avait que le texte du scénario. - Mode d'édition combiné : une troisième cible Scénario + Détection et réponse affine les deux ensemble, donc un changement transversal — un secteur différent, un acteur de menace, une technique ou une chronologie — est appliqué de manière cohérente au scénario de l'attaquant et au récit du défenseur plutôt que d'être fait deux fois et de diverger. - Faits déterministes intacts : seul le récit LLM est une cible d'affinement ; la jointure de détection STIX locale n'est jamais éditée par LLM. Chaque mode d'édition conserve son propre historique de discussion, et la passe combinée est étiquetée purple_team_narrative dans LangSmith. |
| Registre de modèles simplifié | - Une chose de moins par modèle : le kwarg max_completion_tokens et la règle de température des modèles de raisonnement sont désormais acheminés depuis le fournisseur plutôt qu'un indicateur uses_max_completion_tokens par modèle — chaque modèle de discussion OpenAI actuel les utilise, donc l'indicateur dupliquait un fait que la clé du fournisseur capturait déjà. L'ajout d'un nouveau modèle OpenAI reste une modification d'une entrée dans MODELS, sans indicateur supplémentaire à retenir.- Aucun changement de comportement : une simplification interne uniquement — le wrapper construit des kwargs LiteLLM identiques pour chaque modèle actuel. |
v0.13.1
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Correctif : génération de scénarios OpenAI GPT-5.x | - Gestion correcte des modèles de raisonnement : les modèles de raisonnement GPT-5.x d'OpenAI rejettent toute temperature d'échantillonnage autre que leur valeur par défaut, donc chaque génération GPT-5.x échouait avec BadRequestError: 'temperature' does not support 0.7 with this model. AttackGen n'envoie plus de température personnalisée à ces modèles, tandis que les autres fournisseurs conservent la valeur configurée. |
| Actualisation du registre de modèles | - Modèles les plus récents : liste de modèles actualisée par rapport à la documentation actuelle de chaque fournisseur — OpenAI GPT-5.6 (niveaux Sol / Terra / Luna), Claude Fable 5 et Claude Sonnet 5, avec une génération antérieure conservée par fournisseur pour la continuité. - Entrées obsolètes supprimées : modèles retirés que les fournisseurs ont remplacés ou retirent — notamment le qwen3-32b de Groq (arrêté le 17 juillet 2026) et le Magistral Medium de Mistral — donc la barre latérale ne peut pas proposer un modèle qui génère une erreur à la sélection.- Ajout d'un niveau Groq rapide/économique ( llama-3.1-8b-instant). |
v0.13
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Mode équipe violette : Détection et réponse | - Compagnon défensif : chaque scénario Groupe de menaces et Personnalisé affiche désormais une section Détection et réponse qui relie chacune des techniques du scénario aux stratégies de détection, analyses, sources de journaux et mesures d'atténuation MITRE ATT&CK déjà incluses dans les données fournies — transformant un récit uniquement rouge en exercice d'équipe violette (« voici l'attaque, et voici exactement ce que votre SOC aurait dû voir »). - Aucun appel LLM pour les faits : la section de détection est une jointure de données locale, pas un appel de modèle — donc les analyses, sources de journaux et mesures d'atténuation qu'elle liste sont le contenu MITRE réel et actuel plutôt que des suppositions du modèle. Elle est proposée comme son propre téléchargement ..._detection.md aux côtés du scénario et de la couche.- Sources de journaux à activer : un récapitulatif par scénario liste les sources de journaux distinctes que les détections lisent (par ex. WinEventLog:Security (EventCode=4624)), donc un SOC peut voir d'un coup d'œil quelle télémétrie l'exercice suppose.- Récit d'équipe violette facultatif : une bascule 🟣 Récit d'équipe violette par page ajoute une seconde passe de modèle qui parcourt le scénario étape par étape du côté du défenseur — ce qui devrait se déclencher, ce que l'analyste voit, comment répondre — strictement fondée sur les détections et mesures d'atténuation ci-dessus (aucune détection inventée). - Compatible ATLAS : les scénarios ATLAS listent les mesures d'atténuation (ATLAS n'a pas encore de stratégies de détection) et le précisent, plutôt que de ne rien afficher. |
| MITRE ATT&CK v19.1 et données ATLAS les plus récentes | - Frameworks mis à jour : les données MITRE ATT&CK Enterprise et ICS actualisées de v18.1 à v19.1, et MITRE ATLAS actualisé à la dernière version, donc les scénarios générés reflètent les tactiques, techniques et études de cas actuelles. - Listes de groupes actualisées : les menus déroulants de groupes de menaces sont régénérés à partir des bundles v19.1 (174 groupes Enterprise et 14 ICS actifs). Les groupes que MITRE a révoqués ou fusionnés en amont (par ex. APT34 → OilRig, UNC2452 → APT29) n'apparaissent plus, tandis que les groupes nouvellement suivis comme MirrorFace apparaissent. - Plus d'études de cas ATLAS : la bibliothèque d'études de cas ATLAS est passée à 57 (17 incidents, 40 exercices). - Actualisation reproductible : un nouveau scripts/generate_groups.py régénère les mappages de groupes à partir des bundles STIX fournis, complétant le script d'études de cas ATLAS existant — donc la prochaine actualisation est une étape scriptée plutôt qu'une curation manuelle. |
| Export de couche ATT&CK Navigator | - Couche téléchargeable : chaque scénario généré sur les pages Groupe de menaces et Scénario personnalisé propose désormais une couche ATT&CK Navigator (.json) aux côtés du téléchargement Markdown, donc les techniques d'un scénario peuvent être visualisées, annotées et partagées dans ATT&CK Navigator. Pour l'afficher, téléchargez la couche et ouvrez-la via Open Existing Layer → Upload from local dans le Navigator.- Les trois matrices : le domaine Navigator correct est défini automatiquement par matrice — téléchargez les couches Enterprise et ICS dans le MITRE ATT&CK Navigator, et les couches ATLAS dans le fork ATLAS Navigator. (Une couche ATLAS ne se chargera pas dans l'ATT&CK Navigator, ou vice versa, car chacun ne reconnaît que son propre domaine.) - Les techniques restent visibles : les sous-techniques notées développent automatiquement leur parent et les identifiants de techniques sont affichés dans la mise en page, donc les techniques mises en évidence du scénario sont immédiatement apparentes plutôt que cachées dans des lignes réduites. - Aucun appel LLM supplémentaire : la couche est une sérialisation locale des techniques déjà sélectionnées pour le scénario — aucun appel de modèle ou recherche externe supplémentaire. - Noms de fichiers de téléchargement descriptifs : les téléchargements de scénario et de couche sont désormais nommés d'après l'acteur de menace / le scénario personnalisé et la matrice avec un horodatage de génération (par ex. AttackGen_APT29_Enterprise_20260714-153045.md), donc les fichiers enregistrés sont significatifs et n'entrent pas en collision entre les scénarios. |
| Quoi de neuf ? | Pourquoi est-ce utile ? |
| ----------- | ----------------- |
| Scénarios de menaces internes liées à l'IA | - Nouveau type de scénario : une page dédiée génère des exercices de type tabletop pour la réponse à incident dans lesquels un agent d'IA de pointe déployé au sein de votre organisation se comporte comme une menace interne — via un désalignement, du reward hacking, des objectifs émergents ou une compromission par injection de prompt. Basé sur le modèle de menace de Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents. - Piloté par les archétypes de déploiement : les scénarios sont façonnés par le niveau d'autonomie de l'agent (L1 assistant supervisé → L4 flotte entièrement autonome), qui est le principal déterminant de sa surface de menace et de sa posture de détection. - Cinq catégories de menaces internes : compromission d'identifiants, sabotage de la chaîne d'approvisionnement, exfiltration de données, sabotage des infrastructures et tromperie et évasion — chacune mappée à des manifestations concrètes propres aux agents d'IA plutôt qu'à des motivations humaines. - 23 menaces STRIDE pour les agents d'IA : une taxonomie STRIDE complète (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) adaptée aux agents d'IA de pointe, utilisée en option pour restreindre la portée du scénario. - Contrôles alignés sur le NIST CSF : les scénarios générés incluent des mesures d'atténuation priorisées mappées au NIST Cybersecurity Framework (Identify, Protect, Detect, Respond, Recover). - Parité des fournisseurs : prend en charge le même ensemble de fournisseurs que le reste d'AttackGen avec un traçage LangSmith optionnel. |
| Migration LiteLLM et consolidation des fournisseurs | - Wrapper LLM unifié : toute l'intégration des fournisseurs passe désormais par un wrapper unique core/llm.py qui utilise LiteLLM. Ajouter un nouveau modèle est une modification d'une ligne dans la liste MODELS de core/models.py ; ajouter un fournisseur est une simple entrée ProviderInfo. Reprend le modèle utilisé dans stride-gpt.- Réduction massive du code : suppression d'environ 3 800 lignes de branchements dupliqués par fournisseur sur les quatre pages (~1 000 lignes de blocs if model_provider == ... plus huit fonctions wrapper quasi identiques par page). Chaque page construit désormais de simples dictionnaires de messages et appelle call_llm(config, messages).- Barre latérale pilotée par registre : la barre latérale d'accueil est désormais générée à partir du registre des fournisseurs, remplaçant huit blocs de fournisseurs codés en dur par une seule boucle. - Listes de modèles actualisées : mise à jour vers les derniers modèles — famille OpenAI GPT-5.5 / 5.4, Anthropic Claude 4.6 / 4.7 / 4.8, aperçu Google Gemini 3.x, Mistral Large 3 / Magistral, Groq GPT-OSS et Qwen3. - Consolidation des fournisseurs : remplacement des entrées séparées Azure OpenAI Service et Ollama par une seule option Personnalisé (compatible OpenAI). Les déploiements Azure, Ollama ( http://localhost:11434/v1), LM Studio (http://localhost:1234/v1), OpenRouter et les points de terminaison auto-hébergés fonctionnent tous via ce chemin unique.- Empreinte de dépendances réduite : suppression des paquets langchain, langchain-anthropic, langchain-core, langchain-community, langchain-google-genai, langchain-mistralai, langchain-openai et anthropic — remplacés par une seule dépendance litellm>=1.40. langsmith est conservé pour le traçage optionnel.- Traçage LangSmith préservé : le décorateur @traceable et le widget de retour continuent de fonctionner de manière transparente ; core/llm.py enveloppe call_llm dans @traceable lorsqu'un client LangSmith est disponible. |
| Rafraîchissement de la sécurité de l'image Docker | - Image de base rafraîchie : mise à jour du digest python:3.12-slim pour éliminer les CVE obsolètes de la couche OS signalées par l'analyse de code Trivy, réduisant le nombre d'alertes ouvertes contre l'image conteneur publiée.- Correctif pip CVE-2025-8869 : pip est désormais mis à niveau avant l'installation des exigences, intégrant le correctif pour les vérifications manquantes de liens symboliques lors de l'extraction des paquets. |
| Sortie LLM en streaming | - Génération jeton par jeton : les scénarios et le chat de l'Assistant AttackGen diffusent désormais les jetons au fur et à mesure qu'ils arrivent plutôt que de bloquer sur la réponse complète, de sorte que les longues générations semblent réactives et que vous pouvez lire pendant que le modèle écrit. - API de streaming opt-in : ajoute call_llm_stream aux côtés de call_llm dans le wrapper LiteLLM unifié, afin que les appelants choisissent de diffuser ou non sans modifier le reste du contrat.- Gestion propre du raisonnement : un helper avec état stream_filter_thinking supprime les régions <think>...</think> dans la vue en direct tandis que le clean_model_response post-stream continue de remplir l'expandeur de raisonnement à partir du texte brut complet. |
| Bascule d'adversaire amélioré par l'IA | - Nouvelle bascule par page : ajoute une bascule « adversaire amélioré par l'IA » sur les pages Threat Group et Custom Scenario qui recadre le scénario généré afin que l'adversaire utilise l'IA pour accélérer et améliorer la même kill chain — abaissement du seuil de compétence, délais compressés, orchestration autonome et échelle parallèle — plutôt que d'introduire de nouvelles techniques. - Fondé sur la recherche Anthropic : basé sur la recherche LLM ATT&CK Navigator d'Anthropic, qui a constaté que le changement le plus significatif dans les cybermenaces réelles est l'accélération et l'orchestration des techniques existantes plutôt que de nouvelles techniques. - Visibilité du traçage : scénarios étiquetés avec ai_enhanced dans LangSmith afin que les générations améliorées par l'IA puissent être filtrées et comparées aux exécutions de référence.- Volontairement ignoré sur la page AI Insider Threat : l'acteur de menace de cette page est déjà un agent d'IA de pointe, donc le cadrage « amélioré par l'IA » serait redondant. |
| Corrections de bugs et améliorations | - Cette version inclut plusieurs petites corrections d'interface et de rendu sur les pages de scénarios et la barre latérale. |
v0.11
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Prise en charge du framework MITRE ATLAS | - Couverture des menaces IA/ML : AttackGen prend désormais en charge le framework MITRE ATLAS (Adversarial Threat Landscape for AI Systems), permettant la génération de scénarios de réponse à incident pour les menaces ciblant les systèmes d'IA et d'apprentissage automatique. - Scénarios basés sur des études de cas : générez des scénarios basés sur 45 études de cas documentées d'attaques IA réelles, dont 14 incidents réels et 31 exercices de recherche couvrant des attaques comme l'injection de prompt, l'extraction de modèles et l'empoisonnement de données. - 147 techniques ATLAS : accédez à la bibliothèque complète de techniques ATLAS couvrant 16 tactiques spécifiques à l'IA, notamment l'accès aux modèles IA, la préparation d'attaques IA et les phases d'attaque traditionnelles adaptées aux systèmes d'IA. - Modèles spécifiques à l'IA : six nouveaux modèles de scénarios personnalisés pour les attaques IA/ML courantes : évasion de modèles, empoisonnement de données, extraction de modèles, injection de prompt, jailbreak LLM et attaques de la chaîne d'approvisionnement IA. |
| Données MITRE ATT&CK mises à jour vers v18.1 | - Dernières informations sur les menaces : AttackGen utilise désormais les données MITRE ATT&CK v18.1, garantissant que les scénarios générés reflètent les tactiques, techniques et procédures les plus récentes utilisées par les acteurs de la menace. - Couverture Enterprise élargie : la liste des groupes de menaces Enterprise est passée de plus de 150 à 187 groupes, y compris les acteurs récemment suivis. - Couverture ICS élargie : la liste des groupes de menaces ICS est passée de 7 à 16 groupes, offrant une meilleure couverture pour les scénarios de systèmes de contrôle industriels. |
| Prise en charge des modèles LLM mise à jour | - OpenAI : ajout des modèles GPT-5.2 et GPT-5.2 Pro ; liste de modèles rationalisée en supprimant les modèles de raisonnement obsolètes de la série o. - Anthropic : mise à jour vers la famille Claude 4.5 avec Sonnet 4.5, Haiku 4.5 et Opus 4.5. - Google AI : ajout des modèles d'aperçu Gemini 3 Pro et Flash ; options Gemini 2.5 mises à jour. - Groq : ajout des modèles GPT-OSS 120B et 20B pour une inférence haute performance. - Mistral : mise à jour vers des versions de modèles datées (Large 2512, Medium 2508, Small 2506) ; ajout de Ministral 14B. |
| Corrections de bugs | - Correction de la gestion des réponses Google AI : mise à jour de l'analyse des réponses pour gérer le format de contenu structuré renvoyé par les modèles Gemini plus récents, garantissant que le texte du scénario est correctement extrait et affiché. - Correction des messages d'erreur de la matrice ICS : les messages d'erreur affichent désormais correctement « ICS ATT&CK » au lieu de « Enterprise ATT&CK » lors de l'utilisation de la matrice ICS. - Amélioration de la gestion des techniques vides : ajout d'une gestion élégante lorsqu'un groupe de menaces n'a pas de techniques associées, empêchant les erreurs secondaires. |
v0.10.1
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Compatibilité LangChain v1.0 | - Correction des changements d'importation cassés : mise à jour de toutes les importations de langchain.prompts.chat obsolète vers langchain_core.prompts, garantissant la compatibilité avec LangChain v1.0 et empêchant les problèmes ModuleNotFoundError. Cela maintient la stabilité à mesure que l'écosystème LangChain évolue. |
| Infrastructure de sécurité complète | - Analyse de sécurité automatisée : introduction de workflows GitHub Actions pour la surveillance continue de la sécurité à l'aide de Bandit (analyse de code Python), CodeQL (détection de vulnérabilités), pip-audit (analyse des dépendances), Safety (vulnérabilités connues), Gitleaks (détection de secrets) et Trivy (analyse d'images Docker). - Documentation des bonnes pratiques de sécurité : ajout d'un SECURITY.md complet couvrant les versions prises en charge, le signalement des vulnérabilités, la gestion des clés API, les considérations de confidentialité des données et les conseils de sécurité de déploiement. - Section Sécurité du README enrichie : conseils de sécurité élargis avec des recommandations claires sur la protection des clés API, les considérations de confidentialité des données et les pratiques de déploiement responsables. |
| Améliorations Docker | - Sécurité renforcée : mise à jour du Dockerfile pour s'exécuter en tant qu'utilisateur non-root, améliorant la posture de sécurité du conteneur. - Prise en charge de Docker Compose : ajout de docker-compose.yml pour un déploiement multi-services rationalisé et une configuration de développement local plus facile. - Meilleure optimisation de la construction : amélioration de .dockerignore pour réduire la taille de l'image et empêcher l'inclusion de fichiers sensibles dans les images conteneur. - Modèle de configuration complet : mise à jour de .env.example avec toutes les clés API prises en charge (OpenAI, Anthropic, Azure, Google, Mistral, Groq) pour une configuration initiale plus facile. |
| Corrections de bugs | - Délai d'expiration de l'API Ollama : ajout d'une configuration de délai d'expiration aux requêtes API Ollama pour empêcher les connexions bloquées. - Mises à jour de l'interface Safety : passage de la commande obsolète safety check à la nouvelle commande safety scan, garantissant la continuité de la fonctionnalité d'analyse de sécurité.- Configuration Bandit : correction de la configuration de l'analyse de sécurité Bandit pour une analyse de code Python plus précise. |
v0.10
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Intégration de l'API Responses d'OpenAI | - API de nouvelle génération : AttackGen utilise désormais la dernière API Responses d'OpenAI pour tous les modèles pris en charge, offrant une interface unifiée et améliorée. |
| Prise en charge des derniers modèles de pointe | - Intégration GPT-5 : ajout de la prise en charge de la dernière série de modèles GPT-5 d'OpenAI, y compris gpt-5, gpt-5-mini et gpt-5-nano, offrant un accès aux capacités d'IA les plus avancées pour la génération de scénarios. - Claude Sonnet 4.5 : ajout de la prise en charge du dernier modèle Claude Sonnet 4.5 d'Anthropic (claude-sonnet-4-5-20250929), ainsi que des versions de modèles Claude mises à jour, y compris Claude Opus 4.1 (claude-opus-4-1-20250805). |
| Corrections de bugs et améliorations | - Correction de l'avertissement de dépréciation Streamlit : remplacement du paramètre obsolète use_container_width par le nouveau paramètre width pour garantir la compatibilité avec les futures versions de Streamlit.- Documentation améliorée : mise à jour de CLAUDE.md avec des conseils complets pour les futurs travaux de développement et ajout d'informations détaillées sur l'architecture. |
v0.9
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Prise en charge élargie des modèles | - Derniers modèles de raisonnement OpenAI : AttackGen prend désormais en charge les nouveaux modèles de raisonnement d'OpenAI, y compris o4-mini (le dernier modèle de raisonnement), o3/o3-mini et o1-pro (capacités de raisonnement améliorées). Ces modèles excellent dans la génération de scénarios complexes nécessitant une réflexion logique approfondie. - Série GPT-4.1 : ajout de la prise en charge des modèles de la série GPT-4.1 (gpt-4.1, gpt-4.1-mini et gpt-4.1-nano), offrant les dernières améliorations des capacités générales de l'IA avec des alternatives plus légères pour les cas d'utilisation sensibles aux coûts. - Modèles Anthropic Claude : ajout d'une prise en charge complète des modèles Claude d'Anthropic, y compris claude-opus-4-20250514, claude-sonnet-4-20250514, claude-3-7-sonnet-latest et claude-3-5-haiku-latest. Ces modèles offrent d'excellentes performances pour générer des scénarios de réponse à incident détaillés et contextuellement pertinents avec de fortes capacités de raisonnement. - Modèles Google AI mis à jour : actualisation de la sélection de modèles Google AI pour inclure les derniers modèles d'aperçu Gemini 2.5 (gemini-2.5-flash-preview-05-20 et gemini-2.5-pro-preview-05-06) aux côtés des modèles Gemini 2.0, offrant un accès aux améliorations les plus récentes de la technologie IA de Google. - Organisation améliorée des modèles : réorganisation des menus déroulants de sélection des modèles pour prioriser les modèles plus récents et mise à jour des descriptions pour distinguer clairement les différents types de modèles et leurs capacités. |
| Logique de sélection des techniques améliorée | - Gestion plus robuste des groupes : correction d'un problème où des groupes d'acteurs de menace vides pouvaient provoquer des erreurs lors de la sélection des techniques. L'outil gère désormais correctement les groupes vides en renvoyant un DataFrame vide, garantissant un fonctionnement stable même avec des données d'acteurs de menace limitées. - Préservation du nom de phase : amélioration du processus de sélection des techniques pour inclure correctement « Phase Name » dans la sortie, conservant les informations de phase de la kill chain tout au long du processus de génération de scénarios. Cela garantit que les scénarios générés maintiennent un contexte approprié sur la phase d'une attaque à laquelle chaque technique appartient. |
| Améliorations de l'environnement de développement | - .gitignore amélioré : ajout de la prise en charge des répertoires d'environnement virtuel .venv en plus de venv, s'adaptant aux différentes préférences des développeurs et aux outils de gestion d'environnement Python.- Nettoyage du code : suppression des importations inutilisées dans les scripts de génération de scénarios, améliorant la maintenabilité du code et réduisant les confusions potentielles. |
v0.8
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Points de terminaison API personnalisés compatibles OpenAI | - Flexibilité accrue : AttackGen prend désormais en charge les points de terminaison API personnalisés compatibles OpenAI comme Anyscale, Together AI ou toute API compatible auto-hébergée. Cette fonctionnalité permet aux utilisateurs de tirer parti d'une gamme plus large de modèles et de services au-delà des fournisseurs officiellement pris en charge. - Prise en charge de l'auto-hébergement : les organisations disposant de leurs propres déploiements de modèles compatibles OpenAI peuvent désormais connecter AttackGen directement à ces points de terminaison. - Contrôle de la sélection des modèles : les utilisateurs peuvent spécifier l'URL de base, le nom du modèle et la clé API pour tout service compatible, offrant un plus grand contrôle sur les modèles et les points de terminaison utilisés pour la génération de scénarios. |
| Sélection de modèles mise à jour | - Accès aux derniers modèles : la sélection de modèles OpenAI inclut désormais les nouveaux modèles de la série GPT-4.1 (gpt-4.1, gpt-4.1-mini, gpt-4.1-nano), offrant des performances améliorées en codage, suivi d'instructions et tâches à contexte long. - Prise en charge Gemini élargie : ajout de la prise en charge des derniers modèles Gemini 2.5 Pro Preview, 2.0 Flash et 2.0 Flash Lite. |
v0.7
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Intégration de l'API Groq | - Performances améliorées : AttackGen prend désormais en charge l'API haute performance de Groq, offrant un accès à des modèles comme llama-3.3-70b-versatile et deepseek-r1-distill-llama-70b. Cette intégration offre des temps d'inférence rapides tout en maintenant une génération de scénarios de haute qualité. - Affichage amélioré de la sortie du modèle : pour les modèles comme DeepSeek qui fournissent un raisonnement en plus de leur sortie, AttackGen affiche désormais ce raisonnement dans un widget expandeur repliable. Cela permet aux utilisateurs de visualiser le processus de réflexion du modèle quand ils le souhaitent tout en gardant la sortie principale du scénario propre et ciblée. |
| Prise en charge des modèles OpenAI mise à jour | - Derniers modèles : AttackGen prend désormais en charge le dernier modèle de raisonnement o3 d'OpenAI et la version GA (disponibilité générale) du modèle o1, remplaçant la version d'aperçu précédente. Ces mises à jour offrent un accès à des modèles plus stables et améliorés pour la génération de scénarios. |
v0.6
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Prise en charge des nouveaux modèles de « raisonnement » d'OpenAI | - Génération de scénarios améliorée : AttackGen prend désormais en charge les nouveaux modèles de « raisonnement » d'OpenAI (o1-preview et o1-mini), permettant la génération de scénarios de réponse à incident très détaillés et nuancés. Ces modèles offrent une meilleure cohérence et une plus grande profondeur dans la création de scénarios. |
| Prise en charge de la matrice MITRE ATT&CK ICS | - Portée élargie : AttackGen prend désormais en charge la génération de scénarios de test de réponse à incident à l'aide de la matrice MITRE ATT&CK ICS (Industrial Control Systems), en plus de la matrice Enterprise. Cela permet aux utilisateurs de créer des scénarios adaptés aux environnements industriels et d'infrastructures critiques. |
| Données sources ATT&CK mises à jour vers v15.1 | - Dernières informations sur les menaces : l'outil utilise désormais les données MITRE ATT&CK les plus récentes (v15.1), garantissant que les scénarios générés reflètent les dernières tactiques, techniques et procédures connues utilisées par les acteurs de la menace. |
| Données des groupes d'acteurs de menace mises à jour | - Couverture complète : les données des groupes ont été mises à jour pour inclure les derniers groupes suivis dans MITRE ATT&CK, comme Scattered Spider. Cela garantit que les utilisateurs peuvent générer des scénarios basés sur les informations les plus récentes sur les acteurs de la menace disponibles. |
| Chargement des clés API / secrets à partir d'un fichier .env | - Sécurité renforcée : les utilisateurs peuvent désormais stocker leurs clés API et autres informations sensibles dans un fichier .env, améliorant la sécurité et facilitant la gestion des identifiants dans différents environnements. |
v0.5.2
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Prise en charge du modèle GPT-4o mini | - Options de modèles élargies : AttackGen prend désormais en charge l'utilisation du modèle GPT-4o mini d'OpenAI. GPT4-o mini est un petit modèle très rentable. |
| Choix de modèles mis à jour pour l'API Google AI | - Options de modèles élargies : AttackGen prend désormais en charge les versions stables et d'aperçu de Gemini 1.5 Pro. |
v0.5.1
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Prise en charge du modèle GPT-4o | - Options de modèles améliorées : AttackGen prend désormais en charge l'utilisation du modèle GPT-4o d'OpenAI. GPT4-o est le modèle leader d'OpenAI, capable de générer des scénarios deux fois plus rapidement que GPT-4 pour moitié moins de coût. |
| Quoi de neuf ? | Pourquoi est-ce utile ? |
| ----------- | ---------------- |
| Assistant AttackGen | - Affinement itératif des scénarios : La nouvelle interface de chat permet aux utilisateurs d'interagir avec leurs scénarios de réponse aux incidents générés, ce qui facilite la mise à jour et le questionnement sur le scénario sans avoir à le régénérer de zéro. Cette fonctionnalité permet une approche itérative du développement de scénarios, où les utilisateurs peuvent affiner et améliorer leurs scénarios en fonction des réponses de l'assistant IA. - Assistance contextuelle : L'assistant IA répond aux requêtes des utilisateurs en se basant sur le contexte du scénario généré et sur l'historique de la conversation. Cela garantit que les réponses de l'assistant sont pertinentes et utiles pour affiner le scénario. |
| Modèles de démarrage rapide pour scénarios personnalisés | - Génération rapide de scénarios : Les utilisateurs peuvent désormais générer rapidement des scénarios de réponse aux incidents personnalisés à partir de modèles prédéfinis pour les types courants de cyberincidents, tels que les attaques de phishing, les attaques par ransomware, les infections par logiciels malveillants et les menaces internes. Cette fonctionnalité facilite la création de scénarios réalistes sans avoir à sélectionner individuellement les techniques ATT&CK. - Flux de travail simplifié : La sélection des modèles est intégrée de manière transparente au processus de génération de scénarios personnalisés. Les utilisateurs peuvent choisir un modèle, qui remplit automatiquement les techniques ATT&CK pertinentes, puis personnaliser davantage le scénario si nécessaire. |
| Intégration de l'API Google AI | - Options de modèles élargies : AttackGen prend désormais en charge l'utilisation des modèles Gemini de Google pour générer des scénarios de réponse aux incidents. Cette intégration élargit la gamme de modèles de haute qualité disponibles pour les utilisateurs, leur permettant de tirer parti des capacités IA de Google pour créer des scénarios réalistes et diversifiés. |
v0.4
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Intégration de l'API Mistral | - Fournisseur de modèles alternatif : Les utilisateurs peuvent désormais exploiter les modèles IA Mistral pour générer des scénarios de réponse aux incidents. Cette intégration offre une alternative aux modèles OpenAI et Azure OpenAI Service, permettant aux utilisateurs d'explorer et de comparer les performances de différents modèles de langage pour leur cas d'utilisation spécifique. |
| Prise en charge des modèles locaux avec Ollama | - Hébergement local de modèles : AttackGen prend désormais en charge l'utilisation de LLM hébergés localement via une intégration avec Ollama. Cette fonctionnalité est particulièrement utile pour les organisations ayant des exigences strictes en matière de confidentialité des données ou celles qui préfèrent conserver leurs données sur site. Veuillez noter que cette fonctionnalité n'est pas disponible pour les utilisateurs de la version d'AttackGen hébergée sur Streamlit Community Cloud à l'adresse https://attackgen.streamlit.app |
| Intégration optionnelle de LangSmith | - Flexibilité améliorée : L'intégration avec LangSmith est désormais optionnelle. Si aucune clé API LangChain n'est fournie, les utilisateurs verront un message informatif indiquant que l'exécution ne sera pas journalisée par LangSmith, plutôt qu'une erreur. Ce changement améliore l'expérience utilisateur globale et permet aux utilisateurs de continuer à utiliser AttackGen sans avoir besoin de LangSmith. |
| Diverses corrections de bugs et améliorations | - Expérience utilisateur améliorée : Cette version inclut plusieurs corrections de bugs et améliorations de l'interface utilisateur, rendant AttackGen plus convivial et plus robuste. |
v0.3
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Intégration d'Azure OpenAI Service | - Intégration améliorée : Les utilisateurs peuvent désormais choisir d'utiliser les modèles OpenAI déployés sur Azure OpenAI Service, en plus de l'API OpenAI standard. Cette intégration offre une solution transparente et sécurisée pour incorporer AttackGen dans les écosystèmes Azure existants, en tirant parti des accords commerciaux et de confidentialité établis. - Sécurité des données améliorée : L'exécution d'AttackGen depuis Azure garantit que les descriptions d'applications et autres données restent dans l'environnement Azure, ce qui le rend idéal pour les organisations qui traitent des données sensibles dans leurs modèles de menaces. |
| LangSmith pour Azure OpenAI Service | - Débogage amélioré : Le traçage LangSmith est désormais disponible pour les scénarios générés à l'aide d'Azure OpenAI Service. Cette fonctionnalité fournit un outil puissant pour le débogage, les tests et la surveillance des performances du modèle, permettant aux utilisateurs d'obtenir des informations sur le processus de prise de décision du modèle et d'identifier les problèmes potentiels avec les scénarios générés. - Retour utilisateur : LangSmith capture également les retours des utilisateurs sur la qualité des scénarios générés à l'aide d'Azure OpenAI Service, fournissant des informations précieuses sur les performances du modèle et la satisfaction des utilisateurs. |
| Sélection de modèles pour l'API OpenAI | - Options de modèles flexibles : Les utilisateurs peuvent désormais sélectionner parmi plusieurs modèles disponibles à partir du point de terminaison de l'API OpenAI, tels que gpt-4-turbo-preview. Cela permet une plus grande personnalisation et expérimentation avec différents modèles de langage, permettant aux utilisateurs de trouver le modèle le plus adapté à leur cas d'utilisation spécifique. |
| Image de conteneur Docker | - Déploiement facile : AttackGen est désormais disponible sous forme d'image de conteneur Docker, ce qui facilite le déploiement et l'exécution de l'application dans un environnement cohérent et reproductible. Cette fonctionnalité est particulièrement utile pour les utilisateurs qui souhaitent exécuter AttackGen dans un environnement conteneurisé, ou pour ceux qui souhaitent déployer l'application sur une plateforme cloud. |
v0.2
| Quoi de neuf ? | Pourquoi est-ce utile ? |
|---|---|
| Scénarios personnalisés basés sur les techniques ATT&CK | - Pour les organisations matures : Cette fonctionnalité est particulièrement bénéfique si votre organisation dispose de capacités avancées de renseignement sur les menaces. Par exemple, si vous surveillez un groupe d'acteurs de menaces nouvellement identifié ou moins connu, vous pouvez adapter les scénarios de test de réponse aux incidents aux techniques spécifiques utilisées par ce groupe. - Tests ciblés : Alternativement, utilisez cette fonctionnalité pour concentrer vos tests de réponse aux incidents sur des parties spécifiques de la chaîne de cyberattaque ou sur certaines tactiques MITRE ATT&CK comme « Mouvement latéral » ou « Exfiltration ». Cela est utile pour les organisations cherchant à évaluer et améliorer des domaines spécifiques de leur posture de défense. |
| Retour utilisateur sur les scénarios générés | - La collecte de retours est essentielle pour suivre les performances du modèle au fil du temps et aide à mettre en évidence les forces et les faiblesses des tâches de génération de scénarios. |
| Gestion améliorée des erreurs pour les clés API manquantes | - Expérience utilisateur améliorée. |
Remplacement des widgets st.spinner de Streamlit par le nouveau widget st.status | - Offre une meilleure visibilité sur les processus de longue durée (c'est-à-dire la génération de scénarios). |
v0.1
Version initiale.
Prérequis
- Version récente de Python.
- Paquets Python :
streamlit,litellm,mitreattack-python,pandas(voirrequirements.txtpour la liste complète). - Clé API OpenAI (ou clé API pour votre fournisseur de modèles choisi).
- Clé API LangChain (optionnelle) - voir la section Configuration LangSmith ci-dessous pour plus de détails.
- Fichiers de données MITRE ATT&CK et ATLAS. Ceux-ci sont fournis avec le dépôt (dans
./data/), donc aucun téléchargement manuel n'est requis (voir Configuration des données). - Fichier
.envpour stocker les clés API et les secrets (voir la section Installation pour plus de détails).
Installation
Option 1 : Clonage du dépôt
- Clonez ce dépôt :``` git clone https://github.com/mrwadams/attackgen.git
2. Changez de répertoire pour entrer dans le dépôt cloné :```
cd attackgen
- Installez les paquets Python requis :``` pip install -r requirements.txt
### Option 2 : Utilisation de Docker
1. Tirez l'image du conteneur Docker depuis Docker Hub :```
docker pull mrwadams/attackgen
Configuration de LangSmith
Si vous souhaitez utiliser LangSmith pour le débogage, les tests et le suivi des performances du modèle, vous devrez créer un compte LangSmith et créer un fichier .streamlit/secrets.toml contenant votre clé API LangChain. Veuillez suivre les instructions ici pour configurer votre compte et obtenir votre clé API. Vous trouverez un fichier secrets.toml-example dans le répertoire .streamlit/ que vous pouvez utiliser comme modèle pour votre propre fichier secrets.toml.
Si vous ne souhaitez pas utiliser LangSmith, vous devez néanmoins disposer d'un fichier .streamlit/secrets.toml en place, mais vous pouvez laisser le champ LANGCHAIN_API_KEY vide.
Configuration des données
Les ensembles de données MITRE ATT&CK (Enterprise + ICS) et ATLAS dont AttackGen a besoin sont inclus dans le dépôt sous ./data/, de sorte qu'un nouveau clone est prêt à fonctionner sans étape de téléchargement supplémentaire. Ils incluent enterprise-attack.json, ics-attack.json, stix-atlas.json, groups.json, groups_ics.json et atlas-case-studies.json.
Si vous souhaitez les actualiser vers la dernière version en amont, vous pouvez re-télécharger les bundles STIX depuis le dépôt de données STIX de MITRE ATT&CK (et le dépôt de données ATLAS) et remplacer les fichiers dans ./data/.
Exécution d'AttackGen
Après la configuration des données, vous pouvez exécuter AttackGen avec la commande suivante :``` streamlit run 00_👋_Welcome.py
Vous pouvez aussi essayer l'application sur [Streamlit Community Cloud](https://attackgen.streamlit.app/).
## Serveur MCP
AttackGen est fourni avec un serveur [MCP](https://modelcontextprotocol.io/) afin que les workflows agentiques (Claude Code, Claude Desktop, Cursor et autres clients MCP) puissent piloter la génération de scénarios sans l'interface Streamlit. Il expose **deux niveaux d'outils** :
- **Outils de données — pas de clé API, pas d'appel LLM.** Ils exposent les données MITRE d'AttackGen : lister les groupes de menace / études de cas ATLAS, résoudre la chaîne de frappe d'un groupe, construire le rapport Detection & Response de l'équipe purple, produire une couche ATT&CK Navigator, et lister les options d'insider threat IA. `list_ai_insider_options` renvoie chaque modèle de démarrage rapide avec les sélections et le brief narratif qu'il applique, afin que `get_ai_insider_prompt` / `generate_ai_insider_scenario` puissent être appelés avec simplement `template=` plus votre secteur d'activité et la taille de votre entreprise. Lorsque c'est utile, ils renvoient aussi une invite prête à l'emploi, de sorte que **le modèle propre de votre client** puisse rédiger le scénario — ce qui signifie qu'ils fonctionnent même si vous n'avez pas de clé API de fournisseur séparée. C'est la surface qu'il est sûr d'héberger via HTTP.
- **Outils de génération — apportez votre propre clé.** `generate_threat_group_scenario`, `generate_custom_scenario` et `generate_ai_insider_scenario` appellent un serveur LLM côté serveur et renvoient un scénario Markdown terminé. Le fournisseur, le modèle et la clé sont fournis à chaque appel ; si vous omettez `api_key`, LiteLLM revient à la variable d'environnement correspondante (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, …) — c'est-à-dire **votre propre** clé. Comme ces outils lisent les identifiants depuis l'environnement du processus, conservez-les sur **stdio local** et ne les exposez pas sur un hôte partagé.
### Installation et exécution
La dépendance `mcp` est incluse dans `requirements.txt`. Installez le projet (une installation éditable vous donne aussi le script console `attackgen-mcp`) :```
pip install -r requirements.txt
# optional, for the console script:
pip install -e .
Lancez le serveur (stdio) :``` python -m mcp_server # or: attackgen-mcp
### Ajoutez-le à un client
**Claude Code :**```
claude mcp add attackgen -- python -m mcp_server
Claude Desktop (claude_desktop_config.json) — les clés vont dans env :```json
{
"mcpServers": {
"attackgen": {
"command": "python",
"args": ["-m", "mcp_server"],
"cwd": "/absolute/path/to/attackgen",
"env": {
"OPENAI_API_KEY": "sk-...",
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
Vous pouvez définir `ATTACKGEN_PROVIDER` et `ATTACKGEN_MODEL` dans `env` pour donner aux outils de génération un fournisseur/modèle par défaut afin que les appelants n'aient pas à les transmettre à chaque fois. Les bundles MITRE volumineux se chargent paresseusement lors du premier appel à un outil de données, de sorte que le serveur démarre instantanément.
## Compétences de l'agent
Associée au serveur MCP se trouve une **[compétence d'agent](https://github.com/mrwadams/attackgen/blob/main/skills)**, `attackgen-tabletop`, qui transforme les données d'AttackGen en exercice de réponse à incident (tabletop) prêt pour l'animateur.
À partir d'un groupe de menace ou d'une étude de cas ATLAS, la compétence produit un tabletop complet / liste de maître des événements du scénario (MSEL) — récit du scénario, chaîne de frappe mappée par phase, injections horodatées, questions de discussion NIST SP 800-61 et un tableau de bord de couverture de détection — au format Markdown ou en rapport HTML autonome et imprimable.
Elle couvre également le chemin de la **menace interne liée à l'IA** : lorsque l'adversaire est un agent d'IA de pointe déployé au sein de l'organisation, la compétence travaille à partir de `list_ai_insider_options` et `get_ai_insider_prompt` au lieu d'une chaîne de frappe. L'exercice conserve la même structure en six sections, mais son épine dorsale est le périmètre de menace STRIDE et l'archétype de déploiement, son tableau de bord de détection est évalué par rapport à la posture de détection de cet archétype, et les `required_decisions` d'un modèle deviennent des questions de discussion obligatoires.
La division du travail est délibérée : les **outils de données** MCP fournissent les faits (chaque technique ou identifiant STRIDE remonte à un résultat d'outil) et la compétence fournit l'art de l'exercice, de sorte qu'elle s'exécute sur le propre modèle de votre client **sans clé API supplémentaire**. Connectez le serveur MCP (ci-dessus), puis pointez un client compatible avec les compétences tel que Claude Code ou Claude Desktop vers le répertoire [`skills/`](https://github.com/mrwadams/attackgen/blob/main/skills). Consultez [`skills/README.md`](https://github.com/mrwadams/attackgen/blob/main/skills/README.md) pour les emplacements d'installation et les détails propres à chaque client.
## Utilisation
### Exécution d'AttackGen
#### Option 1 : Exécution de l'application Streamlit en local
1. Exécutez l'application Streamlit :```
streamlit run 00_👋_Welcome.py
- Ouvrez votre navigateur web et accédez à l’URL fournie par Streamlit.
- Utilisez l’application pour générer des scénarios de réponse aux incidents standard ou personnalisés (voir ci-dessous pour plus de détails).
Option 2 : Utilisation de l’image conteneur Docker
- Exécutez le conteneur Docker :``` docker run -p 8501:8501 mrwadams/attackgen
Cette commande démarrera le conteneur et mappera le port 8501 (par défaut pour les applications Streamlit) du conteneur vers votre machine hôte.
2. Ouvrez votre navigateur web et accédez à `http://localhost:8501`.
3. Utilisez l'application pour générer des scénarios de réponse aux incidents standard ou personnalisés (voir ci-dessous pour plus de détails).
### Génération de scénarios
#### Génération de scénarios standard
1. Choisissez d'utiliser l'API OpenAI, l'API Anthropic, l'API Google AI, l'API Mistral, l'API Groq ou un point de terminaison personnalisé compatible OpenAI (pour Ollama, LM Studio, les déploiements Azure OpenAI, OpenRouter, etc.).
2. Saisissez votre clé API pour le fournisseur choisi. Pour le fournisseur personnalisé, saisissez également l'URL de base et le nom du modèle.
3. Sélectionnez votre modèle préféré dans la liste déroulante.
4. Sélectionnez le secteur d'activité et la taille de votre organisation dans les menus déroulants.
5. Accédez à la page `Threat Group Scenarios`.
6. Sélectionnez le groupe d'acteurs de la menace que vous souhaitez simuler.
7. Cliquez sur « Generate Scenario » pour créer le scénario de réponse aux incidents.
8. Utilisez les boutons 👍 ou 👎 pour donner votre avis sur la qualité du scénario généré. N.B. Les boutons de retour d'information n'apparaissent que si une valeur pour LANGCHAIN_API_KEY a été définie dans le fichier `.streamlit/secrets.toml`.
#### Génération de scénarios personnalisés
1. Choisissez d'utiliser l'API OpenAI, l'API Anthropic, l'API Google AI, l'API Mistral, l'API Groq ou un point de terminaison personnalisé compatible OpenAI.
2. Saisissez votre clé API pour le fournisseur choisi. Pour le fournisseur personnalisé, saisissez également l'URL de base et le nom du modèle.
3. Sélectionnez votre modèle préféré dans la liste déroulante.
4. Sélectionnez le secteur d'activité et la taille de votre organisation dans les menus déroulants.
5. Accédez à la page `Custom Scenario`.
6. Utilisez la zone de sélection multiple pour rechercher et sélectionner les techniques ATT&CK pertinentes pour votre scénario.
7. Cliquez sur « Generate Scenario » pour créer votre scénario de test de réponse aux incidents personnalisé en fonction des techniques sélectionnées.
8. Utilisez les boutons 👍 ou 👎 pour donner votre avis sur la qualité du scénario généré. N.B. Les boutons de retour d'information n'apparaissent que si une valeur pour LANGCHAIN_API_KEY a été définie dans le fichier `.streamlit/secrets.toml`.
#### Génération de scénarios de menace interne liée à l'IA
1. Choisissez votre fournisseur de modèles et saisissez la clé API correspondante (utilisez le fournisseur personnalisé pour les déploiements Azure OpenAI ou les modèles locaux).
2. Sélectionnez votre modèle préféré dans la liste déroulante.
3. Sélectionnez le secteur d'activité et la taille de votre organisation dans les menus déroulants.
4. Accédez à la page `AI Insider Threat Scenarios`.
5. (Facultatif) Choisissez un modèle pour pré-remplir l'archétype de déploiement, les catégories de menaces et les menaces STRIDE pour un scénario courant.
6. Choisissez l'**archétype de déploiement** qui reflète le degré d'autonomie avec lequel l'agent IA opère au sein de votre organisation (par exemple, assistant supervisé, agent autonome, flotte entièrement autonome). C'est le principal facteur déterminant de la surface de menace de l'agent.
7. Sélectionnez une ou plusieurs **catégories de menaces** (Compromission d'identifiants, Sabotage de la chaîne d'approvisionnement, Exfiltration de données, Sabotage des infrastructures, Tromperie et évasion).
8. (Facultatif) Affinez le scénario en ciblant des menaces **STRIDE** spécifiques. Si laissé vide, les menaces STRIDE associées à vos catégories sélectionnées sont utilisées automatiquement. Il s'agit des 23 menaces STRIDE issues de l'article sous-jacent.
9. (Facultatif) Ajustez les **capacités de l'agent de pointe** mises en évidence dans l'invite.
10. Cliquez sur « Generate Scenario ». La sortie comprend un récit d'attaque mappé aux identifiants STRIDE, des opportunités de détection et des contrôles recommandés alignés sur le NIST CSF.
11. Utilisez les boutons 👍 ou 👎 pour donner votre avis (nécessite LANGCHAIN_API_KEY).
Le modèle de menace derrière cette page est décrit dans [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk).
Veuillez noter que la génération de scénarios peut prendre environ une minute. Une fois le scénario généré, vous pouvez le visualiser dans l'application et également le télécharger sous forme de fichier Markdown.
## Bonnes pratiques de sécurité
AttackGen est conçu pour un déploiement local et mono-utilisateur. Lorsque vous utilisez l'outil :
### Protection de vos clés API
**Vos clés API sont des identifiants sensibles qui peuvent entraîner des frais sur votre compte.**
✅ **À FAIRE :**
- Saisissez les clés API via l'interface utilisateur (elles restent dans votre session de navigateur)
- Utilisez le fichier .env pour plus de commodité sur votre machine personnelle
- Définissez des limites de dépenses dans le tableau de bord de votre fournisseur de LLM
- Examinez régulièrement votre utilisation et vos coûts d'API
- Effacez la session lorsque vous utilisez des ordinateurs partagés
❌ **À NE PAS FAIRE :**
- Committer les fichiers .env dans le contrôle de version (déjà dans .gitignore)
- Partager des captures d'écran avec des clés API visibles
- Exécuter AttackGen sur des systèmes non fiables/compromis
- Partager vos clés API avec d'autres personnes
- Ignorer des frais d'API inattendus
### Considérations relatives à la confidentialité des données
Lorsque vous générez des scénarios, AttackGen envoie des données à votre fournisseur de LLM choisi :
- Détails de l'organisation (secteur d'activité, taille de l'entreprise)
- Techniques ATT&CK sélectionnées
- Texte de saisie personnalisé
- Scénarios générés (via l'assistant AttackGen)
**Ce que cela signifie :**
- OpenAI, Anthropic, etc. peuvent journaliser ces données conformément à leurs politiques de confidentialité
- Envisagez d'utiliser des détails d'organisation génériques/fictifs pour les démonstrations
- Examinez les politiques de conservation des données et de confidentialité de votre fournisseur de LLM
- Pour les cas d'utilisation sensibles, envisagez des fournisseurs offrant des garanties de confidentialité plus strictes
### Pour les déploiements en équipe/organisation
Si vous déployez AttackGen pour plusieurs utilisateurs (ce qui n'est pas le cas d'utilisation par défaut) :
- Ajoutez une authentification/autorisation (non incluse par défaut)
- Utilisez un service de gestion des secrets pour les clés API
- Déployez derrière un VPN ou un réseau interne
- Examinez ce document de modèle de menace pour des considérations supplémentaires
- Tenez compte des exigences de résidence des données et de conformité
### Sécurité des dépendances
Nous maintenons les dépendances et surveillons les vulnérabilités :
- Les dépendances sont mises à jour régulièrement
- Les avis de sécurité sont suivis dans les problèmes GitHub
- Exécutez `pip list --outdated` pour vérifier les mises à jour
- Envisagez d'utiliser `pip-audit` pour l'analyse des vulnérabilités
### Signalement des problèmes de sécurité
Vous avez trouvé un problème de sécurité ? Veuillez le signaler de manière responsable :
- Créez un avis de sécurité via le [signalement privé de vulnérabilités](https://github.com/mrwadams/attackgen/security/advisories/new) de GitHub
- Ne publiez pas les problèmes de sécurité publiquement
- Nous accuserons réception sous 48 heures
- Les correctifs seront priorisés et publiés rapidement
## Contribution
Je suis très heureux d'accepter des contributions à ce projet. N'hésitez pas à soumettre un problème ou une demande d'extraction.
## Licence
Ce projet est sous licence [GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/).