在 PwnzzAI 商店,每一片披萨都提供了一份 全面的 AI 安全指导。这个动手实践的学习平台通过一个引人入胜、实用的披萨店场景,帮助专业人士理解如何广泛保护 AI 技术。
就像不正确的配料会毁掉一块披萨一样,有缺陷的提示或不充分的架构可能使 AI 技术容易受到严重威胁,包括信息泄露、知识产权盗窃或未授权访问。
在这里,您将探索 实际示例,了解漏洞是如何被创建、利用和缓解的。您需要以 alice/alice 或 bob/bob 登录才能访问某些页面。拿一块披萨,深入其中,探索学习 AI 安全可以如此美味。
目录
PwnzzAI 商店是一个 动手实践的学习平台,专为教授 AI 技术保护而构建。这个故意不安全的 Flask 驱动的 Web 应用程序通过沉浸式的披萨店体验,展示了一系列广泛的 AI 安全弱点。
创始合作伙伴: OWASP AI Exchange
PwnzzAI 被设计为一个全面且不断发展的学习平台,与 AI Exchange 风险分类 保持一致。其范围随着 OWASP AI Exchange 安全分析框架和防御指导的发展而逐步扩展,确保随着 AI 安全实践的成熟,长期保持相关性。 该项目目前整合了 OWASP Top 10 for LLMs,其架构有意映射到 AI Exchange 风险分类。随着时间的推移,PwnzzAI 旨在发展为一个结构化的学习生态系统,支持:
AI 保护与防御培训,包括自主学习路径
动手实践的安全培训项目,包含实用的场景驱动练习
面向安全工程师和实践者的团队学习计划
端到端的 AI 安全教育,涵盖设计、开发、部署和运营
选择以下 3 种方式之一运行 PwnzzAI:
https://www.docker.com/products/docker-desktop 安装 Docker Desktop。git clone https://github.com/OWASP/PwnzzAI.git
cd PwnzzAI
实验默认使用免费本地模型即可运行。若还要使用 云端模型 标签页(OpenAI / Gemini / Claude),您需要 两个 东西——一个 API 密钥 和 一个模型名称:
.env 中设置(OPENAI_API_KEY=...)。实验设置中输入的密钥优先。.env 文件中。代码中没有默认值,如果未设置,调用会失败并提示 LLM Provider NOT provided。从模板创建 .env 并取消注释模型行:
cp .env.example .env
# 然后编辑 .env 并设置,例如:
# OPENAI_MODEL=gpt-4o-mini
# (或 LITELLM_MODEL=gemini/gemini-2.5-flash 等)
编辑 .env 后重启应用。有关完整提供商/模型说明,请参阅 研讨会主办方:选择 OpenAI、Claude、Gemini 或其他云端模型。
如果您希望 Docker 同时为您运行 PwnzzAI 应用和 Ollama,请使用此选项。
docker compose up -d
docker compose ps
http://localhost:8080
在应用中,进入 Basics 页面并运行 Ollama 设置以拉取模型。
如有需要,查看日志:
# 应用日志
docker compose logs -f pwnzzai-app
# Ollama 日志(可选)
docker compose logs -f ollama
docker compose down
docker compose down -v
如果您将应用镜像发布到其他注册表路径,启动时可以覆盖镜像名称:
PWNZZAI_IMAGE=ghcr.io/owasp/pwnzzai:latest docker compose up -d
docker compose 使用 docker-compose.yml 中的默认 pwnzzai-app 镜像(可通过 PWNZZAI_IMAGE 覆盖)。如果 docker compose up 在拉取该镜像时失败并显示 denied、unauthorized 或类似错误,则注册表可能需要登录,或者您的帐户可能没有拉取权限。您仍然可以通过在本地构建应用镜像并让 compose 指向它来从本仓库运行所有内容。
从仓库根目录执行:
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
然后打开 http://localhost:8080。首次加载时可能会因为 Flask 在容器内启动而短暂失败;等待几秒后刷新页面,如果看到连接错误。
如果您确实有注册表镜像的访问权限,可以先进行身份验证(例如 GitHub Container Registry):
docker login ghcr.io
如果您使用 docker-compose.external-ollama.yml 并遇到相同的拉取错误,同样的 PWNZZAI_IMAGE=pwnzzai-local:dev 方法也适用于选项 2。
如果您已在其他地方运行 Ollama,并且只想在 Docker 中运行 PwnzzAI,请使用此选项。
如果您在 WSL 上运行 Ollama 而在 Docker 中运行 PwnzzAI,请参阅
OLLAMA_CONNECTION_TROUBLESHOOTING.md
以获取连接修复方法(Connection refused、host.docker.internal、绑定和 env 验证)。
保持您的 Ollama 服务运行。
如果 Ollama 在 远程 机器上,请在启动前设置 OLLAMA_HOST(如果 Ollama 与 Docker 在同一台机器上,并且可以通过 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
如果默认应用镜像无法从 GHCR 拉取,请在本地构建并像 如果默认镜像无法拉取(本地构建) 中那样设置 PWNZZAI_IMAGE。
在浏览器中访问 http://localhost:8080 查看应用程序。从 Basic 页面开始并设置您的实验。
如有需要,查看应用日志:
docker compose -f docker-compose.external-ollama.yml logs -f pwnzzai-app
docker compose -f docker-compose.external-ollama.yml down
如果您想直接运行 Python(不使用 Docker 运行应用),请使用此选项。
Linux/macOS:
python -m venv venv
source venv/bin/activate
Windows PowerShell:
python -m venv venv
.\venv\Scripts\Activate.ps1
./install.sh
确保 Ollama 可用:
http://localhost:11434 或通过 OLLAMA_HOST 指定的其他端点。
运行应用:
flask run --host=0.0.0.0 --port=8080
http://localhost:8080
如果您需要更多细节,请观看此演示,其中展示了逐步设置过程。
该平台展示了广泛的 AI 保护挑战,与 OWASP AI Exchange 综合威胁分类 保持一致。目前涵盖 OWASP Top 10 for LLM Applications 和核心 AI Exchange 威胁类别,其可扩展架构为未来 AI 风险覆盖而构建。
PwnzzAI 中演示的每个弱点都具备以下特点:
根据 OWASP AI Exchange 威胁概述 和 OWASP Top 10 for LLM Applications 2025:
提示注入 AI Exchange:直接提示注入,间接提示注入,Top 10:LLM-01。
数据泄露 AI Exchange:模型输出中敏感数据的泄露,Top 10:LLM-02
供应链漏洞 AI Exchange:供应链模型投毒,Top 10:LLM 03
数据和模型投毒 AI Exchange:数据投毒,模型投毒,Top 10:LLM04