跳到正文
实时
Simon Willison·· 14 天前精选74

Parameter Labs 披露接管 ChatGPT 账号的漏洞链

How We Took Over ChatGPT Accounts

要点速览

Parameter Labs 披露了一条针对 ChatGPT HTML 预览(原 Canvas)沙箱机制的漏洞链,攻击者可借此窃取已登录用户的私有数据或代其执行操作。

Why it matters

这条漏洞链展示了沙箱 iframe、postMessage 与 CSP 白名单如何被逐层绕过,可帮助理解 HTML 预览类功能的安全边界。

正文 · AI 翻译

2026年10月31日 - 链接博客

我们如何接管 ChatGPT 账户 (通过) Parameter Labs 描述了一个他们发现的针对 ChatGPT 的艺术品模式(OpenAI 以前称之为 "Canvas",但最新版本看起来被称为 HTML 预览)的漏洞,其中交互式自定义 HTML 应用程序显示在一个沙盒 iframe 中。

重要的是,这些 HTML 保持紧密的沙盒化,以避免不受信任的代码与 OpenAI API 交互并访问私人数据。

Parameter 发现了一个相当复杂的攻击链。OpenAI 将 MathLive JavaScript 库作为其图形支持的一部分使用,该库包含 自己的虚拟键盘,可以通过 postMessage() 从沙盒 iframe 触发。

接收消息的代码使用 innerHTML,因此任何发送消息的内容都可以向父页面添加自定义 HTML - 而且没有机制来阻止其他沙盒 iframe,包括 HTML 预览 iframe,调用该方法。

这意味着 iframe 中的不受信任代码可以插入 HTML,而 innerHTML 不会直接执行脚本元素,但它可以用来注入一个新的 iframe 没有 沙盒限制。

OpenAI 的 CSP 规则完全阻止了内联脚本,并且只允许从少数几个域加载脚本,但其中一个是 YouTube - 而 YouTube 的 oEmbed 端点可以用来以执行它的方式反射 JavaScript。

一旦攻击在 ChatGPT 上获得了 JavaScript 执行,从 API 获取私人用户数据并通过图像引用进行数据逸出就变得非常简单。

最终结果:你可以创建一个 ChatGPT 分享 URL,当另一个已登录用户访问该 URL 时,可以逸出他们的私人数据或代表他们采取行动。

OpenAI 修复了漏洞并支付了 5000 美元的漏洞悬赏,我认为对于一个如此严重的漏洞来说,这有点便宜。

来源: Simon Willison · simonwillison.net