### 漏洞概述 - **漏洞类型**:命令注入(Command Injection) - **触发条件**:用户可控输入被拼接进命令字符串并通过 shell 执行 - **根本原因**:使用 `child_process.exec` 执行命令时,未对用户输入进行隔离,导致恶意输入可被解释为 shell 命令 ### 影响范围 - 受影响模块:MCP Server 中的 `mcp-code-review-server` - 风险组件:`exec` 调用中直接拼接用户输入(如 `specificFiles`) - 潜在后果:攻击者可注入任意系统命令,造成服务器被控、数据泄露或破坏 ### 修复方案 - **核心措施**:将 `child_process.exec` 替换为 `child_process.execFile` - **技术细节**: - 使用参数数组方式传递命令和参数,避免 shell 解析 - 移除基于 shell 的输出链式操作(如 `&& cat`) - 标准化返回值,统一指向输出文件路径 - **提交信息**:PR #5 — “fix: prevent command injection by replacing exec with execFile” ### POC / 利用代码(来自 PR 描述) ```js // 修复前(危险): child_process.exec(`cat ${specificFiles} && echo "done"`, callback); // 修复后(安全): child_process.execFile('cat', [specificFiles], (error, stdout, stderr) => { // 处理结果 }); ``` > 注:实际 POC 需结合具体上下文构造恶意 `specificFiles` 值,例如传入 `; rm -rf /` 等 shell 命令片段。