复合 扫描
MCP服务器的开源安全扫描程序。使用官方MCP SDK检测所有语言的沙盒、代码执行、依赖关系和供应链风险:TypeScript、JavaScript、Python、Go、Rust、C#、Java和Kotlin。零依赖。
](#)  
v0.6.0--现在使用。NET、Java和Kotlin支持。 与该官员一同获释 微软MCP C#SDK v1.0 (2026年3月)和官方Java/Spring MCP SDK。第一个使用官方MCP SDK覆盖所有语言的安全扫描程序。
______________________________________________________________________
它的作用
compuute-scan 在部署之前分析MCP(模型上下文协议)服务器源代码的安全漏洞。它完全离线运行,不需要API密钥,并涵盖 L0发现, L1喷砂,以及 依赖级别风险 --每个MCP服务器所需的基础安全层。
通过官方MCP SDK支持每种语言: TypeScript、JavaScript、Python、Go、Rust、C#、Java和Kotlin。符合MCP 2025-11-25规范,与官方Microsoft C#SDK、Java/Spring SDK和社区TypeScript/Python/Go/Rust SDK兼容。
快速开始
npx compuute-scan ./path/to/mcp-server或者使用Docker隔离(建议用于客户端代码):
git clone https://github.com/Compuute/compuute-scan.git
cd compuute-scan
docker compose build
./scan.sh clone https://github.com/org/mcp-server.git
./scan.sh run mcp-server --output audit-report.md安装
# npm (global)
npm install -g compuute-scan
# npx (no install)
npx compuute-scan ./mcp-server
# Docker (isolated scanning)
git clone https://github.com/Compuute/compuute-scan.git
cd compuute-scan
docker compose build要求: Node.js 18+。不 npm install 需要——零外部依赖。
它扫描什么
VIGIL安全层
| 图层 | 焦点 | 可用性 |
|---|---|---|
| 10个 | 发现——传输检测、工具清单、依赖关系固定 | 开源 |
| L1级 | 沙盒-- eval(), exec.Command, pickle.loads,路径遍历,CORS,SSL旁路 | 开源 |
| 二级 | 授权——RBAC、机密、JWT、PII/GDPR、加密 | 计算机专业审计 |
| 三级 | 工具完整性——SSRF、SQL注入、快速注入、供应链 | 计算机专业审计 |
| L4 | 监控——审计日志记录、速率限制、错误泄漏、ReDoS | 计算机专业审计 |
开源规则(L0+L1)
每个文件37条规则+2条否定规则+3项依赖性检查 涵盖代码执行、沙盒、发现和供应链:
| 类别 | 示例 |
|---|---|
| 代码执行 | eval(), exec.Command, pickle.loads, yaml.load, Runtime.exec, Process.Start |
| 反序列化 | BinaryFormatter, ObjectInputStream, SoapFormatter --禁止。NET和Java接收器 |
| 路径遍历 | 未初始化的文件路径,丢失 realpath() 检查 |
| CORS配置错误 | 通配符起源于Express、Starlette、rs/cors、ASP。NET核心 AllowAnyOrigin,春天 @CrossOrigin |
| SSL/TLS旁路 | verify=False, rejectUnauthorized: false, InsecureSkipVerify, danger_accept_invalid_certs |
| SQL注入 | Python f-string,Go fmt.Sprintf,生锈 format!()C SqlCommand,Java JDBC字符串连接 |
| 命令注入 | 在所有8种语言中使用不受信任的输入执行Shell |
认证旁路 C [AllowAnonymous],春天 permitAll() 关于敏感端点 | |
| 内存安全 | 生锈 unsafe {} 块,缺失 #[deny(unsafe_code)] |
| 不安全随机 | Math.random(), random.choices(), rand.Intn() 用于安全上下文 |
| 模板注入 | 去吧 text/template 用于HTML输出 |
| 安全标头 | 头盔/安全头中间件缺失 |
| 已知CVE(离线) | 40多个顶级npm/PyPI/Go包,包含精心策划的易受攻击版本范围 |
| 依赖年龄 | 在当前版本之后打包两个或多个主要版本 |
| 许可证合规性 | Copyleft许可证(GPL、AGPL、LGPL、SSPL) node_modules |
| 发现 | 运输检测、工具库存、跨8个包管理器的依赖性锁定 |
语言特定规则
| 语言 | MCP SDK状态 | 密钥检测 |
|---|---|---|
| Types/JS | 官方(人物) | eval, child_processCORS、npm钩子、未固定的git deps |
| python | 官方(人物) | pickle、YAML不安全加载、f-string SQL、Starlette CORS、, verify=False |
| 去 | 官方 | exec.Command+sh, fmt.Sprintf SQL, InsecureSkipVerify, text/template XSS, rs/cors |
| 锈 | 官方 | unsafe {}, Command::new + format!,SQL通过 format!, danger_accept_invalid_certs |
| C网 | 官方(微软,2026年3月) | Process.Start, SqlCommand 海螺, [AllowAnonymous], BinaryFormatter, AllowAnyOrigin |
| Java | 官方(Spring/Java) | Runtime.execJDBC连接, ObjectInputStream,春天 permitAll, @CrossOrigin(*) |
| Kotlin | 通过Java SDK | 与Java相同——JDBC、ObjectInputStream、Spring安全 |
解析的依赖关系文件
package.json, requirements.txt, pyproject.toml, go.mod, Cargo.toml, .csproj, pom.xml, build.gradle, build.gradle.kts.
警卫检测
扫描仪检查 ±15线窗口 围绕缓解模式的每个发现(validatePath(), sanitize(), realpath()等等)。报告中仍有缓解的发现,严重程度降低了一级——没有什么隐藏的,但噪音减少了。
负面检查
检测 缺席 整个代码库的安全控制:没有输入验证(zod/pydantic),没有安全头(helm)。仅靠模式匹配无法捕捉到的架构风险。
全面安全评估
开源扫描程序涵盖了基础的L0-L1风险和依赖性级别检查。生产MCP部署,特别是那些受NIS2、DORA或GDPR约束的部署,需要通过跨文件污染跟踪和合规性证据进行更深入的分析:
| 层 | 你得到什么 | 分析 |
|---|---|---|
| L2授权 | RBAC、秘密管理、JWT/OAuth、PII/GDPR合规性、弱加密 | 知识图驱动 |
| L3工具完整性 | SSRF、注射、即时中毒、反应中的PII、供应链 | 毒物跟踪 |
| L4运行时监控 | 审计日志记录、速率限制、错误泄漏、ReDoS | 跨文件行为 |
OWASP Top 10(10/10)。NIS2第21条(7/7)。GDPR(6/6)。多拉(4/7)。 开源层标识。审计层跟踪攻击路径,生成可归档的合规性证据,并根据可达性(而不仅仅是存在性)进行优先级排序。
预订计算专业审计 --完整的L0-L4评估,包括OWASP、NIS2、GDPR和DORA的合规性映射。
Docker隔离扫描
对于客户参与, scan.sh 提供了一个强化的工作流程,扫描的代码永远不会接触到主机文件系统:
┌──────────────┐ ┌──────────────────────┐
│ clone │ │ scan │
│ (git only) │────────▶│ --network none │
│ bridge net │ volume │ read-only fs │
└──────────────┘ │ cap_drop ALL │
│ no-new-privileges │
│ 512MB / 1 CPU │
└──────────────────────┘| 属性 | 克隆容器 | 扫描容器 |
|---|---|---|
| 网络 | 网桥(仅限git) | 无 --零网络堆栈 |
| 文件系统 | 只读+tmpfs | 只读 |
| 功能 | 仅限NET_RAW | 都掉下来了 |
| 用户 | 非root(scanner) | 非根(scanner) |
| 资源 | 0.5个CPU,256MB | 1个CPU,512MB |
./scan.sh clone https://github.com/org/mcp-server.git # Clone to isolated volume
./scan.sh run mcp-server --output audit.md # Scan — zero network
./scan.sh local ~/code --output local-audit.md # Scan local dir (mounted :ro)
./scan.sh list # List cloned repos
./scan.sh clean mcp-server # Remove client codeCLI选项
compuute-scan
[options]
--output, -o Write report to file
--json Output as JSON
--sarif Output as SARIF (GitHub Code Scanning)
--layer Filter by VIGIL layer
--min-severity Filter: critical, high, medium, low
--fail-on-severity Exit code 1 if findings >= severity (for CI)
--verbose Show files being scanned
--help, -h Show helpCI集成
# GitHub Actions example
- run: npx compuute-scan ./src --fail-on-severity high --sarif --output results.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif添加规则
从v0.5.0开始,扫描仪按以下模块组织 src/ 并连接成 compuute-scan.js 通过 scripts/build.js。不要编辑顶级 compuute-scan.js 直接生成输出。
规则活在 src/rules-l1.js 作为对象:
{
id: 'L1-037',
title: 'Description',
layer: 'L1',
severity: 'high',
owasp: 'A03:2021 Injection',
nis2: 'Art. 21(2)(e)',
description: 'What the rule detects',
recommendation: 'How to fix it',
test: (line) => /pattern/.test(line),
guards: [/mitigationPattern/],
}构建和运行测试:
npm run build # regenerates compuute-scan.js from src/
npm test # runs the 231-assertion suite
npm run verify # runs the supply-chain integrity check看 更改日志.md 发布历史和 ROADMAP.md 对于计划中的功能。
测试
npm test该测试套件运行231个断言,涵盖URL验证、评分、凭证编辑、速率限制、内联忽略处理、配置加载、函数边界检测、每个规则的规则模式匹配、依赖CVE/age检查和端到端自扫描。
许可证
麻省理工学院——见 许可证.
联系
公司 AB --代理AI安全 daniel@compuute.se | compuute.cn
