MCP恶意软件沙盒
 
一个全面的安全沙箱,用于分析MCP(模型上下文协议)服务器,具有用于静态检查、隔离动态执行和行为审计的分层架构。
🎯 概述
MCP恶意软件沙盒将不受信任的MCP服务器视为可疑软件:它不信任他们的声明,隔离他们的环境,并记录他们的每一个动作。
此版本新增:沙盒现在支持从多个来源获取和分析MCP服务器:
- 📁 本地文件系统 -分析磁盘上已有的MCP服务器
- 🐙 GitHub 仓库 -从GitHub克隆和分析
- 📦 npm 注册表 -安装并分析npm包
- 🐍 PyPI注册表 -安装并分析Python包
- 🤖 GitHub操作集成 -通过Pull Requests进行自动测试(请参阅 MCP列表/README.md)
🏗️ 建筑
第0阶段:来源摄入(新)
- 源检测:从引用字符串中自动检测源类型
- GitHub集成:克隆支持分支/标记/提交的存储库
- 注册表支持:从npm和PyPI注册表安装
- 临时工作区:自动清理下载的源
第一阶段:隔离发动机(“引爆”室)
- 运行时:Docker与gVisor运行时(runsc)用于内核级隔离
- 虚拟文件系统:带有真实诱饵文件的虚拟目录(蜜罐检测)
- 网络卫士:使用iptables日志记录的受限网桥
第2阶段:静态和依赖性分析(飞行前)
- 依赖性审计:Trivy/OSV扫描仪集成用于CVE检测
- 权限清单:分析package.json/pyproject.toml的可疑功能
- SBOM生成:完整的软件物料清单
第三阶段:动态询问(LLM引信)
- 工具发现:自动MCP工具枚举
- 对抗性模糊:LLM生成的用于安全测试的有效载荷
- 攻击向量:命令注入、路径遍历、SQL注入、XSS、SSRF
第4阶段:行为监控(内核级遥测)
- 网络监控:记录所有DNS查询和出站连接
- 文件系统监控:跟踪对诱饵文件和系统路径的访问
- 过程监控:检测可疑的进程执行
📦 安装
先决条件
- Python 3.10+
- 码头工人
- Trivy(漏洞扫描程序)
- gVisor(可选,用于增强隔离)
再进行
# Clone the repository
git clone https://github.com/vvatta/mcp-automatic-review.git
cd mcp-automatic-review
# Install Python dependencies
pip install -r requirements.txt
# Or use pip with pyproject.toml
pip install -e .设置环境
# Run setup to check dependencies
python -m src.cli setup
# Build the sandbox Docker image
python -m src.cli build🚀 用法
快速开始
MCP扫描仪现在支持多种源类型:
# Analyze local MCP server
python -m src.cli analyze /path/to/mcp-server
# Analyze from GitHub repository
python -m src.cli analyze https://github.com/owner/repo
python -m src.cli analyze owner/repo --ref main
# Analyze from npm registry
python -m src.cli analyze npm:package-name
python -m src.cli analyze package-name@1.0.0
# Analyze from PyPI registry
python -m src.cli analyze pypi:package-name
python -m src.cli analyze package-name==1.0.0高级用法
# Analyze with live server testing
python -m src.cli analyze /path/to/mcp-server \
--server-url http://localhost:8000 \
--anthropic-key YOUR_API_KEY \
--output results.json
# Analyze GitHub repo with specific branch
python -m src.cli analyze https://github.com/owner/repo \
--ref develop \
--anthropic-key YOUR_API_KEY
# Analyze npm package with version
python -m src.cli analyze npm:@modelcontextprotocol/server-example \
--version "1.0.0" \
--output npm-analysis.json
# Explicitly specify source type
python -m src.cli analyze my-package \
--source-type npm \
--version "latest"
# Run static analysis only (backward compatible)
python -m src.cli scan /path/to/mcp-server
# Check version
python -m src.cli version通过GitHub操作进行自动化测试
您可以通过打开带有配置文件的Pull Request来自动化MCP测试:
# 1. Create a folder for your MCP in MCP-list/
mkdir -p MCP-list/my-mcp
# 2. Create a config.txt file with your MCP details
cat > MCP-list/my-mcp/config.txt =、\=1.0.0"自动检测
沙盒会根据引用格式自动检测源类型:
- 以开头的路径
/,./,或../→ Local - URL与
github.com→ GitHub - 格式
owner/repo(如果不是本地路径)→ GitHub - 前缀
npm:或包含@version→ npm - 前缀
pypi:或包含版本运算符→ PyPI - 明确的
--source-type参数覆盖自动检测
📊 输出
沙盒生成全面的报告,包括:
- 漏洞报告:在依赖项中发现CVE
- 软件物料清单:完整的软件物料清单
- 模糊结果:对抗性有效载荷的测试结果
- 行为报告:系统调用、网络活动、文件访问
- 风险评分:总体安全评估(0-100)
- 建议:可采取行动的安全建议
示例输出
{
"status": "COMPLETED",
"overall_risk_score": 35.0,
"recommendations": [
"✓ Moderate risk level",
"🔧 Address minor issues before deployment",
"🐛 Fix 2 critical vulnerabilities"
],
"scan_summary": {
"total": 15,
"critical": 2,
"high": 5
},
"fuzzing_summary": {
"total_tests": 50,
"leaked_data": 0,
"suspicious": 3
}
}🛠️ 配置
创建一个 .env 配置文件:
# Anthropic API key (optional, for LLM fuzzing)
ANTHROPIC_API_KEY=your-key-here
# Container settings
CONTAINER_RUNTIME=runsc
CONTAINER_MEMORY_LIMIT=512m
CONTAINER_CPU_LIMIT=1.0
# Network monitoring
ENABLE_NETWORK_MONITORING=true
ALLOW_OUTBOUND_NETWORK=true
# Fuzzing settings
NUM_VALID_PAYLOADS=5
NUM_MALICIOUS_PAYLOADS=10
ENABLE_LLM_FUZZING=false🔒 安全功能
集装箱隔离
- 非root用户执行
- 只读文件系统(/tmp除外)
- 性能下降(CAP_DROP ALL)
- 没有新特权
- gVisor内核隔离运行时
蜜罐检测
植入诱饵文件以检测渗透企图:
.ssh/id_rsa-伪造SSH私钥.env-伪造的环境变量.aws/credentials-伪造的AWS凭据
网络监控
- 记录所有DNS查询
- 跟踪出站连接
- 用于法医分析的PCAP文件
- iptables交通检查规则
攻击模拟
测试包括:
- 指令注入:
; ls -la,| cat /etc/passwd - 路径遍历:
../../../../etc/passwd - SQL注入:
' OR '1'='1 - SSRF尝试
- XSS有效载荷
📁 项目结构
mcp-automatic-review/
├── src/
│ ├── orchestrator/ # Main workflow coordinator
│ ├── inspector/ # Static analysis & Trivy
│ ├── interrogator/ # LLM fuzzing & payload generation
│ ├── monitor/ # Behavioral monitoring
│ ├── utils/ # Configuration & utilities
│ └── cli.py # Command-line interface
├── docker/
│ ├── Dockerfile.sandbox # Sandbox container
│ ├── docker-compose.yml # Full environment
│ └── network-rules.sh # iptables configuration
├── tests/ # Test suite
├── examples/ # Example MCP servers
├── config/ # Configuration files
└── reports/ # Generated reports🧪 发展
运行测试
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
# Run with coverage
pytest --cov=src tests/代码质量
# Format code
black src/ tests/
# Lint code
ruff check src/ tests/
# Type checking
mypy src/📚 实现工作流
| 阶段 | 组件 | 工具/技术 |
|---|---|---|
| 1.摄取 | 编排器 | Python(FastAPI/Typer) |
| 2.检查 | 静态扫描仪 | Trivy+Semgrep |
| 3.隔离 | 沙盒容器 | Docker+gVisor(runsc) |
| 4.监视器 | 遥测 | eBPF+tcpdump |
| 5.攻击 | LLM询问器 | LangChain+MCP Python SDK |
| 6.报告 | 结果收集器 | JSONL+PCAP导出 |
🤝 贡献
欢迎投稿!请阅读我们的投稿指南并提交pull请求。
📄 许可证
该项目根据MIT许可证获得许可。
⚠️ 免责声明
此工具仅用于安全研究和测试目的。在测试任何你不拥有的系统之前,一定要获得适当的授权。
🔗 参考文献
📞 支持
有关问题、疑问或贡献,请访问我们的 .
