系统:运行中
← 返回所有攻击
AGENTS CRITICAL NEW

OpenCode:跨站请求可通过升级端点安装任意软件包

Datadog Security Labs(2026年9月24日)详细说明恶意网页如何访问本地 OpenCode 服务器并触发攻击者指定软件包的安装。已在 1.18.22 中修复。

2026-10-05 // 5 分钟 affects: opencode

这是什么?

2026年9月24日,Datadog Security Labs(发现者署名为 Christophe Tafani-Dereeper)与 OpenCode 维护者公布了 OpenCode 中一个漏洞的细节。OpenCode 是一款开源 AI 编程代理,可通过 opencode serve 或 opencode web 暴露本地 HTTP 服务器。GitHub 安全公告(GHSA-632h-h47v-g4x4,严重程度 High,CVSS 7.5,未分配 CVE)描述了一种跨站请求:可使服务器安装攻击者指定的软件包,进而在开发者机器上执行代码。

时间线是协调披露的典型范例:2026年8月11日报告,2026年8月24日修复并发布 1.18.22 版本,经过一个月的禁令期后于9月24日公开。

工作原理

两个弱点叠加。其一,服务器的升级端点接受任意 URL 作为安装目标,而不是仅限于版本号。其二,服务器在解析请求体时按 JSON 处理,却没有核对 Content-Type 头是否确为 JSON。网页可以让浏览器发出使用纯文本内容类型的跨站表单提交,从而不触发常规的预检保护,而该请求体仍可以是合法的 JSON。

综合起来,当开发者在本地运行着 OpenCode 服务器时访问某个网页,该网页即可让浏览器请求该服务器从攻击者控制的位置安装软件包。对于通过 npm、pnpm 或 Bun 管理的安装,软件包的生命周期脚本会在安装期间运行。根据公告,即使启用了 HTTP Basic 认证,只要浏览器缓存了凭据,攻击仍可能奏效。通过 curl、Homebrew、Chocolatey 或 Scoop 安装的版本不受这一特定安装途径影响。

为何重要

攻击者无需事先控制机器:只要受害者在本地代理服务器监听期间打开一个网页即可。这与2026年早些时候出现的浏览器可访问的本地 AI 网关属于同一类问题:如果任何网页都能向 “localhost” 发送请求,它就不是安全边界。此外,编程代理通常以开发者的凭据、代码仓库和 shell 权限运行,通过代理自身更新路径执行的代码会继承这些权限。

防御措施

  • 升级到 OpenCode 1.18.22 或更高版本。 公告中除升级外未记录其他缓解办法。
  • 为 opencode serve 和 opencode web 启用密码认证,除非必要,不要将其暴露到本机之外。
  • 确认 OpenCode 的安装方式(例如使用 ls -l "$(command -v opencode)");软件包安装途径涉及 npm、pnpm 和 Bun 安装。
  • 将本地代理服务器视为面向互联网的服务: 实施来源(Origin)白名单,在 JSON 端点上拒绝非 JSON 内容类型,并避免提供接受任意安装目标的端点。
  • 不使用时关闭本地代理服务器,并避免在同一会话中浏览不可信网站。

状态

项目详情
主要来源Datadog Security Labs,2026年9月24日
公告GHSA-632h-h47v-g4x4(High,CVSS 7.5,未分配 CVE)
报告 / 修复 / 公开2026-08-11 / 2026-08-24(1.18.22)/ 2026-09-24
受影响版本OpenCode 1.14.30 起(公告列至 1.18.16;Datadog 列至 1.18.21)
已修复1.18.22 及更高版本

Sources