
Plataforma prática de aprendizado em segurança de IA com aplicações LLM intencionalmente vulneráveis. Explore o Top 10 da OWASP para LLMs através de cenários interativos de pizzaria abrangendo injeção de prompt, divulgação de dados e riscos na cadeia de suprimentos.
Na PwnzzAI Shop, cada fatia serve uma porção de instrução holística de segurança em IA. Esta plataforma prática de aprendizado prepara profissionais para entender a proteção das tecnologias de IA de forma ampla, entregue através de um cenário envolvente e prático de pizzaria.
Assim como um ingrediente incorreto pode estragar uma pizza, um prompt defeituoso ou uma arquitetura inadequada pode deixar as tecnologias de IA vulneráveis a ameaças graves, incluindo violações de informações, roubo de propriedade intelectual ou acesso ilegítimo.
Aqui, você explorará exemplos práticos de como vulnerabilidades são criadas, exploradas e mitigadas. Você precisa fazer login como alice/alice ou bob/bob para algumas páginas. Pegue uma fatia, mergulhe e descubra como aprender sobre segurança em IA pode ser delicioso.
Índice
A PwnzzAI Shop representa uma plataforma de aprendizado prática propositalmente construída para instrução sobre proteção de tecnologias de IA. Esta aplicação web intencionalmente insegura baseada em Flask exibe uma extensa gama de fragilidades de segurança em IA através de uma experiência imersiva de pizzaria.
Parceiro fundador: OWASP AI Exchange
PwnzzAI é projetada como uma plataforma de aprendizado abrangente e em evolução, alinhada com a taxonomia de riscos do AI Exchange. Seu escopo se expande progressivamente em sintonia com os frameworks de análise de segurança e orientações defensivas do OWASP AI Exchange, garantindo relevância a longo prazo à medida que as práticas de segurança em IA amadurecem. O projeto atualmente incorpora o OWASP Top 10 para LLMs, com uma arquitetura intencionalmente mapeada para as classificações de risco do AI Exchange. Com o tempo, a PwnzzAI visa amadurecer em um ecossistema de aprendizado estruturado que suporta:
Escolha uma destas 3 maneiras de executar a PwnzzAI:
https://www.docker.com/products/docker-desktop.git clone https://github.com/OWASP/PwnzzAI.git
cd PwnzzAI
Os laboratórios são executados com um modelo local gratuito pronto para uso. Para também usar as abas de modelo em nuvem (OpenAI / Gemini / Claude), você precisa de duas coisas — uma chave de API e um nome de modelo:
.env (OPENAI_API_KEY=...). A chave do Lab Setup tem precedência..env. Não há padrão no código, então as chamadas falham com LLM Provider NOT provided se não estiver definido.Crie o .env a partir do modelo e descomente a linha do modelo:
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.)
Reinicie o aplicativo após editar o .env. Para um guia completo sobre provedores/modelos, veja Workshop hosts: escolhendo OpenAI, Claude, Gemini ou outros modelos em nuvem.
Use esta opção se quiser que o Docker execute tanto o aplicativo PwnzzAI quanto o Ollama para você.
docker compose up -d
docker compose ps
http://localhost:8080
No aplicativo, vá para a página Basics e execute a configuração do Ollama para baixar os modelos.
Acompanhe os logs se necessário:
# Logs do aplicativo
docker compose logs -f pwnzzai-app
# Logs do Ollama (opcional)
docker compose logs -f ollama
docker compose down
docker compose down -v
Se você publicar a imagem do aplicativo em outro caminho de registro, substitua o nome da imagem ao iniciar:
PWNZZAI_IMAGE=ghcr.io/owasp/pwnzzai:latest docker compose up -d
O docker compose usa a imagem padrão pwnzzai-app do docker-compose.yml (substituível por PWNZZAI_IMAGE). Se docker compose up falhar com denied, unauthorized, ou similar ao baixar essa imagem, o registro pode exigir login ou sua conta pode não ter acesso de pull. Você ainda pode executar tudo a partir deste repositório compilando a imagem do aplicativo localmente e apontando o compose para ela.
A partir da raiz do repositório:
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
Em seguida, abra http://localhost:8080. O primeiro carregamento pode falhar brevemente enquanto o Flask inicia dentro do container; aguarde alguns segundos e atualize se vir um erro de conexão.
Se você tiver acesso à imagem do registro, pode autenticar primeiro (exemplo para o GitHub Container Registry):
docker login ghcr.io
A mesma abordagem PWNZZAI_IMAGE=pwnzzai-local:dev se aplica à Opção 2 se você usar docker-compose.external-ollama.yml e encontrar o mesmo erro de pull.
Use esta opção se o Ollama já estiver em execução em outro lugar e você quiser executar apenas a PwnzzAI no Docker.
Se você executar o Ollama no WSL e a PwnzzAI no Docker, veja
OLLAMA_CONNECTION_TROUBLESHOOTING.md
para correções de conectividade (Connection refused, host.docker.internal, binding e validação de env).
Mantenha seu serviço Ollama em execução.
Se o Ollama estiver em uma máquina remota, defina OLLAMA_HOST antes de iniciar (pule isto se o Ollama estiver na mesma máquina que o Docker e acessível pelo padrão em 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 a imagem padrão do aplicativo não for baixada do GHCR, compile localmente e defina PWNZZAI_IMAGE conforme em Se a imagem padrão não for baixada (compile localmente).
Acesse http://localhost:8080 no seu navegador para ver o aplicativo. Comece pela página Basics e configure seu laboratório.
Acompanhe os logs do aplicativo se necessário:
docker compose -f docker-compose.external-ollama.yml logs -f pwnzzai-app
docker compose -f docker-compose.external-ollama.yml down
Use esta opção se quiser executar Python diretamente (sem Docker para o aplicativo).
Linux/macOS:
python -m venv venv
source venv/bin/activate
Windows PowerShell:
python -m venv venv
.\venv\Scripts\Activate.ps1
./install.sh
Certifique-se de que o Ollama esteja disponível:
http://localhost:11434 ou outro endpoint via OLLAMA_HOST.
Execute o aplicativo:
flask run --host=0.0.0.0 --port=8080
http://localhost:8080
Se precisar de mais detalhes, assista a este tutorial , que mostra a configuração passo a passo.
Esta plataforma exibe um amplo espectro de desafios de proteção de IA, alinhados com a taxonomia abrangente de ameaças do OWASP AI Exchange. A implementação atual cobre o OWASP Top 10 para Aplicações LLM e categorias principais de ameaças do AI Exchange, com uma arquitetura extensível construída para cobertura futura de riscos de IA.
Cada fragilidade demonstrada na PwnzzAI apresenta:
De acordo com as ameaças do OWASP AI Exchange e o OWASP Top 10 para Aplicações LLM 2025:
Injeção de Prompt AI Exchange: Injeção Direta de Prompt, Injeção Indireta de Prompt, Top 10: LLM-01.
Divulgação de Dados AI Exchange: Divulgação de dados sensíveis na saída do modelo, Top 10: LLM-02
Envenenamento de Dados e Modelo AI Exchange: Envenenamento de Dados, Envenenamento de Modelo, Top 10: LLM04
Manipulação Incorreta de Saída AI Exchange: Saída Contém Injeção Convencional, Top 10:LLM05
Agência Excessiva AI Exchange: Privilégio Mínimo do Modelo, Supervisão, Top 10:LLM06
Vazamento de Prompt do Sistema AI Exchange: Divulgação de Informações Sensíveis, Top 10:LLM07
Fragilidade de Vetores e Embeddings AI Exchange: Vazamento direto de dados de aumento, Top 10:LLM08
Desinformação AI Exchange: Manipulação de dados de aumento, Top 10:LLM09
Consumo Ilimitado AI Exchange: Esgotamento de Recursos de IA, Top 10:LLM10
e,
⚠️ Apenas para Fins Educacionais: Esta aplicação contém vulnerabilidades de segurança intencionais. Não use em ambientes de produção.