如果你在 Windows 或 WSL 上用 OpenCode,安全公司 Pillar Security 提醒你确认自己已经是 1.18.33 或更新的版本。Pillar 博客上一篇页面日期为 10 月 19 日的报告说,这两个平台上的 1.0.137 到 1.18.32 版本有一个远程代码执行漏洞,远程 MCP 服务器可以在 OAuth 登录过程中触发它。OpenCode 背后的公司 Anomaly 已在 9 月 28 日的 1.18.33 里修好,但没有发安全公告,也没有申请 CVE,所以 Pillar 说漏洞扫描器和依赖告警都不会提醒用户升级。

哪些人受影响

据 Pillar 说,问题只出现在 Windows 和 WSL 上的 OpenCode,而且要配置了远程 MCP 服务器才会受影响。漏洞出在 OpenCode 为使用 OAuth 的远程 MCP 服务器打开登录页面的那一步。Pillar 说,恶意或被攻陷的服务器可以借这一步在开发者的电脑上执行代码,用户不需要再做任何操作,也不需要同意。macOS 和原生 Linux 上的 OpenCode 不受影响,Pillar 的解释是这两个系统打开浏览器时不会把地址交给 shell。

Pillar 还提到,服务器不一定在你添加的时候就是恶意的。有害数据是在 OpenCode 连接时才发过来的,所以之后被黑的服务器、被劫持的注册表条目、仿冒的名字或者过期的域名,都可能导致同样的结果。

Pillar 给这个漏洞打了 9.8 分(满分 10 分),定为严重级别。这是 Pillar 自己提出的评分,目前还没有公开的 CVE 编号。

修复是怎么发出来的

Pillar 说,他们在 8 月 29 日通过 GitHub 私下报告了这个问题。修复在 9 月下旬合并,9 月 28 日随 OpenCode 1.18.33 发布。我们看了对应的 PR 和发布说明,两者都没提到安全,PR 的标题是一次重构,把 OpenCode 和它的终端界面里打开浏览器的代码合到一起。

Pillar 对修复本身的评价是快,而且比必要的更周全,改了三个地方。不过在 Pillar 看来,真正堵住漏洞的是 OpenCode 用来打开网页的一个库升级了版本,而不是新加的那些检查地址类型的代码。

据 Pillar 说,Anomaly 表示应对恶意 MCP 服务器不在他们的威胁模型范围内,所以没有发安全公告。这是 Pillar 的转述,Anomaly 和 X 简介写着在做 OpenCode 的 Dax(@thdxr)都还没有公开回应。

该怎么做

Pillar 的建议是升级到 OpenCode 1.18.33 或更新版本。如果你在 Windows 或 WSL 上暂时没法升级,Pillar 建议先把没有核实过的远程 MCP 服务器从 OpenCode 配置里移除,等能升级了再说。由于没有 CVE 可供扫描器比对,Pillar 说安全团队需要直接去查 OpenCode 的安装情况。