AI驱动的反应式网站防御系统,能够检测攻击、分析攻击,并利用LLM代理实时自主修补源代码。
基于AI的响应式Web应用防御系统,旨在实时抵御AI驱动的攻击。
Mahoraga Defender 是一个概念验证系统,实现了响应式、攻击者类型无关的实时防御。其核心机制是诱骗攻击者在一个无害的伪造环境("影子"环境)中进行发现和攻击,并将这些攻击记录下来。然后,LLM Agent 分析日志,将检测到的任何漏洞详情交给更多 LLM Agent 来修复漏洞并部署补丁。
该系统设计为完全自动化,同时注重 API 成本优化。提供了 GUI 以便轻松监控流量日志、Agent 活动和打补丁管线,以及控制部署的 Agent 数量。
目标(受害者)网站是 crAPI (Completely Ridiculous API) 的一个分支,crAPI 是 OWASP 为教授 API 安全测试而创建的一个故意存在漏洞的 Web 应用程序。crAPI 模拟了一个车辆所有者平台,包含覆盖 OWASP Top 10 API 漏洞的微服务。防御者的设计目标是清晰区分正常用户会话和敌对用户会话,这样在防御者保护网站免受攻击者攻击时,正常用户不会感受到任何用户体验质量下降。
我们的分支(crapi-fork/)增加了:
crapi-original/ 中保留了一份原始副本,以便在实验之间重置环境。
crapi-fork/ 中打补丁。在沙箱化的 bash 环境中运行,访问权限仅限于 crapi-fork/。部署时,Python 服务通过 gunicorn 进行热重载(即时生效),而 Java/Go 服务则通过 docker compose up -d --build 重新构建。
为什么没有测试 Agent? 我们曾考虑添加一个专用的用户测试 Agent 和一个单独的测试环境,但为了保持系统轻量,两者都移除了。
conda create -n XYZ python=3.13,然后 conda activate XYZ)。pip install -r requirements.txt./start.sh —— 从 crapi-original/ 重置 crapi-fork/ 源代码,重建所有服务,植入旗帜和蜜罐。python3 -m harness.main --app-url http://localhost:8888 -v。localhost:8888 上的网站进行渗透测试(挑战描述在 localhost:8888/challenge)。如果使用 AI Agent 进行渗透测试,Agent 不应获得对内部 docker 进程的任何访问权限,否则视为作弊。localhost:3000 上的防御者仪表盘,以查看实时日志、Agent 操作、补丁、捕获的旗帜等。docker compose down -v 移除为本项目启动的 docker 容器和数据库。在所有标签页上可见一个全局 Agent 状态栏,显示 Agent 健康状态(活跃/挂起/空闲/错误)并带有扩缩控制。
实时分屏的生产/影子请求日志查看器,带有严重级别颜色标记和流量分组
每个 Agent 的活动馈送,包含系统提示、工具调用和 LLM 模型标签
看板:已检测 → 正在修复 → 正在审查 → 已部署,带有可调整大小的详情面板
每个补丁的代码差异、修改的文件、回滚命令和时间线
系统使用任何兼容 OpenAI 的 API。在 config/llm.yaml 中配置模型:
# 影子分析器 — 读取影子日志以检测漏洞利用(无工具调用)
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
# 修复者 — 修补源代码(工具调用 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
# 审查者 — 验证补丁(工具调用 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,然后在 harness/.env 中设置相应的 API Key:
支持的提供商:OpenAI, Gemini, Anthropic, Groq, Together, Ollama, Mistral, DeepSeek, Fireworks, xAI, Perplexity, OpenRouter, Zhipu。
通过将提供商的基础 URL 添加到 YAML 的 providers 部分,可以添加自定义提供商。
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
... # 需要时添加更多
注意:只有少数 API 提供商具有足够高的速率限制以支持 3 个以上的 Agent 同时工作。Google 的 Gemini 是其中之一。
特别感谢 d3lta05 (LinkedIn) 和 aleemladha 在渗透测试方面的帮助。