MCP配置里写的是一个命令名,实际运行的却可能是另一个同名文件。问题不在命令字符串里有没有分号,而在于启动时究竟从哪里找到这个程序。
CVE-2026-95182的公开记录指向DeepSeek Harness的c291e796提交。本文对照该提交的MCP传输代码和原始披露,再用独立组件实验观察搜索路径。它不是“已有命令执行功能所以一定有漏洞”的论证,也不把任何MCP配置都算作可利用环境。
1. 命令名不等于程序身份
在所查提交中,createTransport把config.command、args、构造的子进程环境和cwd传给SDK的StdioClientTransport。环境处理的目标之一是去除凭据形状及旧DSH变量,但这一步不等于验证PATH中的目录由谁控制。固定提交源码
如果command是绝对路径,系统有一个明确目标;如果只是npx一类名称,就需要按搜索规则解析。cwd和PATH也不能混淆:设置工作目录,不自动表示只从那个目录找程序;PATH里显式放了什么目录,才影响这里的搜索。
原始披露描述的特定条件是源码检出与pnpm环境:项目可写的node_modules/.bin位于较前搜索位置,同名文件被找到后由MCP启动过程执行。这里需要分别证明目录可写、搜索优先、启动再次发生,以及结果确实由Harness启动。单独发现一个裸命令名还没证明完整攻击链。