Torna agli aggiornamenti
New releaseAug 7, 2026

attackgen v0.15.0

AttackGen è uno strumento di test per la risposta agli incidenti di cybersecurity che sfrutta la potenza dei grandi modelli linguistici e il completo framework MITRE ATT&CK. Lo strumento genera scenari di risposta agli incidenti su misura basati sui gruppi di attori minacciosi selezionati dall'utente e sui dettagli della tua organizzazione.

Condividi

AttackGen

AttackGen è uno strumento di test per la risposta agli incidenti di cybersicurezza che sfrutta la potenza dei grandi modelli linguistici e i framework completi MITRE ATT&CK e ATLAS. Lo strumento genera scenari di risposta agli incidenti personalizzati in base ai gruppi di attori delle minacce selezionati dall'utente, ai case study sugli attacchi AI e ai dettagli della vostra organizzazione.

Indice

Metti una stella al repository

Se trovi AttackGen utile, prendi in considerazione l'idea di mettere una stella al repository su GitHub. Questo aiuta più persone a scoprire lo strumento. Il tuo supporto è molto apprezzato! ⭐

Funzionalità

  • Genera scenari unici di risposta agli incidenti in base ai gruppi di attori delle minacce scelti o ai case study ATLAS.
  • Consente di specificare le dimensioni e il settore della vostra organizzazione per uno scenario personalizzato.
  • Supporta i framework MITRE ATT&CK Enterprise, ICS (Industrial Control Systems) e ATLAS (Adversarial Threat Landscape for AI Systems).
  • Visualizza un elenco dettagliato delle tecniche utilizzate dal gruppo di attori delle minacce o dal case study selezionato.
  • Crea scenari personalizzati in base a una selezione di tecniche ATT&CK o ATLAS.
  • Usa i modelli di scenario per generare rapidamente scenari personalizzati basati su tipi comuni di incidenti informatici, inclusi i pattern di attacco specifici per AI/ML.
  • Genera AI Insider Threat Scenarios - esercitazioni di risposta agli incidenti in cui un agente IA di frontiera distribuito all'interno della vostra organizzazione si comporta come una minaccia interna, sulla base del modello di minaccia di Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents. Gli scenari sono modellati dall'archetipo di distribuzione dell'agente (livello di autonomia), dalla categoria di minaccia, dalle minacce STRIDE e da un seed facoltativo dello scenario in testo libero.
  • AttackGen Assistant - un'interfaccia chat per aggiornare gli scenari generati e/o porre domande sugli stessi.
  • Acquisisce il feedback degli utenti sulla qualità degli scenari generati.
  • Scenari scaricabili in formato Markdown.
  • Usa l'API OpenAI, l'API Anthropic (modelli Claude), l'API Google AI, l'API Mistral, l'API Groq o qualsiasi endpoint personalizzato compatibile con OpenAI (Ollama, LM Studio, Azure OpenAI, OpenRouter, ecc.) per generare scenari di risposta agli incidenti. Tutti i provider vengono instradati tramite LiteLLM dietro un unico wrapper interno, quindi aggiungere un nuovo modello richiede una modifica di una sola riga.
  • Disponibile come immagine container Docker per una distribuzione semplice.
  • Integrazione opzionale con LangSmith per potenti funzionalità di debug, test e monitoraggio delle prestazioni del modello.
  • Gestione sicura delle credenziali tramite file .env per chiavi API e segreti.

Schermata di AttackGen

Versioni

v0.15

Cosa c'è di nuovo?Perché è utile?
Preset di fuga dall'ambiente di valutazione e seed dello scenario- Esercitarsi su un incidente specifico: un nuovo modello AI insider-threat consente di esercitarsi su un agente di valutazione che raggiunge sistemi reali partendo da un ambiente presunto isolato — imponendo il contenimento, la rotazione delle credenziali, la notifica alle terze parti e la conservazione delle prove. Copre le rivelazioni di luglio 2026 sugli agenti di valutazione fuggiti dalle loro sandbox, dove il confine di isolamento era presunto piuttosto che imposto.

- I modelli ora arrivano al prompt: i modelli di avvio rapido in precedenza si limitavano a precompilare i widget della pagina e non influenzavano mai lo scenario generato. Ora includono un brief narrativo e i required_decisions che le Discussion Questions devono forzare, entrambi integrati nel prompt — così un modello produce un tabletop temporizzato utilizzabile invece di un guazzabuglio di domande. Questo li divide in due classi: i sei modelli archetipo originali impostano solo le decisioni, quindi il modello inventa la premessa e rieseguirne uno produce un nuovo esercizio per lo stesso profilo di minaccia; i modelli incident impostano anche un brief, fissando la situazione.

- Seed dello scenario in testo libero: una casella di seed facoltativa nella pagina AI Insider Threat guida la narrazione su qualsiasi scenario. La selezione di un modello la precompila e potete modificarla o scriverne una da zero.

- Tassonomia estesa a 27 minacce / 6 categorie: aggiunge una sesta categoria di minaccia (Containment & Third-Party Impact) e quattro minacce STRIDE su cui si basa l'esercizio — S5 replay delle credenziali del carico di lavoro riutilizzabili, R4 soppressione della telemetria lato agente, I5 compromissione di terze parti e a valle, ed E5 errore di garanzia del confine di contenimento. AttackGen ora estende il modello di minaccia pubblicato invece di replicarlo.

- Modelli utilizzabili tramite MCP: get_ai_insider_prompt e generate_ai_insider_scenario accettano template= e scenario_seed=, e list_ai_insider_options restituisce ogni modello con le selezioni e il brief che applica — così un client può scegliere un preset in base ai suoi meriti e chiamare con un semplice modello, settore e dimensioni dell'azienda. In precedenza i nomi dei modelli erano elencati ma nessuno strumento li accettava.
Skill attackgen-tabletop: percorso AI Insider-Threat- Un secondo percorso di esercitazione: l'Agent Skill ora costruisce un tabletop sia dal modello AI insider-threat sia da una kill chain MITRE. Scegliete un modello di avvio rapido (o un archetipo di distribuzione e categorie di minaccia) e la skill trasforma il payload di get_ai_insider_prompt in un MSEL.

- Stessa forma, ossatura diversa: l'esercizio mantiene le stesse sei sezioni, ma la tabella della kill chain diventa un profilo dell'agente e un ambito di minacce STRIDE, la scheda di valutazione del rilevamento viene giudicata sulla base della postura di rilevamento dell'archetipo di distribuzione — così le righe che non scatterebbero diventano l'esito — e le decisioni richieste dal modello diventano domande di discussione obbligatorie.

- Percorso scelto per voi: la descrizione della skill ora si attiva su formulazioni relative ad agenti canaglia (rogue agent), quindi chiedere un "tabletop AI insider threat" porta al percorso giusto. Un attore esterno con tradecraft potenziato dall'IA rimane sul percorso MITRE.

- Risposta, non exploit: entrambi i percorsi sono esplicitamente limitati a esercitare le decisioni che un team di risposta deve prendere — nessun codice di exploit, payload o vulnerabilità reali non patchate — e il percorso IA attribuisce il comportamento dell'agente a configurazione, accessi e obiettivo, piuttosto che a motivazioni umane.
Correzione: i prompt MCP AI-Insider omettevano le capability dell'agente- Stesso modello, stesso prompt: il blocco delle capability dell'agente di frontiera — le righe basate sui benchmark che rendono credibile uno scenario AI insider — veniva omesso da ogni chiamata get_ai_insider_prompt / generate_ai_insider_scenario che non nominava capabilities esplicitamente. Nessun modello le fornisce, quindi l'argomento restava vuoto e il prompt sostituiva una riga generica del tipo "assumi un agente di codifica di frontiera capace", mentre la pagina 3 inviava tutte e quattro le capability per lo stesso modello.

