run_nmap_scan 进行操作系统命令注入run_nmap_scan MCP 工具通过字符串插值将 target 和 additionalFlags 参数拼接进命令,并通过 child_process.exec(即 /bin/sh -c)执行。
⚠ 请先阅读 — 重复标识符
在此 CVE ID 存在之前,该漏洞已经公开。 它已被 CVE-2026-3484 / GHSA-xc68-rrqc-qgq3 覆盖,该编号由 VulDB 分配,并于 2026-03-03 针对
mcp-nmap-server <= 1.0.1发布——同一软件包,同一 CWE-78child_process.exec汇聚点。CVE-2026-52616 由 MITRE CNA-LR 于 2026-07-13 根据一份独立报告分配给 s1ko。该分配似乎是一个重复项,并已被标记为重复。应引用的是先前已存在的标识符 CVE-2026-3484。
本仓库的发布是为了完整性并记录该重复项,并非声称这是新发现。原始公开披露的功劳不属于 s1ko。
| CVE | CVE-2026-52616 — CVE-2026-3484 的重复项 |
| CWE | CWE-78(操作系统命令中特殊元素的不当中和) |
| 软件包 | mcp-nmap-server(npm) |
| 受影响版本 | 1.0.1 及更早版本 — 所有已发布版本 |
| 修复版本 | 无 — 仓库已归档 |
| CVSS v3.1 | AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 8.4 高危(stdio 传输)。若服务器被包装为网络传输,则 AV:N → 9.8 严重。 |
| 独立报告者 | s1ko(github.com/s1ko,[email protected]) |
| CVE 分配日期 | 2026-07-13,MITRE CNA-LR |
对于任何要对本漏洞进行去重的人,有一个值得注意的命名陷阱:npm 包名为 mcp-nmap-server,而仓库名为 nmap-mcp-server。这两种顺序指的是同一个项目。
MCP 工具参数受攻击者影响。这些参数由 LLM 根据智能体处理的内容(文档、网页、工具输出)生成,因此间接提示注入可使攻击者控制工具处理程序接收到的值。若处理程序将其中任何值传入 shell,就会将这种影响转化为在运行 MCP 服务器的主机上执行代码。这与先例案例 aws-mcp-server / CVE-2026-5058 的模型相同。
dist/index.js — 目标被追加到命令字符串中,然后交给 exec:
command += ` ${target}`;
…
const { stdout, stderr } = await promisify(exec)(command);
child_process.exec 会在 /bin/sh -c 中运行其参数,因此调用方贡献的所有内容都是 shell 语法。Zod 输入模式声明了 z.string(),它只验证类型,对内容不作任何说明,因此元字符会直接通过。additionalFlags 也通过同样的路径到达同一个字符串。
将 target 设置为 127.0.0.1; touch /tmp/marker; echo INJECTED 的 run_nmap_scan 调用会产生:
/bin/sh -c "nmap … 127.0.0.1; touch /tmp/marker; echo INJECTED"
poc/driver.mjs 通过 stdio 与 MCP 通信:它初始化服务器,针对 run_nmap_scan 发起一次 tools/call,并注入一个 target,然后检查标记文件是否存在。该载荷是一个无害的 touch。
npm pack [email protected]
tar xf mcp-nmap-server-1.0.1.tgz && cd package && npm install
node ../poc/driver.mjs
在受影响的版本上预期会出现:
==== POC RESULT (mcp-nmap-server) ====
marker /tmp/PWNED_nmap created: true
verdict: CONFIRMED — command injection executed
nmap 无需安装——无论开头的二进制文件是否能解析,注入的命令都会在同一个 /bin/sh -c 字符串中执行。
已于 2026-06-01 在隔离容器中验证,并于 2026-06-13 重新验证。
仅可对你获授权测试的基础设施运行。
;、&&、||、|、反引号或 $( 的 nmap 命令行。nmap 开头、并在分隔符后包含第二条命令的 sh -c 进程——这是一种进程树信号(auditd、eBPF、Falco、EDR),不依赖应用日志。nmap 是预期内的;shell、解释器或网络客户端则不是。target 或 additionalFlags 包含 shell 元字符。target 应仅匹配 IP、CIDR 或主机名,不应包含其他内容。MITRE ATT&CK T1059.004 Command and Scripting Interpreter: Unix Shell。
该仓库已归档且为只读,npm 最新版本为受影响的 1.0.1,且不会发布修复版本。移除是缓解措施:
target 和 additionalFlags 进入命令字符串之前,根据 IP/CIDR/主机名模式验证 target,并对 additionalFlags 进行允许列表校验。对于任何 fork 它的人,修复方法是使用参数向量调用
execFile("nmap", [...args]),而不是为 exec 构建字符串。内容验证,而不仅仅是 Zod 类型验证,才是根本要求。
NIST SP 800-53r5 SI-10;OWASP ASVS v4 §5.3.8;CWE-78 缓解措施 M1 和 M2。
| 日期 | 事件 |
|---|---|
| 2026-03-03 | CVE-2026-3484 / GHSA-xc68-rrqc-qgq3 由 VulDB 发布——最初的公开披露,由另一位报告者提交 |
| 2026-05-29 | 通过对已发布 tarball 的源码审查独立发现,当时并不知晓 3 月的公告 |
| 2026-06-01 | 在隔离容器中通过 MCP stdio 进行动态验证 |
| 2026-06-13 | 在提交前去重过程中识别为重复项;确认仓库已归档且私有漏洞报告不可用。内部结论:不予提交 |
| 2026-07-13 | MITRE CNA-LR 仍分配了 CVE-2026-52616,并将 s1ko 列为发现者 |
| 2026-08-22 | 本文发布,记录了该重复项 |
aws-mcp-server)同一轮研究中的配套公告: CVE-2026-52617、 CVE-2026-52618。
MIT — 参见 LICENSE。