事件经过
Datadog安全实验室在OpenCode AI编码代理的浏览器界面中发现了一个严重的远程代码执行漏洞:/global/upgrade API将原始请求处理器中的内容类型混淆与不安全地处理攻击者控制的升级目标相结合,使恶意网站可以用包含恶意package.json生命周期脚本的npm压缩包替换路径上的包。该漏洞仅要求运行受影响版本的用户在本地代理服务器活跃时访问特制页面。
影响分析
AI编码代理是开发者机器上最高信任度的表面——它持有用户的凭证、仓库访问权限和shell特权。通过良性网页访问攻陷它,将日常浏览行为转化为代理主机上的完整代码执行,直接使编写AI辅助代码的任何人面临代码供应链投毒和凭证窃取的风险。
攻击途径
在OpenCode的Web界面运行时(opencode serve/web在127.0.0.1:4096)访问特制网页触发内容类型混淆路径:/global/upgrade端点将攻击者控制的升级目标传入包管理器安装命令,且npm包规范接受远程压缩包URL——因此隐藏表单/纯文本请求可以将安装定向到恶意包,其预安装生命周期脚本以OpenCode进程的特权运行。未认证的本地主机服务可通过顶级HTML表单导航从恶意页面访问(绕过CORS)。未申请CVE;请跟踪GitHub公告。
受影响系统
OpenCode 1.14.30–1.18.21(通过npm/pnpm/Bun安装);已在1.18.22中修复;GitHub公告GHSA-632h-h47v-g4x4
缓解措施
升级到OpenCode 1.18.22+(将升级目标验证为语义化版本并拒绝text/plain请求体)。纵深防御:设置OPENCODE_SERVER_PASSWORD,不将服务暴露到localhost之外,将突然的包管理器活动视为入侵证据