我们如何接管 ChatGPT 账户
How We Took Over ChatGPT Accounts
精选理由
解析 ChatGPT 沙箱逃逸攻击链,揭示恶意预览如何窃取账户数据并代用户操作。
AI 摘要
我们如何接管 ChatGPT 账户。Parameter Labs 介绍了他们发现的一种漏洞利用方式,针对的是 ChatGPT 对 artifacts 模式的实现(OpenAI 过去将其称为“Canvas”,但最新版本似乎叫作 HTML previews),这种模式会在沙箱化的 iframe 中显示交互式自定义 HTML 应用。这些 HTML 必须受到严格的沙箱隔离,以防不可信代码与 OpenAI API 交互并访问私密数据。Parameter 发现了一条相当复杂的攻击链。OpenAI 使用 MathLive JavaScript 库来实现部分图形功能,而该库自带虚拟键盘,可以通过沙箱化 iframe 发出的 postMessage() 在父页面中触发。接收消息的代码使用了 innerHTML,因此任何能发送消息的代码都可以向父页面添加自定义 HTML,而且当时没有任何机制阻止其他沙箱化框架(包括 HTML 预览框架)调用该方法。这意味着 iframe 中的不可信代码可以插入 HTML;虽然 innerHTML 不会直接执行 script 元素,但攻击者可以利用它注入一个不受沙箱限制的新 iframe。OpenAI 的 CSP 规则完全禁止内联脚本,只允许从少数几个域名加载脚本,但其中之一是 YouTube,而 YouTube 的 oEmbed 端点可以将 JavaScript 反射回页面,使其得以执行。一旦攻击者能够在 ChatGPT 上执行 JavaScript,就可以轻而易举地从 API 获取用户私密数据,再通过图片引用将其外传。最终结果是:攻击者可以创建一个 ChatGPT 分享链接,其他已登录用户访问该链接时,他们的私密数据就可能被窃取,或者攻击者可以代表他们执行操作。OpenAI 修复了该漏洞,并支付了 5,000 美元的漏洞赏金;我认为,对于如此严重的漏洞,这笔赏金有点少。消息来源:Hacker News。标签:iframes、javascript、沙箱隔离、安全、xss、openai、chatgpt、content-security-policy