Parameter Labs 披露可接管 ChatGPT 账号的漏洞链
How We Took Over ChatGPT Accounts
Parameter Labs 披露了一条针对 ChatGPT HTML 预览沙箱的攻击链,可窃取已登录用户的私有数据或代其执行操作。攻击从 MathLive 虚拟键盘的 postMessage 接收代码使用 innerHTML 入手,在父页面注入无沙箱限制的 iframe,再借 CSP 白名单中的 YouTube oEmbed 端点反射执行 JavaScript。
这条漏洞链展示了沙箱 iframe、postMessage 与 CSP 白名单如何被逐层绕过,对理解前端隔离边界有参考价值。
2026年10月31日 - 链接博客
我们如何接管 ChatGPT 账户(via)Parameter Labs 描述了他们针对 ChatGPT 的 artifacts 模式实现发现的漏洞利用(OpenAI 过去称之为“Canvas”,但看起来最新版本叫 HTML 预览),其中交互式自定义 HTML 应用显示在沙盒 iframe 中。
这些 HTML 必须被严格沙盒化,以避免不受信任的代码与 OpenAI API 交互并访问私有数据。
Parameter 发现了一条相当复杂的攻击链。OpenAI 在其图表支持中使用了 MathLive JavaScript 库,而该库包含自己的虚拟键盘,可以通过 postMessage() 从沙盒 iframe 在父页面中触发。
该消息接收代码使用了 innerHTML,因此任何发送消息的内容都可以向父页面添加自定义 HTML——而且没有任何机制阻止其他沙盒框架(包括 HTML 预览框架)调用该方法。
这意味着 iframe 中的不受信任代码可以插入 HTML,而虽然 innerHTML 不会直接执行 script 元素,但它可以被用来注入一个没有沙盒限制的新 iframe。
OpenAI 的 CSP 规则完全阻止了内联脚本,并且只允许从少数几个域加载脚本,但其中之一是 YouTube——而 YouTube oEmbed 端点可以被用来以可执行的方式反射回 JavaScript。
一旦攻击在 ChatGPT 上获得 JavaScript 执行权限,从 API 获取私有用户数据并通过图片引用外泄就变得轻而易举。
最终结果是:你可以创建一个 ChatGPT 分享 URL,当另一个已登录用户访问时,就可以外泄其私有数据或代表其执行操作。
OpenAI 修补了该漏洞并支付了 5,000 美元的漏洞赏金,我认为对于如此严重的漏洞来说这有点便宜。
来源:Simon Willison · simonwillison.net