poojakira/mcp-security-gateway-monitor
GitHub: poojakira/mcp-security-gateway-monitor
一个部署在 AI 与 MCP 工具之间的安全网关监控器,通过多层防御架构实时拦截 prompt 注入、数据泄露和未授权网络访问等威胁。
Stars: 0 | Forks: 0
# MCP Security Gateway 监控
一个实时安全监控器,旨在保护 AI 工具调用(MCP 协议)免受 prompt 注入、数据泄露、隐藏 BCC 攻击等威胁。完全基于 Python 标准库构建,零 runtime 依赖。
## 本项目的作用
当 AI 助手使用外部工具(电子邮件、文件访问、API)时,这些工具可能会被劫持。在 2026 年年中,一个 MCP server 在发出的电子邮件中悄悄添加了隐藏的 BCC,将副本转发给了攻击者。本项目为可见的工具调用和出站流量信号添加了监控与拦截控制,但不能保证完全防御。
**MCP Security Gateway Monitor** 旨在部署在 AI 及其工具之间。在配置的代理路径中,工具调用最多可以经过 10 个防御层,这些防御层会在可疑活动触达外部环境之前对其进行检查、分析和拦截。可以将它看作是专为 AI 与工具通信设计的防火墙。
它将:
- 拦截隐藏在工具参数内部的 prompt 注入
- 捕捉隐藏的电子邮件收件人(真实的 Postmark BCC 攻击)
- 检测通过编码的 payload 或可疑 URL 进行数据泄露的行为
- 标记未经授权的网络连接和 DNS 查询
- 生成实时 HTML 安全仪表盘,展示被捕捉到的威胁
## 快速开始
### 单行测试(全平台)
```
git clone https://github.com/poojakira/mcp-security-gateway-monitor.git && cd mcp-security-gateway-monitor && pip install -e ".[dev]" && python -m pytest tests/ -v
```
### Ubuntu / Linux / macOS
```
# 1. Clone repository
git clone https://github.com/poojakira/mcp-security-gateway-monitor.git
cd mcp-security-gateway-monitor
# 2. 创建 virtual environment(推荐)
python3 -m venv .venv
source .venv/bin/activate
# 3. 使用 dev dependencies 安装 package
python3 -m pip install -e ".[dev]"
# 4. 运行所有测试
python3 -m pytest tests/ -v
# 5. 运行 coverage
python3 -m pytest tests/ --cov=mcp_monitor --cov-report=term-missing
# 6. 运行 security dashboard
python3 run_dashboard.py
```
### Windows PowerShell
```
# 1. Clone repository
git clone https://github.com/poojakira/mcp-security-gateway-monitor.git
cd mcp-security-gateway-monitor
# 2. 创建 virtual environment(推荐)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
# 3. 使用 dev dependencies 安装 package
python -m pip install -e ".[dev]"
# 4. 运行所有测试
python -m pytest tests/ -v
# 5. 运行 coverage
python -m pytest tests/ --cov=mcp_monitor --cov-report=term-missing
# 6. 运行 security dashboard
python run_dashboard.py
```
### Windows Command Prompt (cmd.exe)
```
REM 1. Clone the repository
git clone https://github.com/poojakira/mcp-security-gateway-monitor.git
cd mcp-security-gateway-monitor
REM 2. Create a virtual environment (recommended)
python -m venv .venv
.venv\Scripts\activate.bat
REM 3. Install the package with dev dependencies
REM NOTE: Do NOT quote .[dev] in cmd.exe
python -m pip install -e .[dev]
REM 4. Run all tests
python -m pytest tests/ -v
REM 5. Run with coverage
python -m pytest tests/ --cov=mcp_monitor --cov-report=term-missing
REM 6. Run the security dashboard
python run_dashboard.py
```
## 10 个防御层的工作原理
本项目实现了一个包含 10 个防御层的纵深防御架构,这些防御层协同工作,在多个节点捕捉攻击:
| 层级 | 名称 | 作用 |
|-------|------|--------------|
| 1 | **Audit Log** | 在 SHA-256 哈希链式日志中记录工具调用。验证哈希链时可以检测到是否存在篡改。 |
| 2 | **Inline Proxy Gateway** | 拦截所有工具调用。在可疑调用执行前应用规则、进行风险评分,并拦截/隔离这些调用。 |
| 3 | **Kernel Monitor** | 监控 syscall 级别行为:网络连接、DNS 查询、文件访问、进程生成。强制执行针对每个 server 的策略。 |
| 4 | **Semantic Intent Analyzer** | 理解工具调用的真实意图。检测 BCC 同义词、数据泄露模式、编码电子邮件以及可疑字段。 |
| 5 | **Network Egress Policy** | 控制每个 server 可以访问的目标。默认拒绝,并配有显式的允许规则。拦截已知的恶意域名和超大 payload。 |
| 6 | **ML Threat Classifier** *(BETA)* | 实验性 scikit-learn 模型(TF-IDF 字符 n-grams + LogisticRegression),基于内置的合成语料库训练。仅作为补充信号——关于测得的留存性能,请参阅下文的 BETA 说明。 |
| 7 | **Rate Limiter** | 通过强制执行收件人白名单和每分钟速率上限来限制爆炸半径。阻止大规模数据泄露。 |
| 8 | **Honeypot Vault** | 在工具响应中植入 canary token。如果某个 token 出现在不该出现的地方,即可确认存在数据泄露路径。 |
| 9 | **Docker Sandbox** | 在网络受限的 container 中隔离不受信任的 MCP server。互联网访问受配置的 container 策略限制,并应在部署时进行验证。 |
| 10 | **Network Monitor + DPI** | 深度包检测,将声明的 MCP 意图与实际的 HTTP 流量进行比较。捕捉对发送内容进行欺骗的工具。 |
前 5 个防御层在每次工具调用时都会运行,且无任何外部依赖。防御层 6-10 为生产环境部署添加了 ML、沙盒和深度检测功能。
## 项目结构
```
mcp-security-gateway-monitor/
├── README.md <- You are here
├── run_dashboard.py <- Run this to see the security dashboard
├── pyproject.toml <- Package config, dependencies
├── CHANGELOG.md <- Version history
├── RESEARCH_REPORT.md <- Technical research background
├── src/
│ └── mcp_monitor/
│ ├── __init__.py <- Package root
│ ├── monitor.py <- MCPSecurityMonitor orchestrator
│ ├── detectors/
│ │ ├── prompt_injection.py <- 12 regex patterns for jailbreak detection
│ │ ├── pii_detector.py <- 9 PII types with redaction
│ │ ├── shadow_server.py <- Unregistered server detection
│ │ └── exfiltration.py <- BCC injection, payload size, base64, URLs
│ ├── audit/
│ │ ├── log.py <- SHA-256 hash-chained audit log
│ │ └── wal.py <- Write-ahead log for crash recovery
│ ├── advanced/
│ │ ├── manifest.py <- Cryptographic tool manifest signing
│ │ ├── drift.py <- Behavioral drift detection
│ │ ├── correlation.py <- Multi-step attack correlation
│ │ ├── invariants.py <- Declarative security policies
│ │ └── canary.py <- Active behavioral probes
│ ├── layers/
│ │ ├── proxy.py <- Layer 2: Inline Proxy Gateway
│ │ ├── kernel.py <- Layer 3: Kernel Monitor
│ │ ├── semantic.py <- Layer 4: Semantic Intent Analyzer
│ │ ├── egress.py <- Layer 5: Network Egress Policy
│ │ └── orchestrator.py <- FiveLayerDefense orchestrator
│ ├── dashboard/
│ │ ├── terminal.py <- Terminal-based live dashboard
│ │ └── report.py <- HTML report generator
│ ├── redteam/
│ │ ├── simulator.py <- Attack simulation engine
│ │ └── payloads.py <- Real-world attack catalog
│ └── defense10/
│ ├── ml_classifier.py <- ML threat classifier
│ ├── rate_limiter.py <- Rate limiting + recipient whitelist
│ ├── honeypot.py <- Canary token vault
│ ├── sandbox.py <- Docker sandbox isolation
│ ├── network_monitor.py <- /proc/net/tcp + eBPF monitor
│ ├── egress_proxy.py <- DPI egress inspection
│ └── orchestrator10.py <- Full 10-layer orchestrator
└── tests/
├── test_prompt_injection.py
├── test_pii_detector.py
├── test_shadow_server.py
├── test_exfiltration.py
├── test_audit_log.py
├── test_advanced_*.py
├── test_cross_platform.py
└── test_coverage_100.py
```
## 运行仪表盘
```
python run_dashboard.py
```
该脚本将执行以下操作:
1. 设置包含 InlineProxyGateway、KernelMonitor、SemanticIntentAnalyzer 和 NetworkEgressPolicy 的 5 层防御
2. 运行内置的红队攻击目录
3. 打印带有颜色编码的终端报告,显示每次攻击及其是否被成功拦截
4. 将交互式 HTML 仪表盘保存至 `security_dashboard.html`
5. 在默认浏览器中打开该仪表盘
## 输出示例
```
from mcp_monitor.layers import (
InlineProxyGateway, KernelMonitor,
SemanticIntentAnalyzer, NetworkEgressPolicy, FiveLayerDefense,
)
from mcp_monitor.redteam import AttackSimulator
from mcp_monitor.dashboard import TerminalDashboard
proxy = InlineProxyGateway()
kernel = KernelMonitor()
semantic = SemanticIntentAnalyzer()
egress = NetworkEgressPolicy(default_deny=True)
defense = FiveLayerDefense(proxy=proxy, kernel=kernel, semantic=semantic, egress=egress)
simulator = AttackSimulator(defense)
report = simulator.run_full_catalog()
print(f"Detection Rate: {report.detection_rate:.1f}%")
print(f"Blocked: {report.blocked}/{report.total_attacks}")
```
## 故障排除
| 问题 | 原因 | 解决方案 |
|---------|-------|----------|
| `ModuleNotFoundError: No module named 'mcp_monitor'` | 未安装 package | 在项目根目录下运行 `pip install -e ".[dev]"` |
| `No module named 'pytest'` | 缺少开发依赖 | 运行 `pip install -e ".[dev]"`(包含 pytest) |
| `ERROR: .[dev] is not a valid requirement` | 在 cmd.exe 中使用了引号 | 移除引号:`pip install -e .[dev]` |
| `python3: command not found` (Windows) | Windows 使用 `python` 而非 `python3` | 使用 `python` 替代 `python3` |
| 在 Linux/macOS 上提示 `Permission denied` | 需要写入权限以进行安装 | 使用虚拟环境:`python3 -m venv .venv && source .venv/bin/activate` |
| 在 Python 3.9 或更低版本上出现 `SyntaxError` | 项目要求 Python 3.10+ | 将 Python 升级至 3.10 或更高版本 |
| `ImportError: cannot import name 'MLThreatClassifier'` | 未安装 scikit-learn | 运行 `pip install -e ".[ml]"` 以获取 ML 功能 |
| 测试显示 `0% coverage` | 从错误的目录运行了 pytest | 确保您位于项目根目录下 |
| `webbrowser.open` 无效果 | 无头(headless)环境中没有 GUI 浏览器 | 在浏览器中手动打开 `security_dashboard.html` |
| HTML 仪表盘为空白 | 脚本未运行完毕 | 检查终端输出是否有错误;重新运行 `python run_dashboard.py` |
## 测试结果
```
Current local validation snapshot (Windows, Python 3.12.9, 2026-07-14):
472 tests passed | 0 pytest warnings | 23.66s runtime with `-W error`
472 tests passed | 82% total coverage | 43.64s runtime with coverage
Docker image build validated locally with `docker build -t mcp-monitor:ci .`.
```
## 零 Runtime 依赖
核心监控器和所有 5 个防御层仅使用 Python 标准库:
```
[project]
dependencies = [] # Zero runtime deps
```
用于高级功能的可选扩展:
- `pip install -e ".[dev]"` -- 包含 pytest、coverage、PyYAML 和 scikit-learn,用于本地验证
- `pip install -e ".[ml]"` -- 包含 scikit-learn,用于 ML 分类器(防御层 6)
- `pip install -e ".[dpi]"` -- 包含 mitmproxy,用于深度包检测(防御层 10)
## 许可证
MIT
标签:AI安全, Chat Copilot, Docker镜像, MCP协议, Python, 大模型防护, 数据泄露防护, 无后门, 网关监控, 网络探测, 请求拦截, 逆向工具