Struttura del corso
Modulo 1 — Come si verificano i guasti nelle applicazioni AI
Laboratorio: nessuno – trattasi di una panoramica architetturale e discussione aperta.
Un modello mentale utile per lo sviluppatore riguardo alle superfici di attacco.
Argomenti trattati:
- Architetture LLM, RAG e agenti viste dallo sguardo dello sviluppatore
- Ciclo di richiesta/risposta tipico di una funzionalità AI
- Fluxo dei prompt: messaggi da sistema, da sviluppatore, dall'utente e dagli strumenti utilizzati
- Punti in cui i dati non attendibili raggiungono il modello o l'output del modello entra nel codice dell'applicazione
- Confini di fiducia stabiliti dallo sviluppatore o ereditati da altri sistemi
- Perché gli attacchi AI sono semantici piuttosto che sintattici
- Correlazione tra la classifica OWASP LLM Top 10 e il codice effettivo da scrivere
Considerazione chiave: ogni istante in cui testi non attendibili entrano nel modello – o viceversa – costituisce un confine di sicurezza da monitorare.
Modulo 2 — Injection di prompt per gli sviluppatori
Laboratorio: Laboratorio 01 — 01-Prompt-Injection
È l'equivalente dell'injection SQL nel mondo AI – ma è impossibile eliminarlo del tutto.
Argomenti trattati:
- Distinguiamo tra injection di prompt diretta e indiretta
- Presenza di istruzioni nascoste all'interno di documenti, pagine web o output provenienti dagli strumenti utilizzati
- Meccanismi di "jailbreak" e confusione delle identità del modello
- Perché è indispensabile separare istruzioni e dati utilizzati nel prompt
- Progettazione difensiva dei prompt: utilizzo di delimiter, struttura logica e limitazione delle autorità concesse al modello
- Perché la prevenzione totale non è possibile – occorre quindi limitarne gli effetti negativi
Esercitazioni pratiche:
- Tentativo di attacco contro il proprio chatbot
- Elusione di un filtro di base implementato nel sistema
- Ristrutturazione del prompt per ridurre la portata dei danni possibili da un eventuale attacco
Modulo 3 — Considerare l'output del modello come input non attendibile
Laboratorio: Laboratorio 02 — 02-Output-Handling
Il problema di sicurezza spesso sottovalutato dagli sviluppatori.
Argomenti trattati:
- L'output del modello deve essere considerato come input non attendibile per il resto dell'app
- Gestione impropria degli output (LLM02): rischi di XSS, SSRF o injection di comandi/SQL nei passaggi successivi del codice
- Non si deve mai valutare, eseguire o renderizzare ciecamente l'output grezzo prodotto dal modello
- Uso di output strutturati e validazione tramite schemi JSON predefiniti
- Codifica degli input generati dal modello e impiego di liste bianche per i valori accettabili
- Rendering sicuro dei contenuti generati in contesti web o UI
Attività pratiche:
- Rilevamento e correzione di un errore legato alla gestione non sicura degli output del modello
- Aggiunta di una validazione mediante schema JSON alle risposte generate dal modello
Modulo 4 — Sicurezza delle pipeline RAG
Laboratorio: Laboratorio 03 — 03-RAG-Security
Una nuova e vastissima superficie di attacco – che però dipende direttamente dalla nostra capacità di progettazione.
Argomenti trattati:
- Rischi legati ai database vettoriali e al processo di recupero delle informazioni
- Sanificazione dei dati durante la fase di ingestimento iniziale
- Provenienza documentale e attribuzione della fiducia ai contenuti analizzati
- Delimitazione dell'ambito di ricerca tramite metadati specifici e suddivisione degli spazi dati
- Presenza di istruzioni nascoste nei testi recuperati dal modello – si tratta di un tipo indiretto di injection di prompt
- Rischio di fuoriuscita non autorizzata di informazioni sensibili tramite il recupero dei dati
Attività pratiche: - Introduciamo un contenuto malevolo in una pipeline RAG per verificare la sua vulnerabilità; poi procediamo con la sanificazione e l'imposizione di limitazioni di ricerca per renderla più sicura
Modulo 5 — Sicurezza degli agenti e dei loro strumenti associati
Laboratorio: Laboratorio 04 — 04-Agent-Safety
Qui un errore nella progettazione si traduce in effetti tangibili e attivi.
Argomenti trattati:
- Agenzia eccessiva concessa agli agenti (LLM06) e possibilità di abuso dei relativi strumenti utilizzati
- Applicazione del principio del minor privilegio per gli agenti stessi
- Solo certi tipi di input o determinati parametri sono consentiti, grazie all'impiego di liste bianche e validazioni specifiche degli argomenti dei comandi eseguiti
- Introduzione di passaggi aggiuntivi per la richiesta di autorizzazione esplicita da parte dell'utente o del supervisore umano<\/li>
- Sandboxing rigoroso dei processi generati dagli agenti durante l'esecuzione dei comandi
- Assegnazione a ciascun agente di credenziali limitate nel tempo e strettamente circoscritte al loro ambito d'operatività
- Limitazioni riguardo al numero massimo di cicli autonomi ripetibili o catene complesse tra più azioni eseguite dall'agente stesso
Esercitazioni pratiche:
- Limitazione delle facoltà di un agente dotato di troppi privilegi iniziali
- Inserimento di una lista bianca insieme a passaggi aggiuntivi di controllo e approvazione per uno strumento molto potente ma rischioso da usare
Modulo 6 — Chiavi segrete, identità utente e costi delle operazioni
Laboratorio: Laboratorio 05 — 05-Secrets-and-Cost
Gli errori operativi generano danni immediati e facilmente misurabili.
Argomenti trattati:
- Gestione sicura delle chiavi API e delle informazioni riservate – evitare di inserirle mai nei prompt, nel codice o nei log utilizzati
- Identificazione utente affidabile per tutte le richieste legate alle funzionalità AI implementate
- Riconduzione della provenienza utente anche in contesti di accesso ai dati tramite strumenti o chiamate verso risorse esterne
- Gestione del "denial-of-wallet": imposizione rigorosa sui limiti massimi di token e costi utilizzabili da un utente particolare
- Impostazione tempestiva di tetti d'uso, limitazioni temporali per l'esecuzione dei processi e controlli sul volume totale delle richieste avviate
- Escuzione sicura dei log – occorre evitare in ogni modo la pubblicazione accidentale di chiavi o dati sensibili
Esercitazioni pratiche:
- Estrazione completa delle informazioni riservate dalle sequenze di prompt e dal codice per trasferirle in posizioni più sicure del sistema
- Definizione precisa dei tetti di spesa consentiti per ogni singolo utente insieme a limiti fissi relativi alla frequenza d'uso
Modulo 7 — Librerie di sicurezza (Guardrail)
Laboratorio: Laboratorio 06 — 06-Guardrails
Quando acquistare librerie pronte all'uso e quando implementarne le funzionalità da zero.
Argomenti trattati:
- Cosa fanno – e cosa invece non possono fare – i framework dedicati alla sicurezza del testo generato da modelli AI
- Sicurezza degli input: rilevamento di injection, informazioni sensibili o contenuti potenzialmente problematici
- Sicurezza degli output prodotti dal modello: controllo e validazione rigorosi nonché verifiche di coerenza e autenticità delle affermazioni formulate
- Scelte pratiche sulla fattibilità dell'adozione di tali controlli: è meglio un layer standardizzato o implementare una logica personalizzata?
- Miscelazione equilibrata tra questi strati aggiuntivi e altre misure difensive già previste nei moduli precedenti del corso
- Analisi imparziale dei loro vantaggi e svantaggi: prestazioni, percentuale di falsi positivi o negativi rilevati e situazioni in cui tali strumenti risultano inefficienti
Esercitazioni pratiche:
- Aggiunta manuale di un layer protettivo sui contenuti in entrata o uscita per la funzionalità AI considerata
- Determinazione rigorosa dei loro risultati, sia positivi che negativi, ossia degli elementi effettivamente rilevati e invece quelli trascurati dal sistema
Modulo 8 — Esecuzione del Red-Teaming sull'applicazione creata
Laboratorio: Laboratorio 07 — 07-Red-Teaming
Facciamo in modo che il codice venga testato come se un aggressore fosse già riuscito a infiltrarlo.
Argomenti trattati:
- Progettazione pratica di pacchetti di test mirati alle vulnerabilità tipiche dei modelli AI e dei sistemi software affini
- Sviluppo di procedure di test automatiche volte a rilevare eventuali casi di injection di prompt o meccanismi jailbreak attivabili da un utente malintenzionato
- Verifica e mantenimento della robustezza dei livelli aggiuntivi previsti per limitare rischi tramite test di regressione periodici
- Integrazione tempestiva di strumenti di verifica della sicurezza AI all'interno del processo CI (Continuous Integration) tipico delle procedure automatizzate
- Gestione attenta e tracciabilità affidabile non solo dei modelli, ma anche delle rispettive dipendenze e librerie necessarie a generare le funzionalità AI previste
- Realizzazione di una lista dettagliata di controlli preliminari da effettuare su qualsiasi soluzione basata sull'AI prima del suo rilascio finale
Esercitazioni pratiche:
- Sviluppo e messa a punto di routine automatizzate di verifica legate alla sicurezza da applicare alle funzionalità AI create
- Integrazione stabile e immediata di tali test in un sistema CI predisposto per l'attivazione continua delle procedure di controllo
Modulo 9 — Valutazione della sicurezza AI: il framework SAIS-100
Laboratorio: nessuno – si tratta solo di un'attività valutativa (utilizziamo l'app del progetto finale).
Tutti gli elementi appresi durante il corso vengono ora tradotti in una metrica misurabile.
Argomenti trattati:
- Il Hexagono della Sicurezza AI: 6 interrogazioni fondamentali al posto di una vaga domanda tipo "è sicuro?"
- Suddivisione chiara del sistema in sei categorie diverse da valutare: Dati, Prompt, Agenti, Supply Chain, Controllo e Governance dei dati prodotti
- Definizione rigorosa di un sistema a 100 punti con relativa ripartizione precisa delle priorità assegnate
- Interpretazione dettagliata degli intervalli che classificano la qualità o l'efficacia della protezione complessiva e delle eccezioni previste per singole categorie di controllo
- Il SAIS-100 rappresenta il nome commerciale attribuito a questo metodo replicabile che consente verifiche strutturate nel tempo
- Calcolo misurabile della differenza tra i livelli di sicurezza prima e dopo interventi specifici volti al miglioramento del sistema
Esercitazioni pratiche:
- Stima puntuale delle prestazioni del progetto finale secondo la scala centesimale prevista dal framework SAIS-100
- Individuazione e descrizione chiara dell'unico intervento apportabile in grado di aumentare concretamente tale valore
Riflessione chiave: i tre elementi che ottengono più importanza statistica nel sistema corrispondono proprio a quei confini di fiducia direttamente controllabili dagli sviluppatori; ne consegue che il punteggio rispecchia perfettamente quanto trattato in questo percorso formativo.
Progetto finale
I partecipanti modificano ed estendono un'applicazione AI originariamente piena di vulnerabilità, rendendola finalmente robusta e adeguata a essere distribuita in produzione.
La versione base fornita comprende:
- Un prompt suscettibile a injection malevolo
- Mancanza di misure adeguate per la gestione corretta dei contenuti prodotti dal modello AI
- Pipeline RAG priva di qualsiasi controllo sulle informazioni importate o recuperate
- Agente potenziato con privilegi ampiamente superiori a quanto necessario
- Presenza di chiavi segrete e dati sensibili nei testi inseriti nel sistema per simulare operazioni reali
- Ausenza totale dei limiti fissati sui costi massimi per ogni utente
Tra gli interventi attesi da parte degli sviluppatori figurano:
- Riformulazione intelligente dei prompt utilizzati, volti a limitare danni e attacchi successivi
- Mantenimento rigoroso della validazione strutturale dei testi generati dal modello AI, unitamente alla loro codifica adeguata per evitare rischi ulteriori
- Attuazione puntuale delle procedure di sanificazione e suddivisione temporanea o spaziale nei documenti recuperati dall'apparato RAG utilizzato
- Controlli aggiuntivi di autorizzazione previsti per l'accesso ai privilegi concessi all'agente, imponendo al tempo stesso controlli manuali di approvazione
- Separazione netta dei dati sensibili e delle credenziali dai testi inseriti e messa in atto rigorosa dei meccanismi per limitare l'uso complessivo da parte degli utenti finali
- Aggiunta di ulteriori componenti dedicati alla protezione del flusso dati, così come sviluppo tempestivo di routine automatiche volte al controllo della sicurezza e a test tipici del red-teaming generale
Il risultato finale da presentare consiste nell'applicazione ormai protetta, insieme a una breve valutazione personale effettuata con i criteri stabiliti dalla classificazione OWASP LLM Top 10.
Mappatura moduli/laboratori
I laboratori vengono eseguiti in sequenza logica e rispecchiano l'ordine cronologico dei nove moduli previsti. Abbiamo complessivamente 7 sessioni sperimentali: i primi due moduli sono solo illustrativi dal punto di vista architetturale, mentre il nono prevede solamente valutazioni misurate senza ulteriori sessioni pratiche.
- Laboratorio 01 - 01-Prompt-Injection: Analisi delle modalità di injection su chatbot e adozione di contromisure efficaci (Modulo 2)
- Laboratorio 02 - 02-Output-Handling: Correzione attenta di un malfunzionamento legato alla gestione non sicura dei contenuti generati dall'IA (Modulo 3)
- Laboratorio 03 - 03-RAG-Security: Test di vulnerabilità introducendo dati nocivi e successivamente attivazione degli strumenti di protezione necessari per una corretta pipeline RAG (Modulo 4)
- Laboratorio 04 - 04-Agent-Safety: Limitazione delle capacità operative esagerate concesse a un determinato agente software (Modulo 5)
- Laboratorio 05 - 05-Secrets-and-Cost: Implementazione di una corretta protezione per le chiavi API e imposizione rigorosa dei vincoli finanziari richiesti (Modulo 6)
- Laboratorio 06 - 06-Guardrails: Inserimento di una barriera addizionale per proteggere sia input che output generati dal sistema AI scelto (Modulo 7)
- Laboratorio 07 - 07-Red-Teaming: Creazione e applicazione tempestiva di routine automatiche per verificare la sicurezza tramite simulazioni offensive tipiche del red-teaming (Modulo 8)
Il Modulo 1 (“Come si verificano i guasti nelle applicazioni AI”) non contempla sessioni sperimentali, in quanto basato esclusivamente su una panoramica architetturale e un confronto aperto; il Modulo 9 è stato invece sviluppato per stimare la sicurezza dell'app con l'ausilio del sistema SAIS-100, non prevedendo laboratori manuali di verifica.
Requisiti
- Livello di difficoltà: intermedio.
- I partecipanti dovrebbero conoscere: lo sviluppo e l'utilizzo di API REST, un linguaggio di scripting (nei laboratori si usa Python), i concetti base di autenticazione applicativa, Git e la riga di comando.
- Non è richiesta alcuna competenza precedente nel campo del machine learning: questo corso tratta della sicurezza delle applicazioni destinate a utilizzare modelli linguistici, non alla loro formazione.
Pubblico di riferimento
- Ingegneri software o backend che sviluppano funzionalità basate su LLM
- Sviluppatori full-stack e API developer
- Ingegneri specializzati nello sviluppo di applicazioni AI/ML
- Ingegneri platform che realizzano copilot o agenti autonomi
- Tech lead e ingegneri senior responsabili dello sviluppo di soluzioni AI
Recensioni (2)
Ho apprezzato molto aver appreso riguardo agli attacchi di intelligenza artificiale e agli strumenti disponibili per iniziare a praticare e utilizzare attivamente nei test di sicurezza. Ho acquisito molte conoscenze che non avevo all'inizio e il corso ha corrisposto alle mie aspettative. La parte che ho preferito della formazione è stata Comet Browser: mi ha sorpreso ciò che era in grado di fare. Sicuramente valuterò di approfondire l'argomento. Nel complesso è stato un corso ottimo e ho apprezzato moltissimo l'apprendimento del Top 10 OWASP GenAI.
Patrick Collins - Optum
Corso - OWASP GenAI Security
Traduzione automatica
La conoscenza professionale e il modo in cui l'ha presentata a noi
Miroslav Nachev - PUBLIC COURSE
Corso - Cybersecurity in AI Systems
Traduzione automatica