RasheedFarhat/mcp-detect
GitHub: RasheedFarhat/mcp-detect
MCP Detect 是一个开源的 MCP 协议滥用检测研究实验室,通过捕获和分析 JSON-RPC 流量,结合 Wazuh 规则与有状态检测器在合成语料库上实现可复现的滥用检测与覆盖率度量。
Stars: 0 | Forks: 0
# MCP Detect
**一个用于 Model Context Protocol 滥用的开源检测工程实验室。**
MCP Detect 将 MCP JSON-RPC 流量捕获为结构化遥测数据,并使用 Wazuh 规则和有状态检测器对其进行评估,同时根据冻结的、已标注的语料库对结果进行度量。该仓库包含完整的自创数据集、复现工具、已知的检测盲点,以及一个合成授权案例研究。
这是一个研究实验室,而不是生产环境的监控器、强制执行网关、认证,也不能证明某个 MCP 部署是安全的。
## 复现证据
在全新的克隆环境中,使用 Python 3.11 或更高版本:
```
make measure
```
该命令针对公开的示例语料库重放已提交的 `wazuh-logtest` 判定结果。要复现完整的已发表测量结果:
```
make measure-full
```
这两种方式都是离线的,不需要任何凭证,并且仅使用本仓库中的文件。有关重放具体证明了什么,以及哪些内容仍需实时运行 Wazuh,请参阅 [REPRO-VERIFICATION.md](REPRO-VERIFICATION.md)。
## 架构与信任边界
```
MCP client ──▶ transparent proxy ──▶ MCP server ──▶ downstream resource
│
▼
telemetry.jsonl
│
┌─────────┼──────────┐
▼ ▼ ▼
Wazuh rules stateful inventory and
drift coverage tools
```
代理原封不动地转发流量,并为每个 JSON-RPC 消息记录一个 JSONL 事件。无状态规则用于检测结构化指标。基线监视器用于检测跨会话的定义漂移。框架工具用于编译检测元数据、关联告警、计算覆盖率,并在锁定的规则哈希值发生变化时拒绝陈旧的离线证据。
遥测层可以观察到达 handler 的身份标识和参数。但它本身无法证明 handler 是否正确执行了租户所有权或下游授权。合成[跨租户引用](samples/reference-mcp-review/README.md)通过易受攻击的源码、精确的修复方案以及被拒绝的重测演示了该边界。
## 当前检测项
| 技术 | 信号 | 实现方式 |
|---|---|---|
| Tool poisoning | 公告的工具描述中包含隐藏指令 | Wazuh |
| 凭证暴露指标 | 敏感读取或密钥形式的参数 | Wazuh |
| 敏感绝对路径读取 | 传递给文件工具的凭证或系统路径 | Wazuh |
| 路径遍历 | `../` 类型的转义尝试 | Wazuh |
| Rug pull | 在建立信任后更改服务器或工具定义 | 有状态基线 |
完整的自创语料库以 **12/12、11/11、11/11 和 3/3** 的场景结果进行复现,并在 **4,727 条良性记录 / 541 个会话中实现了 0 告警**。这些是针对项目自创流量的回归测试结果,并非独立的准确性声明。
## 诚实的局限性
- 所有包含的恶意和良性遥测数据均为合成且由作者自行创建。
- 遥测无法确定语义意图或证明下游授权。
- 编码型数据外泄、同形字指令以及仅基于行为的入侵可以规避这些结构性信号。
- 离线重放证明了冻结引擎判定结果的可复现性;而实时一致性则需要使用 Docker/Wazuh 路径。
- 运行无异常仅仅意味着已实施的检查未发现匹配的指标。
当前的证据记录账本位于 [docs/STATE-OF-PROJECT.md](docs/STATE-OF-PROJECT.md)。
## 仓库地图
- `proxy/` — 字节透明的 MCP stdio 代理和遥测捕获。
- `schema/` — 用于遥测记录的 JSON Schema 和验证器。
- `detections/` 和 `wazuh/` — 检测定义和 Wazuh 规则。
- `baseline/` — 有状态的“首次使用即信任”漂移检测。
- `framework/` — 编译器、注册表、覆盖率、清单和验证工具。
- `attacks/` 和 `corpus/` — 合成流量生成器和测试夹具。
- `data/` — 示例、良性、规避和完整的攻击语料库。
- `samples/reference-mcp-review/` — 合成的跨租户缺陷、修复和重测。
- `northwindpay/` — 合成的遥测处理示例。
- `docs/` — 设计决策、引擎发现、报告和研究历史。
## 验证命令
```
make measure # fast sample replay
make measure-full # complete public corpus replay
make test # offline framework regression suite
make check-sample # verify the synthetic NorthwindPay artifacts
```
代理的 JSON Schema 断言使用可选的测试依赖项:
```
python3 -m venv .venv
.venv/bin/pip install -e '.[test]'
make verify # consolidated offline release check
```
本地 Docker 实验环境是专门为开发凭证和环回访问配置的。不要将其暴露于不受信任的网络中,也不要将其视为生产环境的部署。实时引擎的说明位于 [docs/REPRO.md](docs/REPRO.md)。
## 贡献与安全
欢迎您的贡献。在提交规则、语料库夹具或框架更改之前,请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。请通过 [SECURITY.md](SECURITY.md) 中的私密流程报告疑似漏洞。
MCP Detect 由 [Rasheed Farhat](https://github.com/RasheedFarhat) 创建并维护。如果您在研究中使用该项目,请参阅 [CITATION.cff](CITATION.cff)。
## 许可证
MIT。该许可证涵盖本仓库中的原始代码、规则、文档、夹具和完整的合成语料库。请参阅 [LICENSE](LICENSE)。
标签:DLL 劫持, MCP协议, URL发现, Wazuh, 大语言模型, 安全检测, 流量监控, 请求拦截, 逆向工具