MoazzamSameer/mcp-firewall-pentest
GitHub: MoazzamSameer/mcp-firewall-pentest
面向 MCP Firewall 的自主 AI 红队测试框架,在闭环中驱动 Cursor agent 对授权网关执行安全绕过测试并生成可复现报告。
Stars: 0 | Forks: 0
# MCP Firewall 渗透测试
这是用于 [MCP Firewall](https://github.com/MoazzamSameer/mcp-firewall) 的自主 AI 红队测试工具。它在闭环中针对**你控制的真实网关**运行 Cursor SDK agent,根据防火墙的威胁模型对绕过行为进行评分,并生成可复现的安全报告。
## 仅限授权使用
**仅**对你拥有或获得明确书面测试许可(本地 Docker、预发布环境、专用实验室)的 MCP Firewall 实例运行此工具。不要将其指向第三方系统。
安全默认设置:
- 目标 URL 必须匹配 `config/target.yaml` 中的 `allowed_hosts`
- 仅使用合成的机密信息(`sk-fakepentest...`、虚假的 PEM 块)
- `/v1/proxy` 任务使用 compose 中的模拟上游,而不是公共互联网
## 前置条件
- Python 3.10+
- 本地运行的 MCP Firewall([快速开始](https://github.com/MoazzamSameer/mcp-firewall#quick-start))
- 用于自主 agent 模式的 `CURSOR_API_KEY`(来自 Cursor Dashboard → API Keys)
## 快速开始
```
cd mcp-firewall-pentest
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,agent]"
cp .env.example .env
# 使用 CURSOR_API_KEY 编辑 .env
# 终端 1:启动防火墙(在 mcp-firewall 仓库中)
# docker compose up 或 uvicorn mcp_firewall.server:app --port 8080
# 终端 2:可选的 mock upstream + 完整技术栈
docker compose -f compose/docker-compose.yml up -d mock
# 运行所有 missions
python scripts/run_redteam.py --mission all
# 单个 mission,dry-run(无 Cursor API)
python scripts/run_redteam.py --mission prompt_injection --planner heuristic --dry-run
```
报告将写入 `reports//`(`report.md`、`findings.json`)。
根据任意运行记录生成一个独立的 HTML 仪表板(无需依赖,支持离线打开):
```
python scripts/build_dashboard.py --latest # writes reports//dashboard.html
```
## 架构
**编排器** 负责所有发往 MCP Firewall 的 HTTP 调用。**Cursor SDK agent** 仅以 JSON 格式提出下一次攻击建议;编排器负责评估、打分并反馈结果。
```
Orchestrator → Cursor agent (propose JSON) → POST /v1/evaluate → score → feedback
```
## 任务
| ID | 威胁 |
|----|--------|
| `prompt_injection` | 工具 payload 中的混淆注入 |
| `metadata_ssrf` | 云元数据主机变体 |
| `secret_exfil` | 参数中的凭证模式 |
| `scope_escalation` | 缺失/错误的 OAuth scope |
| `readonly_bypass` | 通过只读工具进行修改 |
| `shell_chain` | Shell 工具中的远程获取/执行 |
| `tool_confusion` | 未知与被拒绝的工具名称 |
| `proxy_ssrf` | 不允许的 `/v1/proxy` 上游 |
| `auth_abuse` | 缺失/无效的凭证 |
| `rate_limit` | 针对 rate limiter 的突发流量 |
## 双仓库工作流
```
~/Projects/
mcp-firewall/ # gateway under test
mcp-firewall-pentest/ # this repo
```
1. 使用开发 API key `mcpf_dev_local` 在端口 `8080` 上启动防火墙。
2. 将 `.env` 中的 `MCPF_BASE_URL` 指向该实例。
3. 运行渗透测试;针对每个确认的绕过漏洞在 mcp-firewall 提交 issue。
## Scope 提升说明
防火墙会将 `call.scopes` 与 API-key/JWT scope 合并。默认的 `mcpf_dev_local` key 包含 `github:write`,因此 scope 提升的种子 payload 可能会被标记为 **不确定** 而不是成功绕过。若要进行严格的 scope 测试,请在 `config/target.yaml` 中配置一个受限的 API key。
## CI
GitHub Actions 会在没有 `CURSOR_API_KEY` 的情况下运行**确定性冒烟测试**(启发式规划器、种子 payload)。如果配置了该 secret,则可以选择执行完整的 agent 运行。
## 许可证
MIT
标签:AI自动化, CISA项目, Cursor SDK, IP 地址批量处理, MCP防火墙, 版权保护, 逆向工具