CVE-2025-66401MCP Watch是一款用于Model Context Protocol(MCP)服务器的综合安全扫描工具。该工具在0.1.2及更早版本中存在严重的命令注入(Command Injection)漏洞。漏洞位于MCPScanner类的cloneRepo方法中,该方法直接将用户提供的githubUrl参数传递给系统shell的execSync函数执行git clone操作,而没有对URL进行任何输入验证或消毒处理。攻击者可以通过在githubUrl参数中注入shell元字符(如分号、管道符、反引号等)来执行任意系统命令。此漏洞的CVSS评分高达9.8,属于严重级别,攻击复杂度低,无需认证和用户交互即可利用。成功利用此漏洞可导致攻击者在目标系统上完全控制服务器,窃取敏感数据、安装后门或破坏系统。由于MCP Watch通常作为安全扫描工具运行在服务器环境中,此漏洞的影响范围和危害程度尤为严重。攻击者可以利用此漏洞横向移动到其他系统,或在容器环境中实现容器逃逸。
漏洞存在于MCP Watch的MCPScanner类中的cloneRepo方法。该方法接收用户传入的githubUrl参数,用于指定要克隆的Git仓库地址。问题在于该方法直接使用Node.js的child_process.execSync函数执行git clone命令,将githubUrl作为命令参数的一部分传递给shell。攻击者可以通过构造特殊的githubUrl值来注入任意命令。例如,使用分号(;)可以分隔多个命令,使用管道符(|)可以将命令输出传递给其他命令,使用反引号(`)或$()可以执行命令替换。当githubUrl为'https://example.com; whoami > /tmp/pwned'时,实际执行的命令变为'git clone https://example.com; whoami > /tmp/pwned',导致whoami命令被执行并将结果写入/tmp/pwned文件。攻击者还可以利用此漏洞下载并执行恶意脚本、建立反弹shell连接、或在系统上安装持久化后门。由于execSync默认将命令传递给系统默认shell(通常是/bin/sh),Linux和macOS系统均受影响。在Windows系统上,如果使用cmd.exe作为默认shell,同样存在风险。