
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.
AttackGen
AttackGen è uno strumento di test per la risposta agli incidenti di cybersecurity 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 su misura in base ai gruppi di attori minacciosi selezionati dall'utente, ai case study sugli attacchi AI e ai dettagli della tua organizzazione.
Sommario
- Metti una stella al repository
- Funzionalità
- Versioni
- Requisiti
- Installazione
- Configurazione LangSmith
- Configurazione dei dati
- Esecuzione di AttackGen
- Server MCP
- Competenze dell'agente
- Utilizzo
- Best practice di sicurezza
- Contributi
- Licenza
Metti una stella al repository
Se trovi AttackGen utile, considera 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 basati su gruppi di attori minacciosi scelti o case study ATLAS.
- Ti consente di specificare le dimensioni e il settore della tua organizzazione per uno scenario su misura.
- Supporta i framework MITRE ATT&CK Enterprise, ICS (Industrial Control Systems) e ATLAS (Adversarial Threat Landscape for AI Systems).
- Mostra un elenco dettagliato delle tecniche utilizzate dal gruppo di attori minacciosi o dal case study selezionato.
- Crea scenari personalizzati basati su una selezione di tecniche ATT&CK o ATLAS.
- Utilizza modelli di scenario per generare rapidamente scenari personalizzati basati su tipi comuni di incidenti informatici, inclusi modelli di attacco specifici per AI/ML.
- Genera scenari di minaccia interna AI - esercitazioni di risposta agli incidenti in cui un agente AI di frontiera distribuito all'interno della tua organizzazione si comporta come una minaccia interna, basate sul 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 di scenario opzionale in testo libero.
- Assistente AttackGen - un'interfaccia chat per aggiornare e/o porre domande sugli scenari generati.
- Cattura il feedback degli utenti sulla qualità degli scenari generati.
- Scenari scaricabili in formato Markdown.
- Utilizza 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 sono instradati tramite LiteLLM dietro un unico wrapper interno, quindi aggiungere un nuovo modello è 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.

