2026 年 MCP Server 安全现状——68 个软件包中的 118 项发现
Source: Dev.to
AI 代理每天都在你的机器上安装软件包。但这些软件包真的安全么?
在 AgentAudit,我们一直在为 AI 代理生态系统——MCP 服务器、npm 包、pip 包以及 AgentSkills——构建安全注册表。对 194 个软件包 进行 211 份独立安全报告 的审计后,我们发现了以下内容。
数字概览
在所有已审计的包中,我们的多代理审计系统共识别出 118 条安全发现:
| Severity | Count | % of Total |
|---|---|---|
| 🔴 Critical | 5 | 4.2% |
| 🟠 High | 9 | 7.6% |
| 🟡 Medium | 63 | 53.4% |
| 🟢 Low | 41 | 34.7% |
好消息:在 194 个包中有 192 个被评为安全(Trust Score 80–100)。仅有 1 个包被标记为“caution”,另有 1 个标记为“unsafe”。
令人担忧的消息是:这 14 条关键和高危发现代表了真实且可被利用的漏洞——远程代码执行、凭证泄露、未消毒的命令注入。
平均信任分数:98/100
我们的注册表整体平均信任分数为 98 分(满分 100 分)。这令人鼓舞——这意味着 MCP 生态系统主要由善意且相对安全的包组成。但平均值会掩盖异常值,而在安全领域,异常值就是一切。
最常见的漏洞模式
1. Shell 命令中的未过滤输入(Critical/High)
MCP 服务器在未进行过滤的情况下直接将用户提供的输入传递给 child_process.exec() 或等价方法。攻击者可以通过精心构造的提示注入任意 Shell 命令。
2. 环境变量泄漏(Medium)
许多包从环境变量中读取 API 密钥、令牌和机密——这本身没问题。但有些会不小心将这些值写入错误信息、日志,甚至 LLM 上下文窗口。这是最常见的中等严重性问题。
3. 过于宽泛的文件系统访问(Medium)
MCP 服务器请求完整的文件系统访问权限,而实际上只需要特定目录。这违反了最小特权原则,并在包被攻破时扩大了影响范围。
4. 缺失输入验证(Low)
参数接受时未进行类型检查、长度限制或格式验证。虽然不易立即被利用,但会增加攻击面。
5. 依赖链风险(Medium)
包引入了数十个传递依赖,其中一些已不再维护或已知存在漏洞。虽然该包本身可能没有问题,但其供应链会带来风险。
开发者可以做的事情
-
在安装前进行检查。 使用 AgentAudit API 或安装 AgentAudit Skill,让你的 AI 代理在安装前自动检查软件包。
curl https://agentaudit.dev/api/check?package=your-package-name -
对所有输入进行消毒。 如果你的 MCP 服务器根据用户输入执行命令、访问文件系统或发起网络请求——请对所有内容进行消毒。使用白名单,而不是黑名单。
-
采用最小权限原则。 只请求服务器实际需要的权限。如果只读取某个目录,就不要请求完整的文件系统访问权限。
-
锁定依赖版本。 使用 lockfile。审计你的依赖树。对传递依赖的供应链攻击与代码本身的漏洞同样危险。
-
提交审计。 注册表通过社区贡献不断壮大。将你的软件包提交至 agentaudit.dev 进行审计——免费且有助于整个生态系统。
更大的图景
随着已经处理了 531 次 API 检查 和 495 次报告提交,AgentAudit 注册表正成为 AI 代理生态系统的实时安全情报层。随着 MCP 采用率的加速,拥有一个专门针对代理包的类似 CVE 的数据库已不再是奢侈,而是必需。
我们迄今为止记录的 118 条发现仅是开始。每一次新的审计都让生态系统对所有人更安全。
所有数据来源于 agentaudit.dev/api/stats。AgentAudit 是开源且免费使用的。