安全漏洞 / 严重 / 后端服务
electron/services/mcp-manager.service.ts
MCPManager 启动 MCP Server 时通过 stdio 通信,使用 child_process.spawn(command, args)。 但 command 与 args 来自 MCP 配置文件(用户可编辑 / 第三方可篡改),未做:
child_process.spawn(command, args)
command
args
;
&&
|
$()
恶意配置可执行任意命令:
{ "command": "node; rm -rf /", "args": ["-e", "require('child_process').exec('malicious')"] }
const ALLOWED_COMMANDS = new Set(['npx', 'node', 'python', 'python3', 'uvx']);
execFile
spawn
No dependencies set.
The note is not visible to the blocked user.
问题类型
安全漏洞 / 严重 / 后端服务
文件位置
electron/services/mcp-manager.service.ts问题描述
MCPManager 启动 MCP Server 时通过 stdio 通信,使用
child_process.spawn(command, args)。但
command与args来自 MCP 配置文件(用户可编辑 / 第三方可篡改),未做:;&&|$()shell metacharacters)恶意配置可执行任意命令:
影响
建议修复
const ALLOWED_COMMANDS = new Set(['npx', 'node', 'python', 'python3', 'uvx']);execFile而非spawn(不经过 shell)