跳到主要内容
AI News HubLIVE
站内改写2 分钟阅读

Parameter Labs 披露接管 ChatGPT 账户的攻击链

文章摘要

Parameter Labs 发现 ChatGPT 的 HTML 预览(原 Canvas)功能存在复杂攻击链,可导致跨用户数据泄露或账户操作,OpenAI 已修复并支付 5,000 美元赏金。

Parameter Labs 披露接管 ChatGPT 账户的攻击链
报告错误

纠错通道尚未开通,可先复制下方文章信息留存。

查看更正说明
直接读正文

Parameter Labs 披露了一条针对 ChatGPT 产物(artifacts)机制的完整攻击链。所谓产物机制,指的是在沙箱 iframe 中展示可交互的自定义 HTML 应用。OpenAI 早期将这一功能称为 Canvas,而最新版本似乎改名为 HTML 预览。由于这些 HTML 应用直接运行在 ChatGPT 的主页面环境中,一旦沙箱隔离不够严密,不受信任的代码就可能与 OpenAI 的 API 交互,读取用户的私有数据。因此,严格的沙箱边界是这项功能安全性的核心前提。

Parameter Labs 发现的攻击链相当复杂,并非单点漏洞,而是多个看似无害的设计细节串联起来的结果。第一步,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 美元的漏洞赏金。Simon Willison 认为,对于如此严重的安全问题,这个金额略显偏低。该事件也提醒人们,在集成第三方库、使用 postMessage 通信以及配置 CSP 白名单时,任何一处疏忽都可能被组合利用,形成影响用户账户安全的完整攻击路径。

展开要点与分析

文章情报

工程师中级

要点

  • 攻击利用 MathLive 虚拟键盘的 postMessage 处理器,该处理器使用 innerHTML 并接受来自沙箱 iframe 的消息。
  • 通过注入无沙箱 iframe 并借助 YouTube oEmbed 反射执行 JavaScript,绕过 CSP 限制。
  • 最终可构造恶意共享链接,在已登录用户访问时窃取私有数据或代表其执行操作。
  • OpenAI 修复漏洞并支付 5,000 美元赏金,但研究者认为奖励偏低。

要点与分析由自动化流程生成,可能有误,请结合原始来源核实。