
Практическая платформа для изучения безопасности ИИ с намеренно уязвимыми LLM-приложениями. Исследуйте OWASP Top 10 для LLM на интерактивных сценариях пиццерии, охватывающих внедрение промптов, раскрытие данных и риски цепочки поставок.
В PwnzzAI Shop каждый кусочек подаёт порцию целостного обучения безопасности ИИ. Эта практическая платформа готовит специалистов к пониманию защиты AI-технологий в широком смысле через увлекательный практический сценарий пиццерии.
Подобно тому, как неправильный ингредиент может испортить пиццу, некорректный промпт или неадекватная архитектура могут оставить AI-технологии уязвимыми для серьёзных угроз, включая утечку информации, кражу интеллектуальной собственности или несанкционированный доступ.
Здесь вы изучите практические примеры того, как уязвимости создаются, эксплуатируются и устраняются. Для некоторых страниц необходимо войти как alice/alice или bob/bob. Берите кусочек, погружайтесь и узнайте, каким вкусным может быть обучение безопасности ИИ.
Содержание
PwnzzAI Shop представляет собой практическую платформу обучения, намеренно созданную для обучения защите AI-технологий. Это намеренно небезопасное Flask-приложение демонстрирует широкий спектр уязвимостей безопасности ИИ через иммерсивный опыт пиццерии.
Партнёр-основатель: OWASP AI Exchange
PwnzzAI разработан как всеобъемлющая, развивающаяся обучающая платформа, соответствующая таксономии рисков AI Exchange. Его область применения постепенно расширяется в ногу с фреймворками анализа безопасности и защитными рекомендациями OWASP AI Exchange, обеспечивая долгосрочную актуальность по мере развития практик безопасности ИИ. В настоящее время проект включает OWASP Top 10 для LLM, с архитектурой, намеренно сопоставленной с классификацией рисков AI Exchange. Со временем PwnzzAI стремится стать структурированной образовательной экосистемой, поддерживающей:
Выберите один из 3 способов запуска PwnzzAI:
https://www.docker.com/products/docker-desktop.git clone https://github.com/OWASP/PwnzzAI.git
cd PwnzzAI
Лабораторные работы изначально работают на бесплатной локальной модели. Чтобы также использовать вкладки облачных моделей (OpenAI / Gemini / Claude), вам понадобятся две вещи — API-ключ и имя модели:
.env (OPENAI_API_KEY=...). Ключ из Lab Setup имеет приоритет..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 использует образ pwnzzai-app по умолчанию из docker-compose.yml (переопределяется с помощью 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
Тот же подход с PWNZZAI_IMAGE=pwnzzai-local:dev применим к Варианту 2, если вы используете docker-compose.external-ollama.yml и сталкиваетесь с той же ошибкой загрузки.
Используйте этот вариант, если Ollama уже запущен где-то ещё и вы хотите запустить только PwnzzAI в Docker.
Если вы запускаете Ollama на WSL, а PwnzzAI в Docker, см.
OLLAMA_CONNECTION_TROUBLESHOOTING.md
для устранения проблем с подключением (Connection refused, host.docker.internal, привязка и проверка переменных окружения).
Оставьте ваш сервис 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
Если нужны подробности, посмотрите этот обзор , в котором показана пошаговая настройка.
Эта платформа демонстрирует обширный спектр проблем защиты ИИ, соответствующий всеобъемлющей таксономии угроз OWASP AI Exchange. Текущая реализация охватывает OWASP Top 10 для LLM-приложений и основные категории угроз AI Exchange с расширяемой архитектурой, предназначенной для будущего покрытия рисков ИИ.
Каждая уязвимость, демонстрируемая в PwnzzAI, включает:
В соответствии с угрозами OWASP AI Exchange и OWASP Top 10 для LLM-приложений 2025:
Prompt Injection AI Exchange: Direct Prompt Injection, Indirect Prompt Injection, Top 10: LLM-01.
Data Disclosure AI Exchange: Disclosure of sensitive data in model output , Top 10: LLM-02
Data and Model Poisoning AI Exchange: Data Poisoning, Model Poisoning, Top 10: LLM04
Improper Output Handling AI Exchange: Output Contains Conventional Injection, Top 10:LLM05
Excessive Agency AI Exchange: Least Model Privilege, Oversight, Top 10:LLM06
System Prompt Leakage AI Exchange: Sensitive Information Disclosure, Top 10:LLM07
Vector and Embedding Weakness AI Exchange: Direct augmentation data leak, Top 10:LLM08
Misinformation AI Exchange: Augmentation data manipulation, Top 10:LLM09
Unbounded Consumption AI Exchange: AI Resource Exhaustion, Top 10:LLM10
и,
⚠️ Только для образовательных целей: Это приложение содержит намеренные уязвимости безопасности. Не используйте в производственной среде.