
Al PwnzzAI Shop, ogni fetta serve una porzione di istruzione olistica sulla sicurezza dell'IA. Questa piattaforma di apprendimento pratica prepara i professionisti a comprendere la protezione delle tecnologie IA in senso ampio, proposta attraverso un coinvolgente e pratico scenario di pizzeria.
Proprio come un ingrediente sbagliato può rovinare una pizza, un prompt difettoso o un'architettura inadeguata possono lasciare le tecnologie IA esposte a gravi minacce, tra cui violazioni delle informazioni, furto di proprietà intellettuale o accessi illegittimi.
Qui esplorerai esempi pratici di come le vulnerabilità vengono create, sfruttate e mitigate. Per alcune pagine dovrai accedere come alice/alice o bob/bob. Prendi una fetta, addentrati e scopri quanto può essere delizioso imparare la sicurezza dell'IA.
Indice dei contenuti
PwnzzAI Shop rappresenta una piattaforma di apprendimento pratica costruita appositamente per l'insegnamento della protezione delle tecnologie IA. Questa applicazione web Flask volutamente insicura mostra un'ampia gamma di debolezze di sicurezza dell'IA attraverso un'esperienza immersiva di pizzeria.
Partner fondatore: OWASP AI Exchange
PwnzzAI è progettato come una piattaforma di apprendimento completa e in evoluzione, allineata alla tassonomia dei rischi di AI Exchange. Il suo ambito si espande progressivamente in linea con i framework di analisi della sicurezza e le linee guida difensive di OWASP AI Exchange, garantendo rilevanza a lungo termine man mano che le pratiche di sicurezza dell'IA maturano. Il progetto attualmente incorpora la OWASP Top 10 per gli LLM, con un'architettura volutamente mappata sulle classificazioni di rischio di AI Exchange. Nel tempo, PwnzzAI mira a trasformarsi in un ecosistema di apprendimento strutturato che supporta:
Formazione sulla protezione e difesa dell'IA, inclusi percorsi di apprendimento autonomi
Programmi di formazione pratica sulla sicurezza con esercizi concreti basati su scenari
Iniziative di apprendimento di gruppo per ingegneri e professionisti della sicurezza
Formazione end-to-end sulla sicurezza dell'IA, che copre progettazione, sviluppo, distribuzione e operazioni
Scegli uno di questi 3 modi per eseguire PwnzzAI:
https://www.docker.com/products/docker-desktop.git clone https://github.com/OWASP/PwnzzAI.git
cd PwnzzAI
I laboratori funzionano subito con un modello locale gratuito. Per utilizzare anche le schede modello cloud (OpenAI / Gemini / Claude), servono due cose: una chiave API e un nome del modello:
.env (OPENAI_API_KEY=...). La chiave inserita in Lab Setup ha la precedenza..env. Non esiste un valore predefinito nel codice, quindi le chiamate falliscono con LLM Provider NOT provided se non è impostato.Crea il file .env dal template e decommenta la riga del modello:
cp .env.example .env
# then edit .env and set, for example:
# OPENAI_MODEL=gpt-4o-mini
# (or LITELLM_MODEL=gemini/gemini-2.5-flash, etc.)
Riavvia l'app dopo aver modificato .env. Per una guida completa su provider/modelli, consulta Host del workshop: scegliere OpenAI, Claude, Gemini o altri modelli cloud.
Usa questa opzione se vuoi che Docker esegua sia l'app PwnzzAI sia Ollama per te.
docker compose up -d
docker compose ps
http://localhost:8080
Nell'app, vai alla pagina Basics ed esegui la configurazione di Ollama per scaricare i modelli.
Segui i log se necessario:
# App logs
docker compose logs -f pwnzzai-app
# Ollama logs (optional)
docker compose logs -f ollama
docker compose down
docker compose down -v
Se pubblichi l'immagine dell'app su un altro percorso di registry, sovrascrivi il nome dell'immagine all'avvio:
PWNZZAI_IMAGE=ghcr.io/owasp/pwnzzai:latest docker compose up -d
docker compose utilizza l'immagine predefinita pwnzzai-app da docker-compose.yml (sovrascrivibile con PWNZZAI_IMAGE). Se docker compose up fallisce con denied, unauthorized o simili durante il pull dell'immagine, il registry potrebbe richiedere l'accesso o il tuo account potrebbe non avere i permessi di pull. Puoi comunque eseguire tutto da questo repository creando localmente l'immagine dell'app e indicando a compose di usarla.
Dalla radice del repository:
docker build -t pwnzzai-local:dev .
PWNZZAI_IMAGE=pwnzzai-local:dev docker compose up -d
Windows PowerShell:
docker build -t pwnzzai-local:dev .
$env:PWNZZAI_IMAGE="pwnzzai-local:dev"; docker compose up -d
Poi apri http://localhost:8080. Il primo caricamento può fallire brevemente mentre Flask si avvia all'interno del container; attendi qualche secondo e aggiorna se vedi un errore di connessione.
Se invece hai accesso all'immagine sul registry, puoi autenticarti prima (esempio per GitHub Container Registry):
docker login ghcr.io
Lo stesso approccio PWNZZAI_IMAGE=pwnzzai-local:dev vale per l'Opzione 2 se usi docker-compose.external-ollama.yml e incontri lo stesso errore di pull.
Usa questa opzione se Ollama è già in esecuzione altrove e vuoi eseguire solo PwnzzAI in Docker.
Se esegui Ollama su WSL e PwnzzAI in Docker, consulta
OLLAMA_CONNECTION_TROUBLESHOOTING.md
per le soluzioni ai problemi di connettività (Connection refused, host.docker.internal, binding e validazione delle variabili d'ambiente).
Mantieni in esecuzione il tuo servizio Ollama.
Se Ollama è su una macchina remota, imposta OLLAMA_HOST prima di iniziare (salta questo passaggio se Ollama è sulla stessa macchina di Docker e raggiungibile all'indirizzo predefinito in docker-compose.external-ollama.yml, http://host.docker.internal:11434).
Linux/macOS:
export OLLAMA_HOST=http://your-ollama-server:11434
Windows PowerShell:
$env:OLLAMA_HOST="http://your-ollama-server:11434"
docker compose -f docker-compose.external-ollama.yml up -d
Se l'immagine predefinita dell'app non viene scaricata da GHCR, creala localmente e imposta PWNZZAI_IMAGE come descritto in Se l'immagine predefinita non viene scaricata (creala localmente).
Visita http://localhost:8080 nel tuo browser per vedere l'applicazione. Inizia dalla pagina Basic e configura il tuo laboratorio.
Segui i log dell'app se necessario:
docker compose -f docker-compose.external-ollama.yml logs -f pwnzzai-app
docker compose -f docker-compose.external-ollama.yml down
Usa questa opzione se vuoi eseguire Python direttamente (senza Docker per l'app).
Linux/macOS:
python -m venv venv
source venv/bin/activate
Windows PowerShell:
python -m venv venv
.\venv\Scripts\Activate.ps1
./install.sh
Assicurati che Ollama sia disponibile:
http://localhost:11434 o un altro endpoint tramite OLLAMA_HOST.
Esegui l'app:
flask run --host=0.0.0.0 --port=8080
http://localhost:8080
Se hai bisogno di maggiori dettagli, guarda questa guida passo-passo , che mostra la configurazione dettagliata.
Questa piattaforma mostra un'ampia gamma di sfide relative alla protezione dell'IA, allineate alla tassonomia completa delle minacce di OWASP AI Exchange. L'implementazione attuale copre la OWASP Top 10 per le applicazioni LLM e le principali categorie di minaccia AI Exchange, con un'architettura estensibile pensata per la futura copertura dei rischi IA.
Ogni debolezza dimostrata in PwnzzAI include:
Secondo le minacce di OWASP AI Exchange e OWASP Top 10 for LLM Applications 2025:
Prompt Injection AI Exchange: Direct Prompt Injection, Indirect Prompt Injection, Top 10: LLM-01.
Divulgazione dei dati AI Exchange: Divulgazione di dati sensibili nell'output del modello , Top 10: LLM-02
Avvelenamento di dati e modello AI Exchange: Data Poisoning, Model Poisoning, Top 10: LLM04
Gestione impropria dell'output AI Exchange: Output Contains Conventional Injection, Top 10:LLM05
Agenzia eccessiva AI Exchange: Least Model Privilege, Oversight, Top 10:LLM06
Perdita del prompt di sistema AI Exchange: Sensitive Information Disclosure, Top 10:LLM07
e,
⚠️ Solo a scopo didattico: questa applicazione contiene vulnerabilità di sicurezza intenzionali. Non utilizzarla in ambienti di produzione.
Debolezze di vector ed embedding AI Exchange: Direct augmentation data leak, Top 10:LLM08
Disinformazione AI Exchange: Augmentation data manipulation, Top 10:LLM09
Consumo illimitato AI Exchange: AI Resource Exhaustion, Top 10:LLM10