OpenCode:恶意 MCP 服务器可在 Windows 上通过 OAuth 登录执行代码
Pillar Security(2026年10月19日披露):远程 MCP 服务器可通过 OpenCode 的 OAuth 授权 URL 在 Windows/WSL 上注入 PowerShell 命令。已在 1.18.33 修复。
这是什么?
2026年10月19日,Pillar Security(研究者 Eilon Cohen)公开描述了开源 AI 编程代理 OpenCode(Anomaly 出品)中的一个严重漏洞。在 Windows 和 WSL 上,恶意或被劫持的远程 MCP 服务器可在开发者通过 OAuth 登录该服务器时,以开发者权限执行命令。Pillar 将其评为 CVSS 9.8。该问题于2026年8月底私下报告,2026年9月28日在 1.18.33 版本中修复。受影响版本为 1.0.137 至 1.18.32。Infosecurity Magazine(10月20日)和 The Hacker News(10月22日)先后报道。
工作原理
在 MCP 的 OAuth 流程中,由服务器提供“授权端点”URL,代理会在浏览器中打开它。在 Windows 上,OpenCode 把该 URL 交给一个辅助包,该包在拼接 PowerShell 命令时没有正确转义,因此精心构造的 URL 的一部分会被当作命令解释。载荷可以藏在看似正常的 HTTPS URL 中,所以仅检查 http/https 协议并不能阻止攻击。该步骤只在发起登录时运行(例如 opencode mcp auth);仅配置服务器或打开会话不会触发。攻击者需要控制开发者已添加的远程 MCP 服务器,例如服务器被接管或域名易主之后。macOS 和 Linux 不受影响。未报告在野利用。
为什么重要
编程代理以开发者的凭据、代码仓库和 shell 运行,因此代码执行等同于整台工作站被攻陷。Pillar 还指出,厂商把用户自行配置的 MCP 服务器视为信任边界之外,既未分配 CVE 也未发布公告,依赖扫描器可能不会标记存在漏洞的安装。修复包含在一次被描述为浏览器启动重构的改动中,容易在发布说明里被忽略。
防御
- 升级到 OpenCode 1.18.33 或更高版本,并确认底层依赖的转义修复已包含在内。
- 用
opencode mcp list检查已配置的远程服务器,移除无法确认可信的服务器。 - 将远程服务器提供的所有 URL 视为不可信:绝不拼接进 shell 字符串;使用参数分离的进程执行方式启动浏览器。
- 不要仅依赖协议白名单来校验 URL。
- 即使没有 CVE,也应按版本盘点代理工具。
状态
| 项目 | 详情 |
|---|---|
| 研究者 | Pillar Security |
| 报告 / 修复 / 公开 | 2026年8月底 / 2026年9月28日(1.18.33)/ 2026年10月19日 |
| 受影响 | OpenCode 1.0.137 – 1.18.32,Windows 与 WSL |
| 标识符 | 未发布 CVE 或公告 |