事件经过
MoLing 是一个用于电脑操作和浏览器操作的 MCP 服务器。当使用 -l 参数(SSE 模式)启动时,其 /sse 和 /message 端点未进行身份验证,且 mcp-go 依赖设置了 Access-Control-Allow-Origin: *。因此,恶意网页可以打开指向本地服务器的跨源 EventSource,订阅其消息流,并在无需任何凭证或用户同意的情况下操控 MCP 工具。
影响分析
这是一种针对本地代理的浏览器驱动攻击:单个恶意页面可以静默控制 UI 自动化代理。由于 MoLing 的工具可以执行电脑/浏览器操作和 shell 命令,这便将开发者的本地代理转变为任意代码执行和数据外泄的原语,绕过了“localhost 是安全的”这一假设。
攻击途径
/sse 和 /message HTTP 端点接受未认证的请求,且 mcp-go 设置了 Access-Control-Allow-Origin: *,因此恶意网页可以打开指向本地运行的 MoLing 实例的跨源 EventSource,并以宿主用户身份调用 MCP 工具(包括 shell/电脑操作工具)。
受影响系统
MoLing(gojue/moling)0.5.0 之前版本,在 SSE 模式下运行(-l)
缓解措施
升级到 MoLing 0.5.0;将本地 MCP 服务器视为安全边界(绑定到 localhost,进行身份验证,限制 CORS 源)。修复提交:https://github.com/gojue/moling/commit/ae07f704cbc88d4419fc0fbaec278090fcd0502d