我们如何构建自动化的 MCP 安全扫描器(以及我们的发现)

发布: (2026年2月22日 GMT+8 05:59)
5 分钟阅读
原文: Dev.to

Source: Dev.to

我们要解决的问题

当你安装一个 MCP 服务器时,你就在给 AI 代理赋予新的能力。该服务器可能会读取你的文件系统、执行 shell 命令,或调用外部 API。但在代码运行在你的机器上之前,谁审计过它?

没有人。直到现在。

AgentAudit,我们构建了一个自动化的多代理流水线,审计 MCP 服务器、npm 包、pip 包以及 AgentSkills——并在你的代理接触它们之前标记安全风险。

架构

我们的审计流水线并行运行三个专门的子代理,每个都有不同的安全视角:

Agent 1: 静态分析

扫描源代码中已知的漏洞模式:

  • 未经消毒的 shell 命令注入(child_process.exec 与用户输入)
  • 硬编码的凭证和 API 密钥
  • 过于宽泛的文件系统访问权限
  • 不安全的反序列化

Agent 2: 能力图分析

我们解析 MCP 服务器的 tool schema declarations——即每个工具能做什么的 JSON 描述——并将其与代码实际行为进行交叉对照。

一个声明只读取天气数据却在内部能够访问你的文件系统的天气 MCP 服务器?这就是红旗。我们会捕捉到这种差距。

Agent 3: 依赖链审计

递归扫描依赖树,查找:

  • 传递依赖中的已知 CVE
  • 权限异常宽泛的包
  • 供应链异常(例如,一个包在两周前更换了维护者)

多代理共识

每个代理生成结构化的审计报告。共识层随后:

  • 去重 重复的发现
  • 分配严重性 基于在代理上下文中的可利用性
  • 生成可信分数(0–100)用于该包

为什么要多代理共识?因为单一模型会产生幻觉。三个拥有不同系统提示的模型相互交叉检查,就不会了。

结果(截至目前)

在对 194 个包进行 211 份独立审计报告后:

严重性数量总计百分比
🔴 致命54.2%
🟠 高危97.6%
🟡 中等6353.4%
🟢 低危4134.7%

平均可信分数:98/100。 MCP 生态系统大体安全——但这 14 条关键/高危发现代表了真实且可被利用的漏洞。

最常见的模式

  • 通过提示输入进行 Shell 命令注入——精心构造的提示会导致 MCP 服务器执行任意 shell 命令
  • 环境变量泄漏——API 密钥意外出现在 LLM 上下文窗口中
  • 过于宽泛的文件系统访问——服务器请求完整的 ~/ 访问权限,而实际只需要一个目录

什么使 MCP 安全性与众不同

传统扫描器(Snyk、Socket)在已知 CVE 和供应链风险方面表现出色。但 MCP 服务器引入了不同的威胁模型:

  • 攻击向量是提示(prompt),而非网络
  • “用户”是 AI 代理——它不会注意到可疑行为
  • 执行上下文 是你的本地机器或生产服务器

一个包可以通过所有传统安全检查,却仍然可以通过对抗性提示被利用。这正是我们要填补的空白。

试一试

agentaudit.dev 审计任何 MCP 服务器、npm 包或 pip 包。

完整报告: State of MCP Security 2026

每条发现都会在交付给你之前由三个独立的 AI 代理交叉验证。

0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……