一句话结论
攻击者利用 ChatGPT 沙箱内 MathLive 库的 innerHTML 注入缺陷,结合 YouTube oEmbed 绕过内容安全策略,成功窃取登录用户私有数据。
关键要点
- Parameter Labs 发现 ChatGPT HTML 预览(Artifacts)沙箱存在漏洞,攻击链核心在于 MathLive JavaScript 库中虚拟键盘的消息接收机制使用了 innerHTML,允许来自父页面的 postMessage() 调用注入自定义 HTML。
- 尽管 OpenAI 的内容安全策略(CSP)禁用了内联脚本并限制脚本源,但允许列表中包含 YouTube 域名,攻击者利用 YouTube oEmbed 端点反射并执行恶意 JavaScript,从而在父页面获得代码执行权限。
- 漏洞可导致攻击者构造共享链接,当其他已登录用户访问时,攻击者可获取用户 API 访问权限,读取私有数据并通过图像引用将数据外泄,或代表用户执行操作。
- OpenAI 已修补该漏洞,并向 Parameter Labs 支付了 5,000 美元漏洞赏金,Simon Willison 评论认为对于此类高危漏洞而言,该赏金数额偏低。
- 该漏洞利用了 OpenAI 在图谱支持中引入的 MathLive 库,该库自带的虚拟键盘功能未在接收消息时进行足够的输入净化,且沙箱机制未阻止 HTML 预览框架调用相关方法。
背景与事实
2026 年 10 月 31 日,开发者 Simon Willison 在其博客上详细记录了安全研究机构 Parameter Labs 披露的一项针对 ChatGPT 的高危漏洞。该漏洞源于 ChatGPT 对“Artifacts”(前身为 Canvas,最新修订版称为 HTML 预览)模式的实现机制。在这一模式中,交互式自定义 HTML 应用程序被渲染在沙箱化的 iframe 中,其核心安全目标在于防止不可信代码与 OpenAI API 交互或访问私有数据。
Parameter Labs 发现了一条复杂的攻击链。OpenAI 在支持图谱功能时使用了 MathLive JavaScript 库,该库包含一个虚拟键盘,可通过 postMessage() 方法从沙箱 iframe 触发父页面行为。关键在于,接收这些消息的代码使用了 innerHTML 处理数据。由于沙箱机制缺乏防止其他沙箱化框架(包括 HTML 预览框架)调用该方法的机制,不可信代码得以在父页面中插入 HTML。虽然 innerHTML 不会直接执行 script 元素,但攻击者可借此注入无沙箱限制的新 iframe。
在获得 JavaScript 执行权后,OpenAI 的内容安全策略(CSP)虽然阻止了内联脚本并仅允许少数域名加载脚本,但其中包含 YouTube 域名。攻击者利用 YouTube oEmbed 端点的特性,将 JavaScript 反射回来并执行,从而在 ChatGPT 主页面获得完整的代码执行能力。一旦取得该权限,攻击者可轻易通过 API 获取用户私有数据,并通过在页面中加载恶意图像引用的方式将数据外泄。最终结果是,攻击者可创建 ChatGPT 共享链接,诱导其他已登录用户访问,进而窃取其数据或代表其执行操作。OpenAI 在发现后迅速修补了该漏洞,并向 Parameter Labs 支付了 5,000 美元的漏洞赏金。
影响分析
这一漏洞对依赖富交互前端功能的 AI 应用开发者具有警示意义。它表明,即使在使用现代 Web 沙箱技术(如 iframe 沙箱)和严格的 CSP 策略时,前端 JavaScript 库的引入仍可能成为安全短板。对于中文开发者而言,这意味着在构建类似 Artifacts 的代码解释器或预览功能时,不能仅依赖浏览器原生的沙箱隔离,必须对第三方库的消息处理逻辑进行严格的输入验证,避免使用 innerHTML 等危险 API 处理不可信数据。此外,CSP 策略中的源白名单需最小化,避免包含可被利用进行反射攻击的第三方域,如通过 oEmbed 等接口可能暴露代码执行风险的域。
从行业角度看,OpenAI 支付 5,000 美元赏金反映出对高危但需复杂利用链漏洞的定价标准。Simon Willison 认为该金额偏低,这提示安全研究人员在评估漏洞严重性时,不仅要看利用的复杂度,更要看潜在影响范围(如账户接管、私有数据泄露)。对于从业者来说,建议在集成前端数学或图表库时,审查其对 postMessage 的处理方式,确保消息接收端不使用宽松的数据解析方法,并考虑构建白名单机制来限制 iframe 与父页面通信的行为,防止沙箱逃逸。
适用边界
该漏洞特指 ChatGPT 实现 Artifacts/HTML 预览功能中,因 MathLive 库虚拟键盘消息处理缺陷导致的沙箱逃逸问题。该结论不适用于未使用 MathLive 库或未实现类似 postMessage 通信机制的 AI 应用。若应用采用纯服务端渲染、不涉及前端 iframe 沙箱交互,或未在 CSP 白名单中包含可反射脚本的域名(如 YouTube oEndpoint),则此攻击链无法复现。此外,该漏洞依赖于用户点击恶意共享链接的场景,若用户处于未登录状态或应用不支持共享链接功能,数据窃取风险将显著降低。
孤本观察
此次事件揭示了前端安全中“库供应链”与“沙箱信任边界”之间的脆弱平衡:第三方 JavaScript 库往往被视为可信组件直接引入,但其内部的消息处理逻辑若缺乏对沙箱上下文的感知,便可能成为攻击者突破隔离层的跳板,提示开发者需对前端依赖项的安全审计提出更高要求。
常见问题
OpenAI 向 Parameter Labs 支付的漏洞赏金是多少?
OpenAI 向 Parameter Labs 支付了 5,000 美元漏洞赏金。
攻击者如何利用 YouTube 绕过 ChatGPT 的内容安全策略(CSP)?
攻击者利用 CSP 允许列表中的 YouTube 域名,通过 YouTube oEmbed 端点反射并执行恶意 JavaScript,从而获得代码执行权限。
MathLive 库的哪个具体缺陷导致了沙箱逃逸?
MathLive 库虚拟键盘的消息接收机制使用了 innerHTML,允许来自父页面的 postMessage() 调用注入自定义 HTML。
该漏洞影响哪些状态的 ChatGPT 用户?
该漏洞影响通过点击恶意共享链接访问 ChatGPT 的已登录用户,未登录用户风险显著降低。
Simon Willison 对该漏洞赏金数额持什么观点?
Simon Willison 认为对于此类高危漏洞而言,5,000 美元的赏金数额偏低。