mcp.json 正在成为攻击面:一条 npx 命令,本地体检 14 项配置风险

1 阅读1分钟

适用人群:用 Cursor、Claude Code、VS Code、Claude Desktop 等接入了 MCP(Model Context Protocol)工具的开发者。 一句话:先跑 npx correctover-scan@latest,30 秒看一遍自己接进 Agent 的 MCP 配置里到底有什么,再决定要不要继续用。

MCP 配置为什么是风险面

MCP 是让 AI Agent 连接工具的标准协议。它常用的 stdio 配置长这样——command 指定客户端要去运行哪个进程,env 带上一堆环境变量:

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "mcp-server-postgres"],
      "env": { "PG_CONNECTION_STRING": "postgres://user:pass@db:5432/app" }
    }
  }
}

麻烦在于:这份配置本身是一段会被执行的声明,不是一个躺在那里的设置项。它告诉 Agent 客户端「去跑这个命令、带上这些凭据」。一旦里面混进了指向恶意仓库的 command、明文写在 env 里的密钥、或者一个没有鉴权就能 fetch 任意 URL 的工具,风险会跟着 Agent 的权限一起落地。

过去一年里,MCP 生态里已经出现过多起被公开披露的 RCE、命令注入与自动执行类漏洞——比如 CrewAI、LiteLLM(曾进入 CISA KEV 目录)、Amazon Q 的案例。我们之前专门写过一篇逐案拆解:MCP 命令注入实战拦截:3 个真实 CVE + 一个检测 Demo。这些不是假设。

但大部分 MCP 配置,上线前没人验过

多数人第一次装 MCP,是从别人的文章、仓库 README 里复制配置开始的。装完以后,本地会多出 mcp.json.cursor/mcp.jsonclaude_desktop_config.json 这类文件,跟着项目一起同步、一起被 clone。里面有没有问题,基本没人逐行看过。

所以要补的一步是:在配置进入你的 Agent 之前,先本地过一遍自动化检查。

一条命令:correctover-scan

correctover-scan 是专门做这件事的开源扫描器(npm 包,MIT 协议,github.com/DSHCorrecto…)。不需要注册账号,不需要上传文件——扫描全程在你机器上本地跑,配置文件不会离开你的电脑。

# 自动探测当前目录下的 MCP 配置文件并体检
npx correctover-scan@latest

# 指定一个配置文件
npx correctover-scan mcp.json

# 递归扫描项目目录
npx correctover-scan -d ./my-project -r

# 输出 SARIF,可直接接 CI / GitHub code scanning
npx correctover-scan mcp.json -f sarif > report.sarif

它会自动识别这些文件:.cursor/mcp.jsonclaude_desktop_config.json.claude/mcp.jsonmcp.json / mcp.yaml / mcp.yml.vscode/mcp.json.mcp/mcp.jsonconfig/mcp.json

配置类体检一共 14 项检查,映射到 OWASP AISVS 1.0(AI 系统漏洞分级)与 GB/T 智能体应用安全类要求(README 声明),覆盖:传输层是否用 TLS、服务器端是否配了鉴权、SSRF 防护、env 里是否有明文凭据暴露、工具是否做了白名单(allowedTools / dangerouslySkipPermissions)、超时与 token 预算、依赖版本是否锁死、有没有沙箱隔离与紧急终止机制、审计日志与错误处理策略等。

如果命中了 fail 级别的检查,退出码是 1——所以它可以当成一道发布前闸门直接丢进 CI,而不是只在本地看一眼。

实测现状(2026-09-05):npm 最新版为 1.7.3(npm registry 实时数据);CLI 启动 banner 会打印「v1.7.3 | OWASP AISVS 1.0 | 14 checks · MCP config + JS bundle modes」,并且按系统语言输出中文界面。

免费额度:每天 50 次

免费层对个人开发者很友好——每天 50 次扫描,不绑卡不注册,跑完直接看输出。实测时 CLI 会打印当天剩余额度:

📊 Free tier: 49 scans remaining today (1/50)

我拿一个样例配置实测,输出会按 CCS 的分类把风险分组列出来:C10 MCP 安全(传输加密 / 服务器鉴权 / SSRF 防护)、C9 Agent 安全(超时 / 工具白名单 / token 预算 / 紧急终止)、C5 访问控制(凭证明文暴露)、C12 监控(审计日志 / 错误处理)、C4 基础设施(沙箱隔离)、C6 供应链(依赖版本锁),每项标 PASS / WARN / INFO,薄弱点一眼可见。

除了 MCP 配置,还能扫已发布的 npm 包

它还有一个 --bundle 模式,用来扫「已发布的 npm 包 / 打包压缩后的 JS」,针对的是把密钥写死在源码里、请求打内网/云元数据地址(SSRF)、shell: true 起子进程、动态 eval 这类信号:

# 审计一个已解压的 npm 包目录
npx correctover-scan@latest --bundle ./node_modules/某个包

# 审计单个打包文件
npx correctover-scan@latest -b dist/app.min.js

bundle 模式共 17 项检查(12 项自动判定 + 5 项半自动信号枚举),发现项都带 文件:行号 + 代码片段,minified 代码会先内部格式化再定位行号。它的定位是「自动化分诊」,负责把你指向需要人看的那些行——并不会代替人工审计去判断信号是否真的可达(这点 README 写得很明确)。

扫描发现了问题,然后呢?

扫描器负责「发现问题」。如果结果里有值得认真处理的风险,或者你想给一个开源 / 内部仓库留一张可独立验证的安全声明,后面有几条可以自己按需选的路:

  1. 网页版零安装扫描(文件不出本机):correctover.com/scan.html
  2. 免费人工快照审计——AI Agent 安全审计团队先出一份免费结论摘要,48 小时、不需要你提供代码访问权,无论结果如何都不收费:audit.correctover.com
  3. 给已发布的 MCP / AI 仓库做一次第三方独立验证,拿到一张 Ed25519 签名的验证收据,可被 CCS 运行时验证器 / openssl 独立复核(支持 GitHub / GitLab / Bitbucket / Gitee / Gitcode 仓库):¥9.9 / 次,微信 / 支付宝扫码

先跑命令,30 秒看看自己接进 Agent 的东西里到底有什么,再决定要不要往下走——这一步是免费的,而大多数人在装完 MCP 后从来没有做过。


工具与数据来源:npm registry(correctover-scan@1.7.3,MIT)· CLI 本地实测(2026-09-05,免费层额度 50 次/日)· 项目 README(14 项配置检查 / bundle 17 项 / OWASP AISVS 1.0 映射)。