Parameter Labs 拆解 ChatGPT 账户接管漏洞的完整攻击链
How We Took Over ChatGPT Accounts
Parameter Labs 公开了针对 ChatGPT HTML previews(原 Canvas)沙箱 iframe 的复杂攻击链。
2026年10月31日 - 链接博客
我们是如何接管 ChatGPT 账户的(via)Parameter Labs 描述了他们针对 ChatGPT 的 artifacts 模式实现(OpenAI 曾称之为 "Canvas",但最新版本似乎叫 HTML previews)发现的一个漏洞,该模式会在沙盒化的 iframe 中显示可交互的自定义 HTML 应用。
关键是这些 HTML 必须保持严格的沙盒隔离,以避免不受信任的代码与 OpenAI API 交互并访问私有数据。
Parameter 发现了一条相当复杂的攻击链。OpenAI 在图表支持功能中使用了 MathLive JavaScript 库,而该库包含 自己的虚拟键盘,可以从沙盒化的 iframe 中通过 postMessage() 在父页面中触发。
接收消息的代码使用了 innerHTML,因此任何发送消息的内容都可以向父页面添加自定义 HTML——而且没有任何机制阻止其他沙盒化的 frame(包括 HTML 预览 frame)调用该方法。
这意味着 iframe 中的不受信任代码可以插入 HTML,虽然 innerHTML 不会直接执行 script 元素,但它可以被用来注入一个没有沙盒限制的新 iframe。
OpenAI 的 CSP 规则完全禁止内联脚本,并且只允许从少数几个域名加载脚本,但其中一个是 YouTube——而 YouTube 的 oEmbed 端点可以被用来以某种方式反射 JavaScript 并执行它。
一旦攻击在 ChatGPT 上获得了 JavaScript 执行能力,从 API 获取私有用户数据并通过图片引用外传就轻而易举了。
最终结果是:攻击者可以创建一个 ChatGPT 分享链接,当其他已登录用户访问该链接时,就可以窃取他们的私有数据或代表他们执行操作。
OpenAI 封堵了这个漏洞并支付了 5,000 美元的漏洞赏金,我认为对于如此严重的漏洞来说,这笔赏金有点太少了。
来源: Simon Willison · simonwillison.net