CVE-2026-22813OpenCode是一个开源AI编码代理,其用于渲染LLM(大语言模型)响应的Markdown渲染器存在严重的跨站脚本(XSS)漏洞。该漏洞允许攻击者通过控制AI聊天会话的响应内容,将任意HTML和JavaScript代码注入到DOM中。由于应用未使用DOMPurify等安全库进行输入清理,且Web界面缺少内容安全策略(CSP)保护,攻击者可以在受害者访问http://localhost:4096时执行任意JavaScript代码。此漏洞的CVSS评分为6.1,属于中等严重程度,但考虑到攻击者可以完全控制聊天会话的输出内容,实际上可以被利用来窃取敏感信息、劫持用户会话或执行其他恶意操作。攻击成功的前提是用户与攻击者控制的AI代理进行交互,或攻击者能够篡改AI响应内容。该漏洞已在1.1.10版本中得到修复。
OpenCode的Markdown渲染器在处理LLM响应时,直接将AI返回的内容作为HTML插入到DOM中,而没有进行适当的安全过滤。具体问题包括:首先,渲染器缺少输入验证机制,未使用DOMPurify等专业的HTML清理库来处理用户可控的输入内容;其次,Web应用未配置内容安全策略(CSP)头部,导致即使存在XSS漏洞,浏览器也不会阻止内联脚本执行。攻击者可以通过以下方式利用此漏洞:构造包含恶意HTML/JavaScript的AI响应内容,当用户查看该响应时,恶意代码将在localhost:4096域下执行。由于同源策略的限制,localhost域具有较高的信任级别,攻击者可以访问该域下的所有资源,包括localStorage中存储的敏感数据、会话令牌等。此漏洞属于存储型XSS与反射型XSS的结合,攻击载荷会持久化在聊天记录中,每次访问都会触发执行。