- I default ora corrispondono all'app: omettere capabilities applica il set completo, come fa la multiselezione della pagina. Passare [] le lascia comunque non specificate, quindi l'esclusione deliberata rimane invariata.
Correzione: generazione di scenari con Anthropic Claude 4.7+- Tutti i modelli Claude funzionano di nuovo: Claude 4.7 e versioni successive rifiutano qualsiasi temperature di campionamento, restituendo BadRequestError: 'temperature' is deprecated for this model. Quattro dei cinque modelli Anthropic elencati — Fable 5, Opus 4.8, Sonnet 5 e Opus 4.7 — non riuscivano a generare uno scenario su nessuna pagina; solo Haiku 4.5 funzionava.

- Gestito per modello, non per provider: la regola sulla temperatura veniva in precedenza instradata dal provider, che non può rappresentare un provider i cui modelli hanno comportamenti diversi. ModelInfo.supports_temperature ora contrassegna i modelli che la rifiutano, quindi Haiku 4.5 mantiene la sua temperatura configurata mentre i modelli fratelli la omettono. OpenAI rimane una regola a livello di provider (ogni attuale modello chat è un reasoning model), e i modelli non registrati — endpoint locali Ollama / LM Studio — ricevono ancora una temperatura.

v0.14

Cosa c'è di nuovo?Perché è utile?
Server MCP per client agentici- Generazione di scenari come strumenti: un nuovo server FastMCP (mcp_server.py, SDK mcp ufficiale) espone AttackGen a client agentici tramite stdio, così un assistente come Claude Code o Claude Desktop può recuperare i dati MITRE e generare scenari senza l'interfaccia Streamlit.

- Due livelli: i data tools (list_threat_groups, list_case_studies, get_kill_chain, get_detection_report, get_navigator_layer, list_ai_insider_options, get_ai_insider_prompt) non effettuano chiamate LLM e non richiedono chiavi API — restituiscono dati MITRE strutturati e, dove utile, un prompt pronto all'uso, quindi sono sicuri da ospitare su HTTP. I generate tools (generate_threat_group_scenario, generate_custom_scenario, generate_ai_insider_scenario) richiedono una configurazione bring-your-own-key e restituiscono Markdown finito — teneteli su stdio locale.

- Implementazione condivisa: il server riutilizza gli stessi builder headless core/prompts.py e i caricatori core/attack_data.py usati dalle pagine Streamlit, quindi gli scenari corrispondono all'app invece di discostarsi. Avviatelo con python -m mcp_server o con lo script console attackgen-mcp.
Agent Skill attackgen-tabletop- Tabletop pronti per il facilitatore: una nuova Agent Skill si basa sui data tools MCP per trasformare un gruppo di minaccia o un case study MITRE ATT&CK/ATLAS in un tabletop IR / MSEL completo — narrazione dello scenario, kill chain mappata per fasi, inject con timestamp, domande di discussione NIST SP 800-61 e una scheda di valutazione della copertura di rilevamento.

- Funziona sul modello del chiamante: la skill fornisce le competenze per l'esercizio mentre il server MCP fornisce i dati, quindi gira sul modello del client senza chiavi API aggiuntive.

- Due formati di output: consegnato come Markdown (predefinito) o come report HTML autonomo e ottimizzato per la stampa.
L'Assistant affina l'output Detection & Response- Modifica Purple-Team: l'AttackGen Assistant ora può affinare la narrazione Detection & Response, non solo lo scenario. Quando uno scenario viene generato con l'interruttore 🟣 di narrazione Purple-team (pagine Threat Group / Custom), sulla pagina dell'Assistant compare un selettore Editing: che consente alla chat di puntare allo scenario o al walkthrough del difensore — in precedenza l'Assistant aveva solo il testo dello scenario.

- Modalità di modifica combinata: una terza opzione Scenario + Detection & Response affina entrambi insieme, così una modifica trasversale — un settore diverso, un attore della minaccia, una tecnica o una timeline differenti — viene applicata coerentemente allo scenario dell'attaccante e alla narrazione del difensore, invece di essere effettuata due volte e divergere.

- I fatti deterministici restano intatti: solo la narrazione LLM è un obiettivo di affinamento; il join locale STIX per il rilevamento non viene mai modificato dall'LLM. Ogni modalità di modifica mantiene la propria cronologia chat e la passata combinata viene etichettata purple_team_narrative in LangSmith.
Registro dei modelli più semplice- Una cosa in meno per modello: il kwarg max_completion_tokens e la regola sulla temperatura dei reasoning model ora vengono instradati dal provider invece che da un flag per-modello uses_max_completion_tokens — ogni attuale modello chat OpenAI li usa, quindi il flag duplicava un dato che la chiave del provider già conteneva. Aggiungere un nuovo modello OpenAI resta una modifica di una sola voce a MODELS, senza flag aggiuntivi da ricordare.

- Nessun cambiamento di comportamento: solo una semplificazione interna — il wrapper costruisce identici kwarg LiteLLM per ogni modello attuale.

v0.13.1

Cosa c'è di nuovo?Perché è utile?
Correzione: generazione di scenari con OpenAI GPT-5.x- Gestione corretta dei reasoning model: i reasoning model GPT-5.x di OpenAI rifiutano qualsiasi temperature di campionamento diversa da quella predefinita, quindi ogni generazione GPT-5.x falliva con BadRequestError: 'temperature' does not support 0.7 with this model. AttackGen non invia più una temperatura personalizzata a questi modelli, mentre gli altri provider mantengono il valore configurato.
Aggiornamento del registro dei modelli- Modelli più recenti: elenco dei modelli aggiornato in base alla documentazione attuale di ogni provider — OpenAI GPT-5.6 (livelli Sol / Terra / Luna), Claude Fable 5 e Claude Sonnet 5, con una generazione precedente mantenuta per provider per continuità.

- Voci obsolete rimosse: eliminati i modelli che i provider hanno sostituito o stanno ritirando — in particolare qwen3-32b di Groq (disattivato il 17 lug 2026) e Magistral Medium di Mistral — così la barra laterale non può offrire un modello che genera un errore alla selezione.

- Aggiunto un livello Groq veloce/economico (llama-3.1-8b-instant).

v0.13

Cosa c'è di nuovo?Perché è utile?
Modalità Purple-Team: Detection & Response- Controparte difensiva: ogni scenario Threat Group e Custom ora presenta una sezione Detection & Response che collega ciascuna tecnica dello scenario alle strategie di rilevamento, alle analitiche, alle sorgenti di log e alle mitigazioni MITRE ATT&CK già presenti nei dati inclusi — trasformando una narrazione solo red in un esercizio purple-team ("ecco l'attacco, ed ecco esattamente cosa il vostro SOC avrebbe dovuto vedere").

- Nessuna chiamata LLM per i fatti: la sezione di rilevamento è un join locale dei dati, non una chiamata al modello — quindi le analitiche, le sorgenti di log e le mitigazioni elencate sono i contenuti MITRE reali e attuali, non ipotesi del modello. Viene offerta come download dedicato ..._detection.md insieme allo scenario e al layer.

- Sorgenti di log da abilitare: un riepilogo per scenario elenca le sorgenti di log distinte lette dai rilevamenti (es. WinEventLog:Security (EventCode=4624)), così un SOC può vedere a colpo d'occhio quale telemetria l'esercizio presuppone.

- Narrazione Purple-Team opzionale: un interruttore 🟣 Purple-team narrative per pagina aggiunge una seconda passata del modello che ripercorre lo scenario fase per fase dal lato del difensore — cosa dovrebbe scattare, cosa vede l'analista, come rispondere — basandosi strettamente sui rilevamenti e sulle mitigazioni sopra indicati (nessun rilevamento inventato).

