
Система защиты веб-сайтов с реактивным управлением на основе ИИ, которая обнаруживает атаки, анализирует их и автономно исправляет исходный код в реальном времени с помощью LLM-агентов.
AI-управляемая реактивная система защиты веб-приложений, предназначенная для отражения атак на основе ИИ в реальном времени.
Mahoraga Defender — это PoC реактивной, не зависящей от типа атакующего системы защиты в реальном времени. Основной механизм заключается в том, чтобы заставить противника проводить разведку и атаки на безобидную, фальшивую среду («shadow»-среду) и регистрировать эти атаки. Затем LLM-агент анализирует логи и передаёт сведения о любых обнаруженных эксплойтах другим LLM-агентам для исправления уязвимостей и развёртывания патчей.
Система спроектирована для полной автоматизации с учётом оптимизации затрат на API. Создан графический интерфейс для удобного мониторинга логов трафика, активности агентов и конвейера патчинга, а также для контроля количества развёртываемых агентов.
Целевой (жертвенный) веб-сайт — это форк crAPI (Completely Ridiculous API), намеренно уязвимого веб-приложения, созданного OWASP для обучения тестированию безопасности API. crAPI имитирует платформу владельцев автомобилей с микросервисами, охватывающими OWASP Top 10 уязвимостей API. Защитник спроектирован так, чтобы чётко различать обычные и вредоносные сессии пользователей, чтобы обычные пользователи не испытывали снижения качества обслуживания, пока защитник защищает сайт от атакующих.
Наш форк (crapi-fork/) добавляет:
Чистая копия хранится в crapi-original/, чтобы среду можно было сбросить между экспериментами.
crapi-fork/. Работает в изолированной bash-среде с доступом только к crapi-fork/.При развёртывании Python-сервисы горяче перезагружаются через gunicorn (мгновенно), а Java/Go-сервисы пересобираются через docker compose up -d --build.
Почему нет агента-тестировщика? Мы рассматривали добавление специального агента для тестирования пользователей и отдельной тестовой среды, но удалили оба, чтобы сохранить систему лёгкой.
conda create -n XYZ python=3.13, затем conda activate XYZ).pip install -r requirements.txt./start.sh из корневого каталога проекта — сбрасывает исходный код crapi-fork/ из crapi-original/, пересобирает все сервисы, размещает флаги и приманки.python3 -m harness.main --app-url http://localhost:8888 -v.localhost:8888 (описание заданий находится по адресу localhost:8888/challenge). Если пентест проводится с помощью ИИ-агента, агент не должен получать доступ к внутренним процессам Docker, так как это будет считаться мошенничеством.localhost:3000 для просмотра логов в реальном времени, действий агентов, патчей, захваченных флагов и т.д.docker compose down -v, чтобы удалить контейнеры Docker и базы данных, созданные для этого проекта.Панель управления: http://localhost:3000
На всех вкладках отображается глобальная строка состояния агентов, показывающая их здоровье (активен/завис/бездействует/ошибка) с элементами управления масштабированием.
Просмотр логов запросов prod/shadow в реальном времени с разделением экрана, цветовой кодировкой по степени серьёзности и группировкой трафика
Лента активности каждого агента с системными промптами, вызовами инструментов и метками используемых LLM
Доска Канбан: Обнаружено → Исправляется → Проверяется → Развёрнуто, с изменяемой панелью деталей
Различия в коде, изменённые файлы, команды отката и временная шкала для каждого патча
Система использует любой API, совместимый с OpenAI. Настройте модели в config/llm.yaml:
# Shadow Analyzer — reads shadow logs to detect exploits (no tool calling)
shadow_analyzer:
provider: gemini
model: gemini-2.5-flash
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.30
output_per_million: 2.50
# Fixer — patches source code (tool-calling agent)
fixer:
provider: gemini
model: gemini-3-flash-preview
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.50
output_per_million: 3.00
# Reviewer — verifies patches (tool-calling agent)
reviewer:
provider: gemini
model: gemini-3-flash-preview
api_key_env: GEMINI_API_KEY # defined in harness/.env
pricing:
input_per_million: 0.50
output_per_million: 3.00
Чтобы сменить провайдера, измените provider и model, затем установите соответствующий ключ API в harness/.env:
Поддерживаемые провайдеры: OpenAI, Gemini, Anthropic, Groq, Together, Ollama, Mistral, DeepSeek, Fireworks, xAI, Perplexity, OpenRouter, Zhipu.
Добавьте собственных провайдеров, указав их базовый URL в разделе providers YAML.
providers:
openai: https://api.openai.com/v1
gemini: https://generativelanguage.googleapis.com/v1beta/openai/
anthropic: https://api.anthropic.com/v1/
groq: https://api.groq.com/openai/v1
... # add more if needed
Примечание: лишь некоторые API-провайдеры имеют достаточно высокий лимит запросов для одновременной работы 3+ агентов. Google Gemini — один из них.
Особая благодарность d3lta05 (LinkedIn) и aleemladha за помощь в пентестинге.