Plateforme d'apprentissage pratique de la sécurité IA avec des applications LLM volontairement vulnérables. Explorez l'OWASP Top 10 pour les LLM à travers des scénarios interactifs de pizzeria couvrant l'injection de prompts, la divulgation de données et les risques liés à la chaîne d'approvisionnement.
Chez PwnzzAI Shop, chaque part sert une bonne dose d'enseignement holistique de la sécurité de l'IA. Cette plateforme d'apprentissage pratique prépare les professionnels à comprendre la protection des technologies d'IA au sens large, à travers un scénario de pizzeria ludique et pratique.
Tout comme un mauvais ingrédient peut gâcher une pizza, un prompt défectueux ou une architecture inadéquate peut laisser les technologies d'IA vulnérables à des menaces graves, notamment les fuites d'informations, le vol de propriété intellectuelle ou les accès illégitimes.
Ici, vous explorerez des exemples pratiques de création, d'exploitation et d'atténuation des vulnérabilités. Pour certaines pages, vous devrez vous connecter avec alice/alice ou bob/bob. Prenez une part, régalez-vous et découvrez à quel point apprendre la sécurité de l'IA peut être savoureux.
Sommaire
PwnzzAI Shop est une plateforme d'apprentissage pratique, délibérément conçue pour l'enseignement de la protection des technologies d'IA. Cette application web Flask volontairement non sécurisée présente un large éventail de faiblesses de sécurité de l'IA à travers une expérience immersive de pizzeria.
Partenaire fondateur : OWASP AI Exchange
PwnzzAI est conçu comme une plateforme d'apprentissage complète et évolutive, alignée sur la taxonomie des risques de l'AI Exchange. Son périmètre s'étend progressivement au rythme des cadres d'analyse de sécurité et des recommandations défensives de l'OWASP AI Exchange, garantissant une pertinence durable à mesure que les pratiques de sécurité de l'IA mûrissent. Le projet intègre actuellement le Top 10 OWASP pour les LLM, avec une architecture délibérément alignée sur les classifications de risques de l'AI Exchange. À terme, PwnzzAI vise à devenir un écosystème d'apprentissage structuré qui prend en charge :
La formation à la protection et à la défense de l'IA, y compris des parcours d'apprentissage en autonomie
Des programmes de formation pratique à la sécurité avec des exercices concrets basés sur des scénarios
Des initiatives d'apprentissage en équipe pour les ingénieurs et professionnels de la sécurité
Une éducation à la sécurité de l'IA de bout en bout, couvrant la conception, le développement, le déploiement et l'exploitation
Choisissez l'une de ces 3 façons d'exécuter PwnzzAI :
https://www.docker.com/products/docker-desktop.git clone https://github.com/OWASP/PwnzzAI.git
cd PwnzzAI
Les ateliers fonctionnent dès le départ avec un modèle local gratuit. Pour utiliser également les onglets modèle cloud (OpenAI / Gemini / Claude), vous avez besoin de deux éléments : une clé API et un nom de modèle :
.env (OPENAI_API_KEY=...). La clé saisie dans Lab Setup a priorité..env. Il n'y a pas de valeur par défaut dans le code, donc les appels échouent avec LLM Provider NOT provided s'il n'est pas défini.Créez .env à partir du modèle fourni et décommentez la ligne du modèle :
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.)
Redémarrez l'application après avoir modifié .env. Pour un guide complet sur les fournisseurs et les modèles, consultez Hôtes d'atelier : choisir OpenAI, Claude, Gemini ou d'autres modèles cloud.
Utilisez cette option si vous souhaitez que Docker exécute à la fois l'application PwnzzAI et Ollama pour vous.
docker compose up -d
docker compose ps
http://localhost:8080
Dans l'application, allez sur la page Basics et exécutez la configuration d'Ollama pour télécharger les modèles.
Consultez les journaux si nécessaire :
# App logs
docker compose logs -f pwnzzai-app
# Ollama logs (optional)
docker compose logs -f ollama
docker compose down
docker compose down -v
Si vous publiez l'image de l'application sous un autre chemin de registre, remplacez le nom de l'image au démarrage :
PWNZZAI_IMAGE=ghcr.io/owasp/pwnzzai:latest docker compose up -d
docker compose utilise l'image pwnzzai-app par défaut de docker-compose.yml (remplaçable avec PWNZZAI_IMAGE). Si docker compose up échoue avec denied, unauthorized ou une erreur similaire lors du téléchargement de l'image, le registre peut exiger une connexion ou votre compte peut ne pas disposer des droits de téléchargement. Vous pouvez tout de même tout exécuter depuis ce dépôt en compilant localement l'image de l'application et en pointant compose vers cette image.
Depuis la racine du dépôt :
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
Ouvrez ensuite http://localhost:8080. Le premier chargement peut échouer brièvement pendant que Flask démarre dans le conteneur ; attendez quelques secondes et actualisez si vous voyez une erreur de connexion.
Si vous avez bien accès à l'image du registre, vous pouvez vous authentifier au préalable (exemple pour GitHub Container Registry) :
docker login ghcr.io
La même approche PWNZZAI_IMAGE=pwnzzai-local:dev s'applique à l'option 2 si vous utilisez docker-compose.external-ollama.yml et rencontrez la même erreur de téléchargement.
Utilisez cette option si Ollama est déjà en cours d'exécution ailleurs et que vous souhaitez exécuter uniquement PwnzzAI dans Docker.
Si vous exécutez Ollama sur WSL et PwnzzAI dans Docker, consultez OLLAMA_CONNECTION_TROUBLESHOOTING.md pour les correctifs de connectivité (Connection refused, host.docker.internal, liaison et validation de l'environnement).
Laissez votre service Ollama en cours d'exécution.
Si Ollama se trouve sur une machine distante, définissez OLLAMA_HOST avant de démarrer (ignorez cette étape si Ollama se trouve sur la même machine que Docker et qu'il est accessible à l'adresse par défaut dans 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
Si l'image d'application par défaut ne se télécharge pas depuis GHCR, compilez-la localement et définissez PWNZZAI_IMAGE comme dans Si l'image par défaut ne se télécharge pas (compilation locale).
Rendez-vous sur http://localhost:8080 dans votre navigateur pour voir l'application. Commencez par la page Basic et configurez votre atelier.
Consultez les journaux de l'application si nécessaire :
docker compose -f docker-compose.external-ollama.yml logs -f pwnzzai-app
docker compose -f docker-compose.external-ollama.yml down
Utilisez cette option si vous souhaitez exécuter Python directement (sans Docker pour l'application).
Linux/macOS :
python -m venv venv
source venv/bin/activate
Windows PowerShell :
python -m venv venv
.\venv\Scripts\Activate.ps1
./install.sh
Assurez-vous qu'Ollama est disponible :
http://localhost:11434 ou un autre point de terminaison via OLLAMA_HOST.
Exécutez l'application :
flask run --host=0.0.0.0 --port=8080
http://localhost:8080
Si vous avez besoin de plus de détails, regardez cette vidéo pas à pas , qui montre l'installation étape par étape.
Cette plateforme présente un large spectre de défis de protection de l'IA, alignés sur la taxonomie complète des menaces de l'OWASP AI Exchange. L'implémentation actuelle couvre le Top 10 OWASP pour les applications LLM et les catégories de menaces fondamentales de l'AI Exchange, avec une architecture extensible conçue pour la couverture des futurs risques liés à l'IA.
Chaque faiblesse présentée dans PwnzzAI comprend :
Selon les menaces de l'OWASP AI Exchange et le Top 10 OWASP pour les applications LLM 2025 :
Injection de prompt AI Exchange : injection directe de prompt, injection indirecte de prompt, Top 10 : LLM-01.
Divulgation de données AI Exchange : divulgation de données sensibles dans la sortie du modèle , Top 10 : LLM-02
Empoisonnement des données et des modèles AI Exchange : empoisonnement des données, empoisonnement des modèles, Top 10 : LLM04
Gestion inappropriée des sorties AI Exchange : la sortie contient une injection conventionnelle, Top 10 : LLM05
Agence excessive AI Exchange : privilège minimal du modèle, Supervision, Top 10 : LLM06
Fuite du prompt système AI Exchange : divulgation d'informations sensibles, Top 10 : LLM07
Faiblesse des vecteurs et des embeddings AI Exchange : fuite directe de données d'augmentation, Top 10 : LLM08
Désinformation AI Exchange : manipulation des données d'augmentation, Top 10 : LLM09
Consommation illimitée AI Exchange : épuisement des ressources IA, Top 10 : LLM10
et,
⚠️ Usage pédagogique uniquement : cette application contient des vulnérabilités de sécurité intentionnelles. Ne l'utilisez pas dans des environnements de production.