- Consapevole di ATLAS: gli scenari ATLAS elencano le mitigazioni (ATLAS non ha ancora strategie di rilevamento) e lo dichiarano, invece di non mostrare nulla.
MITRE ATT&CK v19.1 e dati ATLAS più recenti- Framework aggiornati: dati MITRE ATT&CK Enterprise e ICS aggiornati da v18.1 a v19.1, e MITRE ATLAS aggiornato all'ultima release, così gli scenari generati riflettono tattiche, tecniche e case study attuali.

- Elenchi dei gruppi aggiornati: i menu a tendina dei gruppi di minaccia vengono rigenerati dai bundle v19.1 (174 gruppi attivi Enterprise e 14 ICS). I gruppi che MITRE ha revocato o unito a monte (es. APT34 → OilRig, UNC2452 → APT29) non compaiono più, mentre compaiono i nuovi gruppi monitorati come MirrorFace.

- Più case study ATLAS: la libreria dei case study ATLAS è cresciuta a 57 (17 incidenti, 40 esercizi).

- Aggiornamento ripetibile: un nuovo scripts/generate_groups.py rigenera le mappature dei gruppi dai bundle STIX inclusi, completando lo script esistente per i case study ATLAS — così il prossimo aggiornamento è un passaggio scriptato invece di una curatela manuale.
Esportazione del layer ATT&CK Navigator- Layer scaricabile: ogni scenario generato nelle pagine Threat Group e Custom Scenario ora offre un layer ATT&CK Navigator (.json) insieme al download Markdown, così le tecniche di uno scenario possono essere visualizzate, annotate e condivise nell'ATT&CK Navigator. Per visualizzarlo, scaricate il layer e apritelo tramite Open Existing Layer → Upload from local nel Navigator.

