我们如何接管 ChatGPT 账户
Parameter Labs 描述了一种他们发现的针对 ChatGPT 实现“artifacts 模式”(OpenAI 曾将其称为“Canvas”,但最新版本似乎被称为HTML 预览)的漏洞;在这种模式下,交互式的自定义 HTML 应用会显示在一个受沙箱保护的 iframe 中。
确保这些 HTML 始终处于严格的沙箱环境中至关重要,以避免不受信任的代码与 OpenAI 的 API 交互并访问私密数据。
Parameter 发现了一个相当复杂的攻击链。OpenAI 在其图表支持中使用了 MathLive JavaScript 库,而该库自带一个虚拟键盘,可以通过来自沙箱 iframe 的 postMessage() 在父页面上触发。
用于接收消息的这段代码使用了 innerHTML,因此任何发送消息的代码都可以向父页面注入自定义 HTML;而且当时并没有机制来阻止其他沙箱 iframe——包括 HTML 预览 iframe——调用该方法。
这意味着,iframe 中的不受信任代码可以插入 HTML,虽然 innerHTML 不会直接执行 script 元素,但它可以用来注入一个新的 iframe,且不受沙箱限制。
OpenAI 的 CSP 规则完全禁止内联脚本,并且只允许从少数几个域名加载脚本,但其中一个域名是 YouTube;而 YouTube 的 oEmbed 端点可以被用来反射 JavaScript 并使其得以执行。
一旦攻击者在 ChatGPT 上获得了 JavaScript 执行能力,便能轻易地通过 API 获取用户的私密数据,并借助图片引用将其外泄。
最终结果是:你可以创建一个 ChatGPT 分享链接,当其他已登录用户访问该链接时,你的恶意代码就能窃取他们的私密数据或代表他们执行操作。
OpenAI 已修复该漏洞,并支付了 5,000 美元的漏洞奖金,不过我认为对于这样一个严重的漏洞来说,这笔奖金略显偏低。