事件经过
mac-shell-mcp 2.0.0 之前的版本在 execute_command 中包含 OS 命令注入:命令白名单仅检查裸命令,而参数被传递到 shell。攻击者(直接或通过恶意提示引导智能体)可以用 ';' 分隔符调用 pwd 等安全命令,并以服务器用户身份运行禁止的命令,无需审批步骤。
影响分析
执行 shell 的 MCP 服务器是最危险的智能体工具面——它们将模型直接桥接到操作系统。此处的白名单绕过意味着智能体读取的任何项目文件、网页或电子邮件中的提示注入都可以转化为在开发者的 macOS 机器上执行任意命令。
攻击途径
MCP 客户端调用一个列入白名单的命令(例如 pwd),并附带包含 shell 元字符(';')的参数,因此对命令名称的白名单检查不会阻止注入的尾随命令以服务器用户身份执行而无需审批。
受影响系统
mac-shell-mcp (cfdude) < 2.0.0(execute_command 参数)
缓解措施
升级到 mac-shell-mcp 2.0.0(提交 932ce733cde07bb30b1f186303e6692dbb5d087a;issue #45)。确保命令参数在无 shell 的情况下执行或针对白名单进行验证。