Versioni
v0.16
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Generazione prima dello scenario di base | - Scenario prima dell'attesa: la generazione ora avviene in fasi: lo scenario di base viene renderizzato per primo con i pulsanti Scarica scenario e Scarica layer ATT&CK Navigator già attivi, e la narrazione opzionale del team viola viene trasmessa in streaming successivamente. Se questa seconda passata è lenta, o non ti serve, lo scenario è utilizzabile immediatamente invece di essere trattenuto fino al termine di tutto. - Input bloccati alla generazione: ogni esecuzione parte da un'istantanea catturata nel momento in cui premi Genera, quindi modificare la barra laterale a metà esecuzione non può riscrivere parzialmente lo scenario in produzione. - Progressi onesti: un'etichetta del tempo trascorso in esecuzione e fasi denominate - preparazione degli input, generazione dello scenario di base, creazione delle esportazioni deterministiche, generazione della narrazione del team viola - mostrano a che punto è arrivata effettivamente un'esecuzione lunga. |
| Selettori neutri, senza vicoli ciechi | - Solo opzioni che funzionano: i selettori dei gruppi di minaccia e dei case study ora offrono solo le scelte che producono effettivamente uno scenario, quindi una selezione non può più portare a un vicolo cieco. - Ordinamento naturale: i gruppi vengono ordinati in ordine numerico naturale, quindi APT3 viene prima di APT28 e APT30 invece di essere ordinati come testo e finire tra di loro. |
| Barra laterale di configurazione condivisa su ogni pagina | - Configura una volta: provider, modello, framework, settore e dimensioni aziendali ora risiedono in un'unica barra laterale Configurazione condivisa su ogni pagina di scenario - Gruppo di minaccia, Personalizzato e Minaccia interna AI - invece di essere reinseriti su ciascuna. - Sopravvive alla navigazione: le selezioni non segrete persistono mentre ti sposti tra le pagine e vengono rispecchiate nell'URL, mentre le chiavi API sono deliberatamente escluse dalla stringa di query. |
| Manutenzione di piattaforma e sicurezza | - MCP su SDK 2.x: il server MCP è stato migrato all'SDK mcp 2.x.- Immagine di base più recente: l'immagine Docker ora è basata su python:3.14-slim.- Gate CI invece di avvisi: le scansioni di sicurezza ora fanno fallire la build in caso di rilevamenti invece di limitarsi a segnalarli - pip-audit e Bandit fungono da gate, Trivy non conta più erroneamente l'SBOM venduto di pip come pacchetti installati, e le CVE azionabili dell'immagine sono state risolte. Le GitHub Actions sono state migrate dal runtime Node 20 e Dependabot ora traccia anche le action dei workflow. |
Versioni precedenti (v0.15 e precedenti)
v0.15
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Preset di fuga dall'ambiente di valutazione e seed dello scenario | - Prova un incidente specifico: un nuovo modello di minaccia interna AI prova un agente di valutazione che raggiunge sistemi reali da un ambiente presunto isolato - forzando il contenimento, la rotazione delle credenziali, la notifica a terze parti e la conservazione delle prove. Copre le divulgazioni di luglio 2026 di agenti di valutazione che fuggono dai loro sandbox, dove il confine di isolamento era presunto piuttosto che applicato. - I modelli ora raggiungono il prompt: i modelli di avvio rapido in precedenza precompilavano solo i widget della pagina e non influenzavano mai lo scenario generato. Ora trasportano un brief narrativo e le required_decisions che le Domande di discussione devono forzare, entrambi inseriti nel prompt - quindi un modello produce un tabletop temporizzato utilizzabile piuttosto che un insieme casuale 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 incidente impostano anche un brief, fissando la situazione.- Seed dello scenario in testo libero: una casella seed opzionale nella pagina Minaccia interna AI guida la narrazione su qualsiasi scenario. La selezione di un modello la precompila e puoi modificarla o scriverne una da zero. - Tassonomia estesa a 27 minacce / 6 categorie: aggiunge una sesta categoria di minaccia (Contenimento e impatto su terze parti) e quattro minacce STRIDE su cui si basa l'esercizio - S5 replay di credenziali del carico di lavoro riutilizzabili, R4 soppressione della telemetria lato agente, I5 compromissione di terze parti e a valle, ed E5 fallimento dell'assicurazione del confine di contenimento. AttackGen ora estende il modello di minaccia pubblicato piuttosto che rispecchiarlo.- 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 - quindi un client può scegliere un preset in base al merito e chiamare con solo un modello, settore e dimensioni aziendali. In precedenza i nomi dei modelli erano elencati ma nessuno strumento li accettava. |
| Competenza attackgen-tabletop: percorso minaccia interna AI | - Un secondo percorso di esercizio: la Competenza dell'agente ora costruisce un tabletop dal modello di minaccia interna AI oltre che da una kill chain MITRE. Scegli un modello di avvio rapido (o un archetipo di distribuzione e categorie di minaccia) e trasforma il payload di get_ai_insider_prompt in un MSEL.- Stessa forma, spina dorsale 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, il punteggio di rilevamento viene giudicato rispetto alla postura di rilevamento dell'archetipo di distribuzione - quindi le righe che non scatterebbero diventano il risultato - e le decisioni richieste dal modello diventano domande di discussione obbligatorie. - Percorso scelto per te: la descrizione della competenza ora si attiva su formulazioni relative ad agenti canaglia, quindi chiedere un "tabletop di minaccia interna AI" raggiunge il percorso giusto. Un attore esterno con tradecraft accelerato dall'AI rimane sul percorso MITRE. - Risposta, non sfruttamento: entrambi i percorsi sono esplicitamente limitati a provare le decisioni che un team di risposta deve prendere - nessun codice di exploit, payload o vulnerabilità reali non patchate - e il percorso AI attribuisce il comportamento dell'agente a configurazione, accesso e obiettivo piuttosto che a motivazioni umane. |
| Correzione: i prompt MCP per minacce interne AI omettevano le capacità dell'agente | - Stesso modello, stesso prompt: il blocco delle capacità dell'agente di frontiera - le righe basate su benchmark che rendono credibile uno scenario di minaccia interna AI - 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 cadeva a vuoto e il prompt sostituiva una riga generica "assumi un agente di codifica di frontiera capace", mentre la pagina 3 inviava tutte e quattro per lo stesso modello.- I default ora corrispondono all'app: omettere capabilities applica il set completo, come fa il multiselect della pagina. Passare [] le lascia ancora non specificate, quindi l'opt-out deliberato è invariato. |
| Correzione: generazione di scenari con Anthropic Claude 4.7+ | - Ogni modello Claude funziona di nuovo: Claude 4.7 e successivi 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 potevano generare uno scenario su nessuna pagina; solo Haiku 4.5 funzionava.- Gated per modello, non per provider: la regola della temperatura in precedenza veniva instradata dal provider, che non può esprimere un provider i cui modelli sono in disaccordo. ModelInfo.supports_temperature ora contrassegna i modelli che la rifiutano, quindi Haiku 4.5 mantiene la sua temperatura configurata mentre i suoi fratelli la omettono. OpenAI rimane una regola a livello di provider (ogni modello chat attuale è un modello di ragionamento), 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, quindi un assistente come Claude Code o Claude Desktop può estrarre dati MITRE e generare scenari senza l'interfaccia Streamlit.- Due livelli: Strumenti dati ( 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 chiave API - restituiscono dati MITRE strutturati e, dove utile, un prompt pronto per l'esecuzione, quindi sono sicuri da ospitare su HTTP. Strumenti di generazione (generate_threat_group_scenario, generate_custom_scenario, generate_ai_insider_scenario) accettano una configurazione bring-your-own-key e restituiscono Markdown finito - tienili su stdio locale.- Implementazione condivisa: il server riutilizza gli stessi builder headless core/prompts.py e i loader core/attack_data.py che usano le pagine Streamlit, quindi gli scenari corrispondono all'app invece di divergere. Avvia con python -m mcp_server o lo script console attackgen-mcp. |
| Competenza dell'agente attackgen-tabletop | - Tabletop pronti per il facilitatore: una nuova Competenza dell'agente si basa sugli strumenti dati MCP per trasformare un gruppo di minaccia o 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 un punteggio di copertura del rilevamento. - Funziona sul modello del chiamante: la competenza fornisce l'abilità di esercitazione mentre il server MCP fornisce i dati, quindi funziona sul modello del client senza chiave API aggiuntiva. - Due formati di output: consegnato come Markdown (predefinito) o un report HTML autonomo e ottimizzato per la stampa. |
| L'assistente perfeziona l'output di rilevamento e risposta | - Modifica del team viola: l'Assistente AttackGen ora può perfezionare la narrazione Rilevamento e risposta, non solo lo scenario. Quando uno scenario viene generato con l'interruttore 🟣 narrazione del team viola (pagine Gruppo di minaccia / Personalizzato), appare un selettore Modifica: nella pagina dell'Assistente così la chat può mirare allo scenario o alla procedura del difensore - in precedenza l'Assistente aveva solo il testo dello scenario. - Modalità di modifica combinata: un terzo target Scenario + Rilevamento e risposta perfeziona entrambi insieme, quindi una modifica trasversale - un settore diverso, attore della minaccia, tecnica o timeline - viene applicata coerentemente allo scenario dell'attaccante e alla narrazione del difensore invece di essere fatta due volte e divergere. - Fatti deterministici intatti: solo la narrazione LLM è un target di perfezionamento; il join di rilevamento STIX locale non viene mai modificato dall'LLM. Ogni modalità di modifica mantiene la propria cronologia chat, e la passata combinata è taggata purple_team_narrative in LangSmith. |
| Registro modelli più semplice | - Una cosa in meno per modello: il kwarg max_completion_tokens e la regola della temperatura per i modelli di ragionamento ora vengono instradati dal provider piuttosto che da un flag per modello uses_max_completion_tokens - ogni modello chat OpenAI attuale li usa, quindi il flag duplicava un fatto che la chiave del provider già catturava. Aggiungere un nuovo modello OpenAI rimane una modifica di una sola voce in MODELS, senza flag extra da ricordare.- Nessun cambiamento di comportamento: solo una semplificazione interna - il wrapper costruisce kwargs LiteLLM identici 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 modelli di ragionamento: i modelli di ragionamento OpenAI GPT-5.x rifiutano qualsiasi temperature di campionamento diversa dal loro default, 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 altri provider mantengono il valore configurato. |
| Aggiornamento del registro modelli | - Modelli più recenti: elenco modelli aggiornato rispetto alla documentazione attuale di ciascun 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: modelli eliminati che i provider hanno sostituito o stanno ritirando - in particolare qwen3-32b di Groq (chiuso il 17 lug 2026) e Magistral Medium di Mistral - quindi la barra laterale non può offrire un modello che genera errori alla selezione.- Aggiunto un livello Groq veloce/economico ( llama-3.1-8b-instant). |
v0.13
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Modalità team viola: rilevamento e risposta | - Compagno difensivo: ogni scenario di Gruppo di minaccia e Personalizzato ora presenta una sezione Rilevamento e risposta che collega ciascuna delle tecniche dello scenario alle strategie di rilevamento, analisi, fonti di log e mitigazioni MITRE ATT&CK già presenti nei dati forniti - trasformando una narrazione solo rossa in un esercizio di team viola ("ecco l'attacco, ed ecco esattamente cosa il tuo SOC avrebbe dovuto vedere"). - Nessuna chiamata LLM per i fatti: la sezione di rilevamento è un join di dati locale, non una chiamata al modello - quindi le analisi, le fonti di log e le mitigazioni che elenca sono il contenuto MITRE reale e attuale piuttosto che ipotesi del modello. Viene offerta come download ..._detection.md separato insieme allo scenario e al layer.- Fonti di log da abilitare: un riepilogo per scenario elenca le fonti di log distinte che i rilevamenti leggono (es. WinEventLog:Security (EventCode=4624)), quindi un SOC può vedere a colpo d'occhio quale telemetria l'esercizio presuppone.- Narrazione opzionale del team viola: un interruttore per pagina 🟣 Narrazione del team viola aggiunge una seconda passata del modello che percorre lo scenario fase per fase dal lato del difensore - cosa dovrebbe scattare, cosa vede l'analista, come rispondere - basata strettamente sui rilevamenti e le mitigazioni sopra (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: i dati MITRE ATT&CK Enterprise e ICS aggiornati da v18.1 a v19.1, e MITRE ATLAS aggiornato all'ultima release, quindi gli scenari generati riflettono tattiche, tecniche e case study attuali. - Elenchi di gruppi aggiornati: i menu a tendina dei gruppi di minaccia sono rigenerati dai bundle v19.1 (174 gruppi attivi Enterprise e 14 ICS). I gruppi che MITRE ha revocato o fuso a monte (es. APT34 → OilRig, UNC2452 → APT29) non appaiono più, mentre i gruppi di nuova tracciabilità come MirrorFace sì. - Più case study ATLAS: la libreria di 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 forniti, integrando lo script esistente dei case study ATLAS - quindi il prossimo aggiornamento è un passaggio scriptato piuttosto che una cura manuale. |
| Esportazione layer ATT&CK Navigator | - Layer scaricabile: ogni scenario generato nelle pagine Gruppo di minaccia e Scenario personalizzato ora offre un layer ATT&CK Navigator (.json) insieme al download Markdown, quindi le tecniche di uno scenario possono essere visualizzate, annotate e condivise nell'ATT&CK Navigator. Per visualizzarlo, scarica il layer e aprilo tramite Open Existing Layer → Upload from local nel Navigator.- Tutte e tre le matrici: il dominio Navigator corretto viene impostato automaticamente per matrice - carica i layer Enterprise e ICS nel MITRE ATT&CK Navigator, e i layer ATLAS nel fork ATLAS Navigator. (Un layer ATLAS non si caricherà nell'ATT&CK Navigator, o viceversa, poiché ciascuno riconosce solo il proprio dominio.) - Le tecniche restano visibili: le sotto-tecniche con punteggio espandono automaticamente il loro genitore e gli ID delle tecniche vengono mostrati nel layout, quindi le tecniche evidenziate dello scenario sono immediatamente evidenti piuttosto che nascoste in righe compresse. - Nessuna chiamata LLM extra: il layer è una serializzazione locale delle tecniche già selezionate per lo scenario - nessuna chiamata al modello aggiuntiva o ricerca esterna. - Nomi di file descrittivi per i download: i download di scenario e layer ora sono nominati in base all'attore della minaccia / scenario personalizzato e alla matrice con un timestamp di generazione (es. AttackGen_APT29_Enterprise_20260714-153045.md), quindi i file salvati sono significativi e non entrano in collisione tra scenari. |
| Cosa c'è di nuovo? | Perché è utile? |
| ----------- | ----------------- |
| Scenari di minaccia interna AI | - 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 dall'archetipo di distribuzione: gli scenari sono modellati dal livello di autonomia dell'agente (L1 assistente supervisionato → L4 flotta completamente autonoma), che è il principale determinante della sua superficie di attacco e della postura di rilevamento. - Cinque categorie di minaccia interna: Compromissione delle credenziali, Sabotaggio della supply chain, Esfiltrazione dei dati, Sabotaggio delle infrastrutture e Inganno ed elusione — ciascuna mappata a manifestazioni concrete degli agenti 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, utilizzabile 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 set di provider del resto di AttackGen con tracciamento LangSmith opzionale. |
| Migrazione a LiteLLM e consolidamento dei provider | - Wrapper LLM unificato: tutta l'integrazione dei provider ora passa attraverso un unico wrapper core/llm.py che utilizza LiteLLM. Aggiungere un nuovo modello è una modifica di una riga all'elenco MODELS in core/models.py; aggiungere un provider è una singola voce ProviderInfo. Rispecchia il pattern utilizzato in stride-gpt.- Riduzione massiccia del codice: rimosse ~3.800 righe di ramificazioni duplicate per provider 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).- Sidebar guidata dal registro: la sidebar di benvenuto è ora generata dal registro dei provider, sostituendo otto blocchi di provider scritti 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 una singola 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.- Impronta delle dipendenze ridotta: 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 obsolete del layer OS segnalate dallo scanning del codice Trivy, riducendo il numero di avvisi aperti sull'immagine container pubblicata.- Fix pip CVE-2025-8869: pip viene ora aggiornato prima di installare i requisiti, applicando il fix 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'Assistente AttackGen 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 LiteLLM unificato, così i chiamanti scelgono se trasmettere in streaming senza modificare il resto del contratto.- Gestione pulita del ragionamento: 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 ragionamento dal testo grezzo completo. |
| Interruttore avversario potenziato dall'AI | - Nuovo interruttore per pagina: aggiunge un interruttore "AI-enhanced adversary" nelle pagine Threat Group e Custom Scenario che riformula lo scenario generato in modo che l'avversario utilizzi l'AI per accelerare e potenziare la stessa kill chain — abbassamento della soglia di competenza, timeline compresse, orchestrazione autonoma e scala parallela — piuttosto che introdurre nuove tecniche. - Basato sulla ricerca 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 nuove tecniche. - Visibilità del tracciamento: scenari taggati con ai_enhanced in LangSmith così le generazioni potenziate dall'AI possono essere filtrate e confrontate con le esecuzioni di base.- Volutamente saltato nella pagina AI Insider Threat: l'attore della minaccia di quella pagina è già un agente AI di frontiera, quindi l'inquadramento "AI-enhanced" sarebbe ridondante. |
| Correzioni di bug e miglioramenti | - Questa release include diverse piccole correzioni di rifinitura UI e rendering nelle pagine degli scenari e nella sidebar. |
v0.11
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| 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 sistemi AI 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, model extraction e data poisoning. - 147 tecniche ATLAS: accedi alla libreria completa delle tecniche ATLAS che copre 16 tattiche specifiche per l'AI, inclusi 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 attacchi AI/ML 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, garantendo che gli scenari generati riflettano le tattiche, tecniche e procedure più attuali utilizzate dagli attori delle minacce. - Copertura Enterprise ampliata: l'elenco dei gruppi di minaccia Enterprise è passato da 150+ a 187 gruppi, inclusi gli attori di nuova tracciabilità. - Copertura ICS ampliata: l'elenco dei gruppi di minaccia ICS è passato da 7 a 16 gruppi, fornendo una migliore copertura per gli scenari dei sistemi di controllo industriale. |
| Supporto modelli LLM aggiornato | - OpenAI: aggiunti i modelli GPT-5.2 e GPT-5.2 Pro; elenco modelli semplificato rimuovendo i modelli di ragionamento 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 i modelli GPT-OSS 120B e 20B per l'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 modelli Gemini più recenti, garantendo 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 elegante quando un gruppo di minaccia non ha tecniche associate, prevenendo errori secondari. |
v0.10.1
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Compatibilità LangChain v1.0 | - Corrette le modifiche di importazione che causavano errori: aggiornati tutti gli import dal deprecato langchain.prompts.chat a langchain_core.prompts, garantendo la compatibilità con LangChain v1.0 e prevenendo problemi ModuleNotFoundError. Questo mantiene la stabilità mentre l'ecosistema LangChain 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 SECURITY.md completo 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 della distribuzione. - Sezione sicurezza README ampliata: ampliate le linee guida sulla sicurezza con chiari do's and don'ts per la protezione delle chiavi API, considerazioni sulla privacy dei dati e pratiche di distribuzione responsabile. |
| Miglioramenti Docker | - Sicurezza potenziata: aggiornato il Dockerfile per eseguire come utente non-root, migliorando la postura di sicurezza del container. - Supporto Docker Compose: aggiunto docker-compose.yml per una distribuzione multi-servizio semplificata e una configurazione di sviluppo locale più facile. - Migliore ottimizzazione della build: migliorato .dockerignore per ridurre le dimensioni dell'immagine e prevenire l'inclusione di file sensibili 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 comando deprecato safety check al nuovo comando safety scan, garantendo la continuità della 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
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Integrazione 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 potenziata. |
| Supporto dei modelli frontier più recenti | - Integrazione GPT-5: aggiunto il supporto per la 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 per il più recente modello Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) di Anthropic, 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 versioni future di Streamlit.- Documentazione potenziata: aggiornato CLAUDE.md con linee guida complete per lo sviluppo futuro e aggiunte informazioni dettagliate sull'architettura. |
v0.9
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Supporto modelli ampliato | - Ultimi modelli di ragionamento OpenAI: AttackGen ora supporta i più recenti modelli di ragionamento di OpenAI, inclusi o4-mini (il più recente modello di ragionamento), o3/o3-mini e o1-pro (capacità di ragionamento potenziate). Questi modelli eccellono nella generazione di scenari complessi che richiedono un pensiero logico profondo. - Serie GPT-4.1: aggiunto il supporto per i modelli della serie GPT-4.1 (gpt-4.1, gpt-4.1-mini e gpt-4.1-nano), che offrono gli ultimi miglioramenti nelle capacità AI generali con alternative più leggere per casi d'uso sensibili ai costi. - Modelli Anthropic Claude: aggiunto il supporto completo per i 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 la generazione di 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 i più recenti 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. - Migliore organizzazione dei modelli: riorganizzati i menu a tendina di selezione dei modelli per dare priorità ai modelli più recenti e aggiornate le descrizioni per distinguere chiaramente tra diversi tipi di modelli e capacità. |
| Logica di selezione delle tecniche migliorata | - Gestione dei gruppi più robusta: corretto un problema per cui i gruppi di attori delle minacce 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. - Conservazione 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 tutto il processo di generazione dello scenario. Questo garantisce che gli scenari generati mantengano il contesto corretto su a quale fase di un attacco appartiene ciascuna tecnica. |
| Miglioramenti dell'ambiente di sviluppo | - .gitignore potenziato: aggiunto il supporto per le directory dell'ambiente virtuale .venv oltre a venv, per soddisfare diverse preferenze degli sviluppatori e strumenti di gestione dell'ambiente Python.- Pulizia del codice: rimossi gli import inutilizzati negli script di generazione degli scenari, migliorando la manutenibilità del codice e riducendo la potenziale confusione. |
v0.8
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Endpoint API personalizzati compatibili con OpenAI | - Maggiore flessibilità: AttackGen ora supporta endpoint API personalizzati compatibili con OpenAI come Anyscale, Together AI o qualsiasi API compatibile self-hosted. 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 distribuzioni proprie 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 modelli aggiornata | - Accesso ai modelli più recenti: 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), che offrono prestazioni migliorate in codifica, seguimento delle istruzioni e attività con contesto lungo. - Supporto Gemini ampliato: aggiunto il supporto per i più recenti modelli Gemini 2.5 Pro Preview, 2.0 Flash e 2.0 Flash Lite. |
v0.7
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Integrazione API Groq | - Prestazioni potenziate: 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 migliorata dell'output del modello: per modelli come DeepSeek che forniscono ragionamento insieme al loro output, AttackGen ora visualizza questo ragionamento in un widget expander comprimibile. Ciò consente agli utenti di visualizzare il processo di pensiero del modello quando desiderato, mantenendo l'output principale dello scenario pulito e focalizzato. |
| Supporto modelli OpenAI aggiornato | - Modelli più recenti: AttackGen ora supporta il più recente modello di ragionamento o3 di OpenAI e la versione GA (general availability) del modello o1, sostituendo la precedente versione preview. Questi aggiornamenti forniscono accesso a modelli più stabili e migliorati per la generazione di scenari. |
v0.6
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Supporto per i 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 sfumati. Questi modelli offrono una migliore coerenza e profondità nella creazione degli scenari. |
| Supporto della matrice MITRE ATT&CK ICS | - Ambito ampliato: AttackGen ora supporta la generazione di scenari di test di risposta agli incidenti utilizzando la matrice MITRE ATT&CK ICS (Industrial Control Systems), oltre alla matrice Enterprise. Ciò consente agli utenti di creare scenari su misura per ambienti industriali e di infrastrutture critiche. |
| Dati sorgente 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 più recenti tattiche, tecniche e procedure note utilizzate dagli attori delle minacce. |
| Dati dei gruppi di attori delle minacce aggiornati | - Copertura completa: i dati dei gruppi sono stati aggiornati per includere i gruppi più recenti tracciati in MITRE ATT&CK, come Scattered Spider. Ciò garantisce che gli utenti possano generare scenari basati sulle informazioni più aggiornate sugli attori delle minacce disponibili. |
| Caricamento di chiavi API / segreti da un file .env | - Sicurezza potenziata: 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 diversi ambienti. |
v0.5.2
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Supporto modello GPT-4o mini | - Opzioni modello ampliate: AttackGen ora supporta l'uso del modello GPT-4o mini di OpenAI. GPT4-o mini è un modello piccolo altamente conveniente in termini di costi. |
| Scelte modelli aggiornate per l'API Google AI | - Opzioni modello ampliate: AttackGen ora supporta le versioni stabili e preview di Gemini 1.5 Pro. |
v0.5.1
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Supporto modello GPT-4o | - Opzioni 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ù velocemente di GPT-4 a metà del costo. |
| Cosa c'è di nuovo? | Perché è utile? |
| ----------- | ---------------- |
| Assistente AttackGen | - Perfezionamento iterativo degli scenari: La nuova interfaccia chat consente agli utenti di interagire con gli scenari di risposta agli incidenti generati, rendendo facile aggiornarli e porre domande sullo scenario senza doverlo rigenerare da zero. Questa funzionalità consente 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 domande 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 funzionalità semplifica la creazione di scenari realistici senza dover selezionare singole tecniche ATT&CK. - Flusso di lavoro 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
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Integrazione API Mistral | - Provider di modelli alternativo: Gli utenti possono ora sfruttare i modelli AI Mistral 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 modelli locali tramite Ollama | - Hosting di modelli locali: AttackGen ora supporta l'uso di LLM ospitati localmente tramite un'integrazione con Ollama. Questa funzionalità è particolarmente utile per le organizzazioni con severi requisiti di privacy dei dati o per coloro che preferiscono mantenere i propri dati on-premises. Si prega di notare che questa funzionalità non è disponibile per gli utenti della versione di AttackGen ospitata su Streamlit Community Cloud all'indirizzo https://attackgen.streamlit.app |
| Integrazione LangSmith opzionale | - 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, anziché 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ù intuitivo e robusto. |
v0.3
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Integrazione Azure OpenAI Service | - Integrazione migliorata: Gli utenti possono ora scegliere di utilizzare i modelli OpenAI distribuiti su Azure OpenAI Service, oltre alla API OpenAI standard. Questa integrazione offre una soluzione fluida e sicura per incorporare AttackGen negli 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 all'interno dell'ambiente Azure, rendendolo ideale per le organizzazioni che gestiscono dati sensibili nei loro modelli di minaccia. |
| LangSmith per Azure OpenAI Service | - Debug migliorato: La tracciabilità LangSmith è ora disponibile per gli scenari generati utilizzando Azure OpenAI Service. Questa funzionalità fornisce un potente strumento per il debug, il 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 API OpenAI | - Opzioni di modello flessibili: Gli utenti possono ora selezionare tra diversi modelli disponibili dall'endpoint 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 funzionalità è particolarmente utile per gli utenti che desiderano eseguire AttackGen in un ambiente containerizzato o per coloro che vogliono distribuire l'applicazione su una piattaforma cloud. |
v0.2
| Cosa c'è di nuovo? | Perché è utile? |
|---|---|
| Scenari personalizzati basati su tecniche ATT&CK | - Per organizzazioni mature: Questa funzionalità è particolarmente vantaggiosa se la tua organizzazione dispone di capacità avanzate di threat intelligence. Ad esempio, se stai monitorando un gruppo di attori di minaccia nuovo o meno conosciuto, puoi personalizzare gli scenari di test di risposta agli incidenti specifici per le tecniche utilizzate da quel gruppo. - Test mirati: In alternativa, usa questa funzionalità per concentrare i test di risposta agli incidenti su parti specifiche della cyber kill chain o su determinate tattiche MITRE ATT&CK come 'Lateral Movement' o 'Exfiltration'. Questo è utile per le organizzazioni che cercano di valutare e migliorare aree specifiche della loro 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 nelle attività di generazione di scenari. |
| Migliore gestione 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 a lunga esecuzione (cioè la generazione di scenari). |
v0.1
Versione iniziale.
Requisiti
- Versione recente di Python.
- Pacchetti Python:
streamlit,litellm,mitreattack-python,pandas(vedirequirements.txtper l'elenco completo). - Chiave API OpenAI (o chiave API per il provider di modelli scelto).
- Chiave API LangChain (opzionale) - vedi la sezione Configurazione LangSmith di seguito per ulteriori dettagli.
- File dati MITRE ATT&CK e ATLAS. Questi sono inclusi nel repository (in
./data/), quindi non è necessario alcun download manuale (vedi Configurazione dei dati). - File
.envper memorizzare chiavi API e segreti (vedi la sezione Installazione per i dettagli).
Installazione
Opzione 1: Clonazione del repository
- Clona questo repository:``` git clone https://github.com/mrwadams/attackgen.git
2. Spostati nella directory del repository clonato:```
cd attackgen
- Installa i pacchetti Python richiesti:``` pip install -r requirements.txt
### Opzione 2: Utilizzo di Docker
1. Scarica l'immagine del container Docker da Docker Hub:```
docker pull mrwadams/attackgen
Configurazione di LangSmith
Se desideri utilizzare LangSmith per il debug, il test 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 in posizione, 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 un clone fresco è pronto per essere eseguito senza alcun passaggio di download aggiuntivo. 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 scaricare nuovamente i bundle STIX dal repository dati STIX di MITRE ATT&CK (e dal repository 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ì che i flussi di lavoro agentici (Claude Code, Claude Desktop, Cursor e altri client MCP) possano 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: elenca i gruppi di minaccia / i case study ATLAS, risolve la kill chain di un gruppo, costruisce il report Detection & Response per il team purple, produce un layer ATT&CK Navigator e elenca le opzioni di minaccia interna 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 solo con `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 è sicura da ospitare su HTTP.
- **Strumenti di generazione — porta la tua chiave.** `generate_threat_group_scenario`, `generate_custom_scenario` e `generate_ai_insider_scenario` chiamano un server LLM lato server e restituiscono uno scenario Markdown completo. Il provider, il modello e la chiave vengono forniti per 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 del 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 .
Lancia 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 dare agli strumenti di generazione un provider/modello predefinito, così i chiamanti non devono passarli ogni volta. I bundle MITRE pesanti vengono caricati in modo lazy alla prima chiamata di uno strumento dati, quindi il server si avvia all'istante.
## Agent Skills
Abbinato al server MCP c'è una **[Agent Skill](https://github.com/mrwadams/attackgen/blob/main/skills)**, `attackgen-tabletop`, che trasforma i dati di AttackGen in un tabletop di incident response pronto per il facilitatore.
Data una minaccia o un case study 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 una scorecard di copertura del rilevamento — come Markdown o un 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 di minaccia STRIDE e l'archetipo di distribuzione, la sua scorecard di rilevamento è valutata rispetto alla postura di rilevamento di quell'archetipo, e i `required_decisions` di un template diventano domande di discussione obbligatorie.
La divisione del lavoro è intenzionale: gli **strumenti dati** MCP forniscono i fatti (ogni tecnica o ID STRIDE risale a un risultato dello strumento) e la skill fornisce l'abilità di esercitazione, quindi gira sul modello del tuo cliente con **nessuna chiave API aggiuntiva**. Collega il server MCP (sopra), poi punta un client abilitato alle skill come Claude Code o Claude Desktop alla directory [`skills/`](https://github.com/mrwadams/attackgen/blob/main/skills). Vedi [`skills/README.md`](https://github.com/mrwadams/attackgen/blob/main/skills/README.md) per le posizioni di installazione e i dettagli per ciascun client.
## Utilizzo
### Esecuzione di AttackGen
#### Opzione 1: Esecuzione dell'app Streamlit in locale
1. Esegui l'app Streamlit:```
streamlit run 00_👋_Welcome.py
- Apri il tuo browser web e vai all'URL fornito da Streamlit.
- Usa l'app per generare scenari di risposta agli incidenti standard o personalizzati (vedi sotto per i dettagli).
Opzione 2: Utilizzo dell'immagine del contenitore Docker
- Esegui il contenitore 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 tuo browser web e vai su `http://localhost:8501`.
3. Usa l'app per generare scenari di incident response 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 tendina.
4. Seleziona il settore e la dimensione della tua organizzazione dai menu a tendina.
5. Vai alla pagina `Threat Group Scenarios`.
6. Seleziona il Threat Actor Group che vuoi simulare.
7. Clicca su 'Generate Scenario' per creare lo scenario di incident response.
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 tendina.
4. Seleziona il settore e la dimensione della tua organizzazione dai menu a tendina.
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. Clicca su 'Generate Scenario' per creare il tuo scenario di test di incident response personalizzato basato sulle 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 Insider AI
1. Scegli il tuo provider di modelli e inserisci la chiave API pertinente (usa il provider Custom per distribuzioni Azure OpenAI o modelli locali).
2. Seleziona il modello preferito dal menu a tendina.
3. Seleziona il settore e la dimensione della tua organizzazione dai menu a tendina.
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 (ad es. assistente supervisionato, agente autonomo, flotta completamente autonoma). Questo è il principale motore della superficie di minaccia dell'agente.
7. Seleziona una o più **categorie di minaccia** (Credential Compromise, Supply Chain Sabotage, Data Exfiltration, Infrastructure Sabotage, Deception & Evasion).
8. (Opzionale) Restringi lo scenario a specifiche minacce **STRIDE**. Se lasciato vuoto, vengono utilizzate automaticamente le minacce STRIDE associate alle categorie selezionate. Queste sono le 23 minacce STRIDE del documento sottostante.
9. (Opzionale) Regola le **capacità dell'agente di frontiera** evidenziate nel prompt.
10. Clicca su 'Generate Scenario'. L'output include una narrazione dell'attacco mappata agli identificatori STRIDE, opportunità di rilevamento e controlli raccomandati allineati al NIST CSF.
11. Usa i pulsanti 👍 o 👎 per fornire un feedback (richiede LANGCHAIN_API_KEY).
Il modello di minaccia dietro 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 anche scaricarlo come file Markdown.
## Best Practice di Sicurezza
AttackGen è progettato per la distribuzione locale a utente singolo. Quando utilizzi lo strumento:
### Proteggere le 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 pannello di controllo del tuo provider LLM
- Controlla regolarmente l'utilizzo e i costi dell'API
- Cancella la sessione quando usi computer condivisi
❌ **DA NON FARE:**
- Committare file .env nel controllo versione (già in .gitignore)
- Condividere screenshot con chiavi API visibili
- Eseguire AttackGen su sistemi non affidabili/compromessi
- Condividere le tue chiavi API con altri
- Ignorare addebiti API imprevisti
### Considerazioni sulla Privacy dei Dati
Quando generi scenari, AttackGen invia dati al provider LLM scelto:
- Dettagli dell'organizzazione (settore, dimensione aziendale)
- 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 organizzativi generici/fittizi per le dimostrazioni
- Rivedi le politiche di conservazione dei dati e privacy del tuo provider LLM
- Per casi d'uso sensibili, considera provider con garanzie di privacy più rigorose
### Per Distribuzioni di 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 conformità
### Sicurezza delle Dipendenze
Manteniamo le dipendenze e monitoriamo le vulnerabilità:
- Le dipendenze vengono aggiornate regolarmente
- Gli advisory di sicurezza sono tracciati in GitHub Issues
- Esegui `pip list --outdated` per verificare gli aggiornamenti
- Considera l'uso di `pip-audit` per la scansione delle vulnerabilità
### Segnalazione di Problemi di Sicurezza
Hai trovato un problema di sicurezza? Segnalalo in modo responsabile:
- Crea un advisory di sicurezza tramite la [segnalazione privata di vulnerabilità](https://github.com/mrwadams/attackgen/security/advisories/new) di GitHub
- Non pubblicare problemi di sicurezza pubblicamente
- Riconosceremo entro 48 ore
- Le correzioni saranno prioritarie e rilasciate rapidamente
## Contribuire
Sono molto felice di accettare contributi a questo progetto. Sentiti libero di inviare un issue o una pull request.
## Licenza
Questo progetto è concesso in licenza sotto [GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/).