AlexlaGuardia/siege
GitHub: AlexlaGuardia/siege
Siege 是一个针对实时 MCP 服务器的运行时红队测试框架,通过模拟不同角色发起真实请求来发现静态扫描无法察觉的授权绕过等安全问题。
Stars: 0 | Forks: 0
# Siege
**一个针对实时 MCP 服务器的运行时红队测试框架。** 将其指向一个正在运行的
服务器,它就会模拟真实角色发起攻击,并返回静态扫描器
无法察觉的发现——因为漏洞并不存在于清单中,而是在你实际调用服务器时
其表现出的行为里。
Siege 是一个智能体治理套件的攻击端:**[Warden](https://warden.alexlaguardia.dev)
负责治理,[Crumb](https://crumb.alexlaguardia.dev) 负责归因,Siege 负责证明其有效性。**
## 为什么选择运行时而非静态
当今存在的 MCP 安全工具(MCP-Scan / Snyk Agent Scan,Cisco 的
扫描器)读取的是工具*清单*:它们在工具描述中 grep(搜索)有毒的
指令。这确实能捕捉到一类真实的攻击。但它们无法捕捉到那类
只有在服务器运行时才会存在的攻击。
在 Warden 中发现并修复的一个具体示例:
Siege 通过针对实时服务器模拟 `support` 角色的行为来捕捉此类问题。
```
$ python -m scripts.demo_before_after
BEFORE — vulnerable Warden (4938bdf)
## 1. [HIGH] 已隐去字段 'tier' 通过 'accounts' 上的 filter predicate 泄露
Found as role: support
Reproduce: query_resource({"resource_type":"accounts","filters":{"tier":"Enterprise"}})
leaked_records: ['Acme Corp', 'Initech', 'Umbrella Co', 'Hooli', 'Stark Industries', 'Wayne Enterprises']
AFTER — fixed Warden (7188eed)
No findings. The probed classes held.
VERDICT: PASS — Siege caught the bug and cleared the fix.
```
## 探测类别
- **类别 A — Authz / RBAC 绕过** *(已实现)*。模拟每个
角色对服务器进行测试,并对比返回结果的差异:脱敏字段过滤器泄露、行级权限
越权、id 枚举 (IDOR) 以及越权资源读取;错误通道
泄露将是下一步的重点。全新之处在于——目前还没有人为 MCP 提供运行时 authz 探测。
- **类别 B — 工具投毒 / 注入** *(下一步)*。这是其*行为*层面的体现:
注入有毒的工具描述或结果,运行真实的 agent loop,并判断
(LLM) 该 agent 是否真的被劫持——而不是仅仅看清单看起来是否
可疑。
- **类别 C — 静默失败 / 契约违规** *(已规划)*。服务器是否在
返回空数据或错误数据的同时声称操作成功?
每份报告都会注明它运行了哪些类别的测试,并记录哪些内容未被测试。绝不
吹嘘“能找出所有漏洞”。
## 用法
```
pip install -r requirements.txt
python -m siege.cli scan --target warden # scan the built-in fixture
python -m siege.cli scan --target warden --json --report siege.json
python -m scripts.demo_before_after # the before/after proof
python -m tests.test_authz # fast self-check
```
`--target` 指定一个内置的 fixture(目前为 `warden`)。自定义 target 和
HTTP transport 将在 v0.2 版本中推出(目前支持 stdio)。
## 工作原理
`siege/target.py` 是官方 `mcp` SDK 之上的一个轻量级异步适配器:它
以*特定身份*(stdio 的环境变量覆盖,HTTP 的请求头
设置)打开与目标 的会话,列出工具,
并调用它们。`siege/probes/authz.py` 从最高权限的身份中学习
schema 和实际值,然后针对每个受限
身份对比可见字段的差异,并探测隐藏的字段。发现的问题都附带了
精确且可重现的复现步骤。
## 技术栈
Python、官方 `mcp` SDK(客户端)、用于运行持久化的 SQLite,以及用于
行为注入类测试的 Claude(作为 Opus 评委)。
由 [Alex LaGuardia](https://alexlaguardia.dev) 构建。v0.1 版本仅针对 MCP;设计上
具备运行时、行为感知和角色感知能力。
标签:AI智能体, MCP安全, 动态扫描, 自动化渗透, 越权测试, 逆向工具