- Tutte e tre le matrici: il dominio Navigator corretto viene impostato automaticamente per ogni matrice — caricate i layer Enterprise e ICS nel MITRE ATT&CK Navigator e i layer ATLAS nel fork ATLAS Navigator. (Un layer ATLAS non verrà caricato nell'ATT&CK Navigator, o viceversa, poiché ciascuno riconosce solo il proprio dominio.)

- Le tecniche restano visibili: le sotto-tecniche valutate espandono automaticamente il loro genitore e gli ID delle tecniche vengono mostrati nel layout, così le tecniche evidenziate dello scenario sono immediatamente evidenti invece di essere nascoste in righe compresse.

- Nessuna chiamata LLM aggiuntiva: il layer è una serializzazione locale delle tecniche già selezionate per lo scenario — nessuna chiamata al modello o ricerca esterna aggiuntiva.

- Nomi di file descrittivi per i download: i download di scenari e layer ora prendono il nome dall'attore della minaccia / scenario personalizzato e dalla matrice con un timestamp di generazione (es. AttackGen_APT29_Enterprise_20260714-153045.md), così i file salvati sono significativi e non collidono tra scenari.
NovitàA cosa serve?
----------------------------
Scenari AI di minaccia interna- Nuovo tipo di scenario: una pagina dedicata genera esercitazioni tabletop di risposta agli incidenti in cui un agente AI di frontiera distribuito all'interno della tua organizzazione si comporta come una minaccia interna — tramite disallineamento, reward hacking, obiettivi emergenti o compromissione tramite prompt injection. Basato sul modello di minaccia di Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents.

- Guidato dagli archetipi di distribuzione: gli scenari sono modellati dal livello di autonomia dell'agente (da L1 assistente supervisionato a L4 flotta completamente autonoma), che è il fattore primario della sua superficie d'attacco e della sua postura di rilevamento.

- Cinque categorie di minaccia interna: Compromissione delle credenziali, Sabotaggio della supply chain, Esfiltrazione dei dati, Sabotaggio dell'infrastruttura e Inganno ed evasione — ciascuna associata a concrete manifestazioni dell'agente AI piuttosto che a motivazioni umane.

- 23 minacce STRIDE per agenti AI: una tassonomia STRIDE completa (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) adattata per agenti AI di frontiera, usata opzionalmente per restringere l'ambito dello scenario.

- Controlli allineati al NIST CSF: gli scenari generati includono mitigazioni prioritarie mappate al NIST Cybersecurity Framework (Identify, Protect, Detect, Respond, Recover).

- Parità dei provider: supporta lo stesso insieme di provider del resto di AttackGen con tracciamento opzionale LangSmith.
Migrazione a LiteLLM e consolidamento dei provider- Wrapper LLM unificato: tutta l'integrazione dei provider passa ora attraverso un unico wrapper core/llm.py che utilizza LiteLLM. Aggiungere un nuovo modello è una modifica di una riga nell'elenco MODELS in core/models.py; aggiungere un provider è una singola voce ProviderInfo. Rispecchia il modello usato in stride-gpt.

- Notevole riduzione del codice: rimosse circa 3.800 righe di logica per-provider duplicata nelle quattro pagine (~1.000 righe di blocchi if model_provider == ... più otto funzioni wrapper quasi identiche per pagina). Ogni pagina ora costruisce semplici dict di messaggi e chiama call_llm(config, messages).

- Barra laterale guidata dal registro: la barra laterale di benvenuto è ora generata dal registro dei provider, sostituendo otto blocchi di provider codificati a mano con un unico loop.

- Elenchi di modelli aggiornati: aggiornati agli ultimi modelli — famiglia OpenAI GPT-5.5 / 5.4, Anthropic Claude 4.6 / 4.7 / 4.8, anteprima Google Gemini 3.x, Mistral Large 3 / Magistral, Groq GPT-OSS e Qwen3.

- Consolidamento dei provider: sostituite le voci separate Azure OpenAI Service e Ollama con un'unica opzione Custom (OpenAI-compatible). Le distribuzioni Azure, Ollama (http://localhost:11434/v1), LM Studio (http://localhost:1234/v1), OpenRouter e gli endpoint self-hosted funzionano tutti attraverso questo unico percorso.

- Ingombro delle dipendenze ridotto: rimossi i pacchetti langchain, langchain-anthropic, langchain-core, langchain-community, langchain-google-genai, langchain-mistralai, langchain-openai e anthropic — sostituiti da una singola dipendenza litellm>=1.40. langsmith è mantenuto per il tracciamento opzionale.

- Tracciamento LangSmith preservato: il decorator @traceable e il widget di feedback continuano a funzionare in modo trasparente; core/llm.py avvolge call_llm in @traceable quando è disponibile un client LangSmith.
Aggiornamento della sicurezza dell'immagine Docker- Immagine base aggiornata: aggiornato il digest di python:3.12-slim per eliminare le CVE stale del livello OS segnalate da Trivy code scanning, riducendo il numero di alert aperti sull'immagine container pubblicata.

- Correzione pip CVE-2025-8869: pip viene ora aggiornato prima dell'installazione dei requisiti, includendo la correzione per i controlli mancanti dei symlink durante l'estrazione dei pacchetti.
Output LLM in streaming- Generazione token per token: gli scenari e la chat dell'AttackGen Assistant ora trasmettono i token man mano che arrivano, invece di bloccare l'intera risposta, così le generazioni lunghe risultano reattive e puoi leggere mentre il modello scrive.

- API di streaming opt-in: aggiunge call_llm_stream accanto a call_llm nel wrapper unificato LiteLLM, consentendo a chi chiama di scegliere se usare lo streaming senza modificare il resto del contratto.

- Gestione pulita del reasoning: un helper stateful stream_filter_thinking sopprime le regioni <think>...</think> nella vista live, mentre clean_model_response post-stream continua a popolare l'expander del reasoning dal testo grezzo completo.
Toggle avversario potenziato dall'AI- Nuovo toggle per pagina: aggiunge un toggle "avversario potenziato dall'AI" nelle pagine Threat Group e Custom Scenario che riformula lo scenario generato in modo che l'avversario usi l'AI per accelerare e potenziare la stessa kill chain — abbassando la soglia di competenza richiesta, comprimendo le tempistiche, con orchestrazione autonoma e scala parallela — senza introdurre nuove tecniche.

- Basato sulla ricerca di Anthropic: basato sulla ricerca LLM ATT&CK Navigator di Anthropic, che ha rilevato che il cambiamento più significativo nelle minacce informatiche reali è l'accelerazione e l'orchestrazione delle tecniche esistenti, piuttosto che l'introduzione di nuove.

- Visibilità del tracciamento: gli scenari con ai_enhanced sono taggati in LangSmith, così le generazioni potenziate dall'AI possono essere filtrate e confrontate con le baseline.

- Escluso volutamente dalla pagina AI Insider Threat: il threat actor di quella pagina è già un agente AI di frontiera, quindi la cornice "potenziato dall'AI" sarebbe ridondante.
Correzioni di bug e miglioramenti- Questa versione include diverse piccole rifiniture dell'interfaccia e correzioni di rendering nelle pagine degli scenari e nella barra laterale.

v0.11

NovitàA cosa serve?
Supporto del framework MITRE ATLAS- Copertura delle minacce AI/ML: AttackGen ora supporta il framework MITRE ATLAS (Adversarial Threat Landscape for AI Systems), consentendo la generazione di scenari di risposta agli incidenti per minacce che colpiscono i sistemi di intelligenza artificiale e machine learning.

- Scenari basati su case study: genera scenari basati su 45 case study documentati di attacchi AI reali, inclusi 14 incidenti effettivi e 31 esercizi di ricerca che coprono attacchi come prompt injection, estrazione di modelli e data poisoning.

- 147 tecniche ATLAS: accedi all'intera libreria di tecniche ATLAS che copre 16 tattiche specifiche per l'AI, tra cui AI Model Access, AI Attack Staging e le fasi di attacco tradizionali adattate ai sistemi AI.

- Template specifici per l'AI: sei nuovi template di scenario personalizzati per gli attacchi AI/ML più comuni: Model Evasion, Data Poisoning, Model Extraction, Prompt Injection, LLM Jailbreak e attacchi alla supply chain AI.
Dati MITRE ATT&CK aggiornati alla v18.1- Ultime informazioni sulle minacce: AttackGen ora utilizza i dati MITRE ATT&CK v18.1, assicurando che gli scenari generati riflettano le tattiche, tecniche e procedure più attuali usate dagli attori delle minacce.

- Copertura Enterprise ampliata: l'elenco dei gruppi di minaccia Enterprise è passato da oltre 150 a 187 gruppi, inclusi gli attori recentemente monitorati.

- Copertura ICS ampliata: l'elenco dei gruppi di minaccia ICS è passato da 7 a 16 gruppi, offrendo una migliore copertura per gli scenari dei sistemi di controllo industriale.
Supporto ai modelli LLM aggiornato- OpenAI: aggiunti i modelli GPT-5.2 e GPT-5.2 Pro; semplificato l'elenco dei modelli rimuovendo i modelli di reasoning della serie o deprecati.

- Anthropic: aggiornato alla famiglia Claude 4.5 con Sonnet 4.5, Haiku 4.5 e Opus 4.5.

- Google AI: aggiunti i modelli in anteprima Gemini 3 Pro e Flash; aggiornate le opzioni Gemini 2.5.

- Groq: aggiunti GPT-OSS 120B e 20B per inferenza ad alte prestazioni.

- Mistral: aggiornato alle versioni datate dei modelli (Large 2512, Medium 2508, Small 2506); aggiunto Ministral 14B.
Correzioni di bug- Corretta la gestione delle risposte Google AI: aggiornato il parsing delle risposte per gestire il formato di contenuto strutturato restituito dai nuovi modelli Gemini, assicurando che il testo dello scenario venga estratto e visualizzato correttamente.

- Corretti i messaggi di errore della matrice ICS: i messaggi di errore ora mostrano correttamente "ICS ATT&CK" invece di "Enterprise ATT&CK" quando si utilizza la matrice ICS.

- Migliorata la gestione delle tecniche vuote: aggiunta una gestione agevole quando un gruppo di minaccia non ha tecniche associate, prevenendo errori secondari.

v0.10.1

NovitàA cosa serve?
Compatibilità con LangChain v1.0- Corrette le modifiche di import che rompevano il funzionamento: aggiornati tutti gli import dal deprecato langchain.prompts.chat a langchain_core.prompts, garantendo la compatibilità con LangChain v1.0 e prevenendo errori ModuleNotFoundError. Questo mantiene la stabilità mentre l'ecosistema LangChain si evolve.
Infrastruttura di sicurezza completa- Scansione di sicurezza automatizzata: introdotti workflow GitHub Actions per il monitoraggio continuo della sicurezza utilizzando Bandit (analisi del codice Python), CodeQL (rilevamento vulnerabilità), pip-audit (scansione dipendenze), Safety (vulnerabilità note), Gitleaks (rilevamento segreti) e Trivy (scansione immagini Docker).

- Documentazione sulle best practice di sicurezza: aggiunto un completo SECURITY.md che copre le versioni supportate, la segnalazione delle vulnerabilità, la gestione delle chiavi API, le considerazioni sulla privacy dei dati e le linee guida per la sicurezza del deployment.

- Sezione sicurezza del README ampliata: ampliata la guida alla sicurezza con chiari "fare" e "non fare" per la protezione delle chiavi API, considerazioni sulla privacy dei dati e pratiche di deployment responsabile.
Miglioramenti Docker- Sicurezza migliorata: aggiornato il Dockerfile per eseguire come utente non root, migliorando la postura di sicurezza del container.

- Supporto Docker Compose: aggiunto docker-compose.yml per semplificare il deployment multi-servizio e facilitare la configurazione dello sviluppo locale.

- Ottimizzazione della build migliorata: potenziato .dockerignore per ridurre le dimensioni dell'immagine ed evitare che file sensibili vengano inclusi nelle immagini container.

- Template di configurazione completo: aggiornato .env.example con tutte le chiavi API supportate (OpenAI, Anthropic, Azure, Google, Mistral, Groq) per una configurazione iniziale più semplice.
Correzioni di bug- Timeout API Ollama: aggiunta la configurazione del timeout alle richieste API Ollama per prevenire connessioni bloccate.

- Aggiornamenti CLI Safety: aggiornato dal deprecato comando safety check al nuovo safety scan, garantendo la continuità delle funzionalità di scansione della sicurezza.

- Configurazione Bandit: corretta la configurazione della scansione di sicurezza Bandit per un'analisi del codice Python più accurata.

v0.10

NovitàA cosa serve?
Integrazione con l'API Responses di OpenAI- API di nuova generazione: AttackGen ora utilizza la più recente API Responses di OpenAI per tutti i modelli supportati, fornendo un'interfaccia unificata e migliorata.
Supporto agli ultimi modelli di frontiera- Integrazione GPT-5: aggiunto il supporto alla più recente serie di modelli GPT-5 di OpenAI, inclusi gpt-5, gpt-5-mini e gpt-5-nano, fornendo accesso alle capacità AI più avanzate per la generazione di scenari.

- Claude Sonnet 4.5: aggiunto il supporto all'ultimo modello Claude Sonnet 4.5 di Anthropic (claude-sonnet-4-5-20250929), insieme alle versioni aggiornate dei modelli Claude, inclusi Claude Opus 4.1 (claude-opus-4-1-20250805).
Correzioni di bug e miglioramenti- Corretto l'avviso di deprecazione Streamlit: sostituito il parametro deprecato use_container_width con il nuovo parametro width per garantire la compatibilità con le future versioni di Streamlit.

- Documentazione migliorata: aggiornato CLAUDE.md con una guida completa per il lavoro di sviluppo futuro e aggiunte informazioni dettagliate sull'architettura.

v0.9

NovitàA cosa serve?
Supporto ai modelli ampliato- Ultimi modelli di reasoning OpenAI: AttackGen ora supporta i più recenti modelli di reasoning di OpenAI, inclusi o4-mini (l'ultimo modello di reasoning), o3/o3-mini e o1-pro (capacità di reasoning potenziate). Questi modelli eccellono nella generazione di scenari complessi che richiedono un ragionamento logico profondo.

- Serie GPT-4.1: aggiunto il supporto ai modelli della serie GPT-4.1 (gpt-4.1, gpt-4.1-mini e gpt-4.1-nano), offrendo i più recenti miglioramenti nelle capacità AI generali con alternative più leggere per i casi d'uso sensibili ai costi.

- Modelli Anthropic Claude: aggiunto un supporto completo ai modelli Claude di Anthropic, inclusi claude-opus-4-20250514, claude-sonnet-4-20250514, claude-3-7-sonnet-latest e claude-3-5-haiku-latest. Questi modelli offrono prestazioni eccellenti per generare scenari di risposta agli incidenti dettagliati e contestualmente consapevoli, con forti capacità di ragionamento.

- Modelli Google AI aggiornati: aggiornata la selezione dei modelli Google AI per includere gli ultimi modelli in anteprima Gemini 2.5 (gemini-2.5-flash-preview-05-20 e gemini-2.5-pro-preview-05-06) insieme ai modelli Gemini 2.0, fornendo accesso ai miglioramenti più recenti della tecnologia AI di Google.

- Organizzazione dei modelli migliorata: riorganizzati i menu a discesa di selezione dei modelli per dare priorità ai modelli più recenti e aggiornate le descrizioni per distinguere chiaramente tra diversi tipi e capacità di modelli.
Logica di selezione delle tecniche migliorata- Gestione dei gruppi più robusta: corretto un problema per cui gruppi di attori di minaccia vuoti potevano causare errori durante la selezione delle tecniche. Lo strumento ora gestisce correttamente i gruppi vuoti restituendo un DataFrame vuoto, garantendo un funzionamento stabile anche con dati limitati sugli attori delle minacce.

- Preservazione del nome della fase: migliorato il processo di selezione delle tecniche per includere correttamente "Phase Name" nell'output, mantenendo le informazioni sulla fase della kill chain durante l'intero processo di generazione dello scenario. Questo assicura che gli scenari generati mantengano un contesto corretto su a quale fase di un attacco appartiene ciascuna tecnica.
Miglioramenti all'ambiente di sviluppo- Migliorato .gitignore: aggiunto il supporto per le directory dell'ambiente virtuale .venv oltre a venv, per adattarsi alle diverse preferenze degli sviluppatori e ai diversi strumenti di gestione degli ambienti Python.

- Pulizia del codice: rimossi import inutilizzati negli script di generazione degli scenari, migliorando la manutenibilità del codice e riducendo potenziali confusioni.

v0.8

NovitàA cosa serve?
Endpoint API personalizzati compatibili con OpenAI- Maggiore flessibilità: AttackGen ora supporta endpoint API personalizzati compatibili con OpenAI come Anyscale, Together AI o qualsiasi API self-hosted compatibile. Questa funzionalità consente agli utenti di sfruttare una gamma più ampia di modelli e servizi oltre ai provider supportati ufficialmente.

- Supporto self-hosting: le organizzazioni con proprie distribuzioni di modelli compatibili con OpenAI possono ora collegare AttackGen direttamente a questi endpoint.

- Controllo sulla selezione dei modelli: gli utenti possono specificare l'URL di base, il nome del modello e la chiave API per qualsiasi servizio compatibile, fornendo un maggiore controllo su quali modelli ed endpoint vengono utilizzati per la generazione degli scenari.
Selezione dei modelli aggiornata- Accesso agli ultimi modelli: la selezione dei modelli OpenAI ora include i nuovi modelli della serie GPT-4.1 (gpt-4.1, gpt-4.1-mini, gpt-4.1-nano), offrendo prestazioni migliori in attività di codifica, seguire le istruzioni e contesti lunghi.

- Supporto Gemini ampliato: aggiunto il supporto agli ultimi modelli Gemini 2.5 Pro Preview, 2.0 Flash e 2.0 Flash Lite.

v0.7

NovitàA cosa serve?
Integrazione con l'API Groq- Prestazioni migliorate: AttackGen ora supporta l'API ad alte prestazioni di Groq, fornendo accesso a modelli come llama-3.3-70b-versatile e deepseek-r1-distill-llama-70b. Questa integrazione offre tempi di inferenza rapidi mantenendo una generazione di scenari di alta qualità.

- Visualizzazione dell'output dei modelli migliorata: per modelli come DeepSeek che forniscono reasoning insieme all'output, AttackGen ora mostra questo reasoning in un widget expander comprimibile. Questo consente agli utenti di visualizzare il processo di pensiero del modello quando desiderato, mantenendo l'output principale dello scenario pulito e focalizzato.
Supporto ai modelli OpenAI aggiornato- Ultimi modelli: AttackGen ora supporta l'ultimo modello di reasoning o3 di OpenAI e la versione GA (disponibilità generale) del modello o1, in sostituzione della precedente versione preview. Questi aggiornamenti forniscono accesso a modelli più stabili e migliorati per la generazione di scenari.
Fai clic per visualizzare le note di rilascio delle versioni precedenti.

v0.6

NovitàA cosa serve?
Supporto ai nuovi modelli "reasoning" di OpenAI- Generazione di scenari potenziata: AttackGen ora supporta i nuovi modelli "reasoning" di OpenAI (o1-preview e o1-mini), consentendo la generazione di scenari di risposta agli incidenti altamente dettagliati e ricchi di sfumature. Questi modelli offrono maggiore coerenza e profondità nella creazione degli scenari.
Supporto per la matrice ICS di MITRE ATT&CK- Ambito ampliato: AttackGen ora supporta la generazione di scenari di test di risposta agli incidenti utilizzando la matrice ICS (Industrial Control Systems) di MITRE ATT&CK, oltre alla matrice Enterprise. Questo consente agli utenti di creare scenari su misura per ambienti industriali e infrastrutture critiche.
Dati di origine ATT&CK aggiornati alla v15.1- Ultime informazioni sulle minacce: lo strumento ora utilizza i dati MITRE ATT&CK più aggiornati (v15.1), garantendo che gli scenari generati riflettano le tattiche, tecniche e procedure più recenti note usate dagli attori delle minacce.
Dati dei gruppi di attori di minaccia aggiornati- Copertura completa: i dati dei gruppi sono stati aggiornati per includere gli ultimi gruppi monitorati in MITRE ATT&CK, come Scattered Spider. Questo garantisce che gli utenti possano generare scenari basati sulle informazioni più attuali sugli attori delle minacce disponibili.
Caricamento di chiavi API / segreti da un file .env- Sicurezza migliorata: gli utenti possono ora memorizzare le proprie chiavi API e altre informazioni sensibili in un file .env, migliorando la sicurezza e semplificando la gestione delle credenziali in ambienti diversi.

v0.5.2

NovitàA cosa serve?
Supporto al modello GPT-4o mini- Opzioni di modello ampliate: AttackGen ora supporta l'uso del modello GPT-4o mini di OpenAI. GPT-4o mini è un modello piccolo altamente conveniente in termini di costi.
Scelte dei modelli aggiornate per l'API Google AI- Opzioni di modello ampliate: AttackGen ora supporta le versioni stabile e anteprima di Gemini 1.5 Pro.

v0.5.1

NovitàA cosa serve?
Supporto al modello GPT-4o- Opzioni di modello potenziate: AttackGen ora supporta l'uso del modello GPT-4o di OpenAI. GPT4-o è il modello di punta di OpenAI, in grado di generare scenari due volte più veloce di GPT-4 a metà del costo.
NovitàPerché è utile?
---------------------------
AttackGen Assistant- Refinamento Iterativo degli Scenari: La nuova interfaccia chat consente agli utenti di interagire con i propri scenari di risposta agli incidenti generati, rendendo semplice aggiornarli e porre domande sullo scenario senza doverlo rigenerare da zero. Questa funzione permette un approccio iterativo allo sviluppo degli scenari, in cui gli utenti possono perfezionare e migliorare i propri scenari in base alle risposte dell'assistente AI.

- Assistenza Contestuale: L'assistente AI risponde alle richieste degli utenti basandosi sul contesto dello scenario generato e sulla cronologia della conversazione. Ciò garantisce che le risposte dell'assistente siano pertinenti e utili per perfezionare lo scenario.
Modelli di Avvio Rapido per Scenari Personalizzati- Generazione Rapida di Scenari: Gli utenti possono ora generare rapidamente scenari personalizzati di risposta agli incidenti basati su modelli predefiniti per tipi comuni di incidenti informatici, come attacchi di phishing, attacchi ransomware, infezioni malware e minacce interne. Questa funzione rende più facile creare scenari realistici senza dover selezionare singole tecniche ATT&CK.

- Workflow Semplificato: La selezione dei modelli è integrata perfettamente nel processo di generazione di scenari personalizzati. Gli utenti possono scegliere un modello, che popola automaticamente le tecniche ATT&CK pertinenti, e poi personalizzare ulteriormente lo scenario se necessario.
Integrazione API Google AI- Opzioni di Modello Ampliate: AttackGen ora supporta l'uso dei modelli Gemini di Google per generare scenari di risposta agli incidenti. Questa integrazione amplia la gamma di modelli di alta qualità disponibili per gli utenti, consentendo loro di sfruttare le capacità AI di Google per creare scenari realistici e diversificati.

v0.4

NovitàPerché è utile?
Integrazione API Mistral- Provider di Modelli Alternativo: Gli utenti possono ora sfruttare i modelli Mistral AI per generare scenari di risposta agli incidenti. Questa integrazione offre un'alternativa ai modelli OpenAI e Azure OpenAI Service, consentendo agli utenti di esplorare e confrontare le prestazioni di diversi modelli linguistici per il loro caso d'uso specifico.
Supporto per Modelli Locali tramite Ollama- Hosting Locale dei Modelli: AttackGen ora supporta l'uso di LLM ospitati localmente tramite un'integrazione con Ollama. Questa funzione è particolarmente utile per le organizzazioni con severi requisiti di privacy dei dati o per coloro che preferiscono mantenere i propri dati on-premises. Si noti che questa funzione non è disponibile per gli utenti della versione di AttackGen ospitata su Streamlit Community Cloud all'indirizzo https://attackgen.streamlit.app
Integrazione Opzionale con LangSmith- Maggiore Flessibilità: L'integrazione con LangSmith è ora opzionale. Se non viene fornita una chiave API LangChain, gli utenti vedranno un messaggio informativo che indica che l'esecuzione non verrà registrata da LangSmith, invece di ricevere un errore. Questa modifica migliora l'esperienza utente complessiva e consente agli utenti di continuare a utilizzare AttackGen senza la necessità di LangSmith.
Varie Correzioni di Bug e Miglioramenti- Esperienza Utente Migliorata: Questa versione include diverse correzioni di bug e miglioramenti all'interfaccia utente, rendendo AttackGen più facile da usare e robusto.

v0.3

NovitàPerché è utile?
Integrazione con Azure OpenAI Service- Integrazione Migliorata: Gli utenti possono ora scegliere di utilizzare i modelli OpenAI distribuiti su Azure OpenAI Service, oltre alla standard API OpenAI. Questa integrazione offre una soluzione fluida e sicura per incorporare AttackGen in ecosistemi Azure esistenti, sfruttando accordi commerciali e di riservatezza consolidati.

- Sicurezza dei Dati Migliorata: L'esecuzione di AttackGen da Azure garantisce che le descrizioni delle applicazioni e altri dati rimangano nell'ambiente Azure, rendendolo ideale per le organizzazioni che gestiscono dati sensibili nei loro modelli di minaccia.
LangSmith per Azure OpenAI Service- Debugging Migliorato: La tracciatura LangSmith è ora disponibile per gli scenari generati utilizzando Azure OpenAI Service. Questa funzione fornisce un potente strumento per il debug, i test e il monitoraggio delle prestazioni del modello, consentendo agli utenti di ottenere informazioni sul processo decisionale del modello e identificare potenziali problemi con gli scenari generati.

- Feedback degli Utenti: LangSmith cattura anche il feedback degli utenti sulla qualità degli scenari generati utilizzando Azure OpenAI Service, fornendo preziose informazioni sulle prestazioni del modello e sulla soddisfazione degli utenti.
Selezione del Modello per l'API OpenAI- Opzioni di Modello Flessibili: Gli utenti possono ora selezionare tra diversi modelli disponibili dall'endpoint dell'API OpenAI, come gpt-4-turbo-preview. Ciò consente una maggiore personalizzazione e sperimentazione con diversi modelli linguistici, permettendo agli utenti di trovare il modello più adatto al loro caso d'uso specifico.
Immagine Contenitore Docker- Distribuzione Semplice: AttackGen è ora disponibile come immagine contenitore Docker, rendendo più facile distribuire ed eseguire l'applicazione in un ambiente coerente e riproducibile. Questa funzione è particolarmente utile per gli utenti che vogliono eseguire AttackGen in un ambiente containerizzato, o per coloro che vogliono distribuire l'applicazione su una piattaforma cloud.

v0.2

NovitàPerché è utile?
Scenari Personalizzati basati su Tecniche ATT&CK- Per Organizzazioni Mature: Questa funzione è particolarmente vantaggiosa se la vostra organizzazione dispone di capacità avanzate di threat intelligence. Ad esempio, se state monitorando un gruppo di attori delle minacce di recente identificazione o meno noto, potete personalizzare gli scenari di test di risposta agli incidenti specifici per le tecniche utilizzate da quel gruppo.

- Test Mirati: In alternativa, utilizzate questa funzione per concentrare i test di risposta agli incidenti su parti specifiche della cyber kill chain o su alcune tattiche MITRE ATT&CK come 'Lateral Movement' o 'Exfiltration'. Questo è utile per le organizzazioni che cercano di valutare e migliorare aree specifiche della propria postura difensiva.
Feedback degli utenti sugli scenari generati- La raccolta di feedback è essenziale per monitorare le prestazioni del modello nel tempo e aiuta a evidenziare punti di forza e debolezza nei compiti di generazione di scenari.
Gestione migliorata degli errori per chiavi API mancanti- Esperienza utente migliorata.
Sostituiti i widget st.spinner di Streamlit con il nuovo widget st.status- Fornisce una migliore visibilità nei processi di lunga durata (ad es. generazione di scenari).

v0.1

Versione iniziale.

Requisiti

  • Versione recente di Python.
  • Pacchetti Python: streamlit, litellm, mitreattack-python, pandas (vedi requirements.txt per l'elenco completo).
  • Chiave API OpenAI (o chiave API per il provider di modelli scelto).
  • Chiave API LangChain (opzionale) - vedere la sezione Configurazione di LangSmith di seguito per ulteriori dettagli.
  • File di dati MITRE ATT&CK e ATLAS. Questi sono inclusi nel repository (in ./data/), quindi non è richiesto alcun download manuale (vedere Configurazione dei dati).
  • File .env per memorizzare chiavi API e segreti (vedere la sezione Installazione per i dettagli).

Installazione

Opzione 1: Clonazione del Repository

  1. Clona questo repository:``` git clone https://github.com/mrwadams/attackgen.git
2. Spostati nella directory del repository clonato:```
cd attackgen
  1. Installa i pacchetti Python richiesti:``` pip install -r requirements.txt
### Opzione 2: Uso di Docker

1. Esegui il pull dell'immagine del container Docker da Docker Hub:```
docker pull mrwadams/attackgen

Configurazione di LangSmith

Se desideri utilizzare LangSmith per il debug, il testing e il monitoraggio delle prestazioni del modello, dovrai configurare un account LangSmith e creare un file .streamlit/secrets.toml che contenga la tua chiave API LangChain. Segui le istruzioni qui per configurare il tuo account e ottenere la tua chiave API. Troverai un file secrets.toml-example nella directory .streamlit/ che puoi usare come modello per il tuo file secrets.toml.

Se non desideri utilizzare LangSmith, devi comunque avere un file .streamlit/secrets.toml, ma puoi lasciare vuoto il campo LANGCHAIN_API_KEY.

Configurazione dei dati

I dataset MITRE ATT&CK (Enterprise + ICS) e ATLAS di cui AttackGen ha bisogno sono inclusi nel repository sotto ./data/, quindi una nuova clonazione è pronta per essere eseguita senza passaggi di download aggiuntivi. Questi includono enterprise-attack.json, ics-attack.json, stix-atlas.json, groups.json, groups_ics.json e atlas-case-studies.json.

Se desideri aggiornarli all'ultima versione upstream, puoi riscaricare i bundle STIX dal repository dei dati STIX di MITRE ATT&CK (e dal repository dei dati ATLAS) e sostituire i file in ./data/.

Esecuzione di AttackGen

Dopo la configurazione dei dati, puoi eseguire AttackGen con il seguente comando:``` streamlit run 00_👋_Welcome.py

Puoi anche provare l'app su [Streamlit Community Cloud](https://attackgen.streamlit.app/).

## Server MCP

AttackGen include un server [MCP](https://modelcontextprotocol.io/) così i flussi di lavoro agentici (Claude Code, Claude Desktop, Cursor e altri client MCP) possono guidare la generazione di scenari senza l'interfaccia Streamlit. Espone **due livelli di strumenti**:

- **Strumenti dati — nessuna chiave API, nessuna chiamata LLM.** Questi espongono i dati MITRE di AttackGen: elencano i gruppi di minaccia / casi di studio ATLAS, risolvono la kill chain di un gruppo, costruiscono il report Detection & Response del team purple, producono un layer ATT&CK Navigator ed elencano le opzioni per le minacce interne AI. `list_ai_insider_options` restituisce ogni modello di avvio rapido con le selezioni e il brief narrativo che applica, così `get_ai_insider_prompt` / `generate_ai_insider_scenario` possono essere chiamati con solo `template=` più il tuo settore e la dimensione dell'azienda. Dove utile, restituiscono anche un prompt pronto all'uso, così **il modello del tuo client** può scrivere lo scenario — il che significa che funzionano anche se non hai una chiave API separata del provider. Questa è la superficie che può essere ospitata in sicurezza su HTTP.
- **Strumenti di generazione — porta la tua chiave.** `generate_threat_group_scenario`, `generate_custom_scenario` e `generate_ai_insider_scenario` chiamano un LLM lato server e restituiscono uno scenario Markdown completo. Provider, modello e chiave vengono forniti per ogni chiamata; se ometti `api_key`, LiteLLM ricade sulla variabile d'ambiente corrispondente (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, …) — cioè **la tua** chiave. Poiché questi leggono le credenziali dall'ambiente di processo, tienili su **stdio locale** e non esporli su un host condiviso.

### Installazione ed esecuzione

La dipendenza `mcp` è inclusa in `requirements.txt`. Installa il progetto (un'installazione modificabile ti dà anche lo script console `attackgen-mcp`):```
pip install -r requirements.txt
# optional, for the console script:
pip install -e .

Avvia il server (stdio):``` python -m mcp_server # or: attackgen-mcp

### Aggiungilo a un client

**Claude Code:**```
claude mcp add attackgen -- python -m mcp_server

Claude Desktop (claude_desktop_config.json) — le chiavi vanno in 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-..." } } } }

Puoi impostare `ATTACKGEN_PROVIDER` e `ATTACKGEN_MODEL` in `env` per fornire agli strumenti di generazione un provider/modello predefinito, così i chiamanti non devono passarli ogni volta. I pesanti bundle MITRE vengono caricati in modalità lazy alla prima chiamata a uno strumento dati, quindi il server si avvia istantaneamente.

## Agent Skills

In abbinamento al server MCP è presente un'**[Agent Skill](https://github.com/mrwadams/attackgen/blob/HEAD/skills/)**, `attackgen-tabletop`, che trasforma i dati di AttackGen in un tabletop di incident response pronto per il facilitatore.

Dato un gruppo di minaccia o un caso di studio ATLAS, la skill produce un tabletop completo / Master Scenario Events List (MSEL) — narrativa dello scenario, kill chain mappata per fasi, inject con timestamp, domande di discussione NIST SP 800-61 e punteggio di copertura del rilevamento — come Markdown o come report HTML autonomo e ottimizzato per la stampa.

Copre anche il percorso **AI insider-threat**: quando l'avversario è un agente AI di frontiera distribuito all'interno dell'organizzazione, la skill lavora da `list_ai_insider_options` e `get_ai_insider_prompt` invece che da una kill chain. L'esercizio mantiene la stessa struttura a sei sezioni, ma la sua spina dorsale è l'ambito delle minacce STRIDE e l'archetipo di distribuzione, il suo punteggio di rilevamento è valutato rispetto alla postura di rilevamento di quell'archetipo, e i `required_decisions` di un template diventano domande di discussione obbligatorie.

La divisione del lavoro è voluta: gli **strumenti dati** MCP forniscono i fatti (ogni tecnica o ID STRIDE riconduce al risultato di uno strumento) e la skill fornisce la progettazione dell'esercizio, quindi gira sul modello stesso del tuo client **senza alcuna chiave API aggiuntiva**. Collega il server MCP (sopra), poi punta un client che supporta le skill, come Claude Code o Claude Desktop, alla directory [`skills/`](https://github.com/mrwadams/attackgen/blob/HEAD/skills/). Vedi [`skills/README.md`](https://github.com/mrwadams/attackgen/blob/HEAD/skills/README.md) per le posizioni di installazione e i dettagli specifici di ogni client.

## Utilizzo

### Eseguire AttackGen

#### Opzione 1: Eseguire l'app Streamlit localmente
1. Esegui l'app Streamlit:```
streamlit run 00_👋_Welcome.py
  1. Apri il browser web e vai all'URL fornito da Streamlit.
  2. Usa l'app per generare scenari di risposta agli incidenti standard o personalizzati (vedi sotto per i dettagli).

Opzione 2: Utilizzo dell'immagine del container Docker

  1. Avvia il container Docker:``` docker run -p 8501:8501 mrwadams/attackgen
Questo comando avvierà il container e mapperà la porta 8501 (predefinita per le app Streamlit) dal container alla tua macchina host.
2. Apri il browser web e vai su `http://localhost:8501`.
3. Usa l'app per generare scenari di risposta agli incidenti standard o personalizzati (vedi sotto per i dettagli).

### Generazione degli Scenari

#### Generazione di Scenari Standard
1. Scegli se utilizzare l'API OpenAI, l'API Anthropic, l'API Google AI, l'API Mistral, l'API Groq o un endpoint personalizzato compatibile con OpenAI (per Ollama, LM Studio, distribuzioni Azure OpenAI, OpenRouter, ecc.).
2. Inserisci la tua chiave API per il provider scelto. Per il provider Custom, inserisci anche l'URL di base e il nome del modello.
3. Seleziona il modello preferito dal menu a discesa.
4. Seleziona il settore e le dimensioni della tua organizzazione dai menu a discesa.
5. Vai alla pagina `Threat Group Scenarios`.
6. Seleziona il gruppo di attori della minaccia che desideri simulare.
7. Fai clic su 'Generate Scenario' per creare lo scenario di risposta agli incidenti.
8. Usa i pulsanti 👍 o 👎 per fornire un feedback sulla qualità dello scenario generato. N.B. I pulsanti di feedback compaiono solo se è stato impostato un valore per LANGCHAIN_API_KEY nel file `.streamlit/secrets.toml`.

#### Generazione di Scenari Personalizzati
1. Scegli se utilizzare l'API OpenAI, l'API Anthropic, l'API Google AI, l'API Mistral, l'API Groq o un endpoint personalizzato compatibile con OpenAI.
2. Inserisci la tua chiave API per il provider scelto. Per il provider Custom, inserisci anche l'URL di base e il nome del modello.
3. Seleziona il modello preferito dal menu a discesa.
4. Seleziona il settore e le dimensioni della tua organizzazione dai menu a discesa.
5. Vai alla pagina `Custom Scenario`.
6. Usa la casella di selezione multipla per cercare e selezionare le tecniche ATT&CK pertinenti al tuo scenario.
7. Fai clic su 'Generate Scenario' per creare il tuo scenario di test di risposta agli incidenti personalizzato in base alle tecniche selezionate.
8. Usa i pulsanti 👍 o 👎 per fornire un feedback sulla qualità dello scenario generato. N.B. I pulsanti di feedback compaiono solo se è stato impostato un valore per LANGCHAIN_API_KEY nel file `.streamlit/secrets.toml`.

#### Generazione di Scenari di Minaccia Interna AI
1. Scegli il provider del modello e inserisci la relativa chiave API (usa il provider Custom per distribuzioni Azure OpenAI o modelli locali).
2. Seleziona il modello preferito dal menu a discesa.
3. Seleziona il settore e le dimensioni della tua organizzazione dai menu a discesa.
4. Vai alla pagina `AI Insider Threat Scenarios`.
5. (Opzionale) Scegli un modello per precompilare l'archetipo di distribuzione, le categorie di minaccia e le minacce STRIDE per uno scenario comune.
6. Scegli l'**archetipo di distribuzione** che riflette quanto autonomamente opera l'agente AI all'interno della tua organizzazione (es. assistente supervisionato, agente autonomo, flotta completamente autonoma). Questo è il fattore principale della superficie di attacco dell'agente.
7. Seleziona una o più **categorie di minaccia** (Compromissione delle credenziali, Sabotaggio della supply chain, Esfiltrazione dei dati, Sabotaggio delle infrastrutture, Inganno ed Evasione).
8. (Opzionale) Restringi lo scenario a specifiche **minacce STRIDE**. Se lasciato vuoto, vengono usate automaticamente le minacce STRIDE associate alle categorie selezionate. Si tratta delle 23 minacce STRIDE del documento sottostante.
9. (Opzionale) Regola le **capacità dell'agente di frontiera** evidenziate nel prompt.
10. Fai clic su 'Generate Scenario'. L'output include una narrazione dell'attacco mappata agli identificatori STRIDE, opportunità di rilevamento e controlli consigliati allineati al NIST CSF.
11. Usa i pulsanti 👍 o 👎 per fornire un feedback (richiede LANGCHAIN_API_KEY).

Il modello di minaccia alla base di questa pagina è descritto in [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk).

Tieni presente che la generazione degli scenari potrebbe richiedere circa un minuto. Una volta generato lo scenario, puoi visualizzarlo nell'app e scaricarlo anche come file Markdown.

## Migliori Pratiche di Sicurezza

AttackGen è progettato per una distribuzione locale a utente singolo. Quando usi lo strumento:

### Protezione delle Tue Chiavi API

**Le tue chiavi API sono credenziali sensibili che possono comportare addebiti sul tuo account.**

✅ **DA FARE:**
- Inserisci le chiavi API tramite l'interfaccia utente (rimangono nella sessione del browser)
- Usa il file .env per comodità sulla tua macchina personale
- Imposta limiti di spesa nel dashboard del tuo provider LLM
- Controlla regolarmente l'utilizzo dell'API e i costi
- Pulisci la sessione quando usi lo strumento su computer condivisi

❌ **DA NON FARE:**
- Non eseguire il commit dei file .env nel controllo versione (già in .gitignore)
- Non condividere screenshot con chiavi API visibili
- Non eseguire AttackGen su sistemi non affidabili/compromessi
- Non condividere le tue chiavi API con altri
- Non ignorare addebiti API imprevisti

### Considerazioni sulla Privacy dei Dati

Quando generi scenari, AttackGen invia dati al provider LLM scelto:
- Dettagli dell'organizzazione (settore, dimensioni dell'azienda)
- Tecniche ATT&CK selezionate
- Testo di input personalizzato
- Scenari generati (tramite AttackGen Assistant)

**Cosa significa:**
- OpenAI, Anthropic, ecc. potrebbero registrare questi dati secondo le loro politiche sulla privacy
- Considera l'uso di dettagli generici/fittizi dell'organizzazione per le dimostrazioni
- Rivedi le politiche di conservazione dei dati e sulla privacy del tuo provider LLM
- Per casi d'uso sensibili, considera provider con garanzie di privacy più rigorose

### Per Distribuzioni in Team/Organizzazione

Se distribuisci AttackGen per più utenti (non il caso d'uso predefinito):
- Aggiungi autenticazione/autorizzazione (non inclusa per impostazione predefinita)
- Usa un servizio di gestione dei segreti per le chiavi API
- Distribuisci dietro VPN o rete interna
- Rivedi questo documento sul modello di minaccia per considerazioni aggiuntive
- Considera i requisiti di residenza dei dati e di conformità

### Sicurezza delle Dipendenze

Manteniamo le dipendenze e monitoriamo le vulnerabilità:
- Le dipendenze vengono aggiornate regolarmente
- Gli advisory di sicurezza sono monitorati in GitHub Issues
- Esegui `pip list --outdated` per controllare gli aggiornamenti
- Considera l'uso di `pip-audit` per la scansione delle vulnerabilità

### Segnalazione di Problemi di Sicurezza

Trovato un problema di sicurezza? Segnalalo in modo responsabile:
- Crea un advisory di sicurezza tramite la [segnalazione privata delle vulnerabilità](https://github.com/mrwadams/attackgen/security/advisories/new) di GitHub
- Non pubblicare problemi di sicurezza pubblicamente
- Risponderemo entro 48 ore
- Le correzioni verranno prioritarizzate e rilasciate rapidamente

## Contributi

Sono molto felice di accettare contributi a questo progetto. Non esitare a inviare una issue o una pull request.

## Licenza

Questo progetto è rilasciato sotto [GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/).

Categorie