ChatGPT 账户接管漏洞分析

漏洞:跨站账户接管

2026 年 10 月,安全研究人员发现了一个漏洞,允许攻击者在 ChatGPT 用户的已认证会话中执行任意 JavaScript 代码。通过创建一个精心构造的公开对话链接,攻击者可以强制受害者的浏览器代表其执行操作,包括枚举私有对话列表和窃取敏感的聊天记录。该漏洞利用无需用户进行除点击共享链接之外的任何交互,通过一系列看似良性的功能链绕过了标准的安全边界。

漏洞利用链

该漏洞并非单一缺陷的结果,而是四个不同组件相互作用的结果:ChatGPT 预览功能、MathLive 数学库、跨窗口消息传递机制以及内容安全策略 (CSP) 绕过。

1. 突破沙箱

ChatGPT 的“预览”功能在受限的沙箱 iframe 中渲染 HTML 代码块。虽然这种隔离防止了预览直接访问父文档 chatgpt.com,但研究人员发现主页面包含一个针对 MathLive 库的 postMessage 事件监听器。关键在于,该监听器接受来自任何来源的消息,且未能验证发送者的身份。

2. 通过 MathLive 进行 HTML 注入

通过向 MathLive 监听器发送恶意消息,研究人员能够将任意 HTML 注入到 ChatGPT 主文档中。该应用程序使用了不安全的 innerHTML 赋值,未能正确清理输入,从而允许攻击者注入带有 srcdoc 属性的 iframe。由于该框架是由主文档 chatgpt.com 创建的,它继承了父级的源,从而有效地逃离了原始沙箱。

3. 绕过 CSP

虽然注入的代码最初受到网站内容安全策略 (CSP) 的限制,但研究人员发现该策略允许来自 YouTube 的脚本。通过利用 YouTube oEmbed 端点中的 JSONP 风格回调参数,他们能够执行任意 JavaScript,从而有效地绕过了 CSP 限制,并在受害者会话的上下文中实现了完全执行。

影响与修复

由于注入的 JavaScript 在受害者的已认证会话中运行,它拥有与用户相同的权限。这使得该漏洞能够:

  • 枚举受害者的私有对话历史。
  • 获取从未共享过的私有对话内容。
  • 通过 ChatGPT 的后端 API 执行未经授权的操作。

OpenAI 将此报告归类为 P1 级漏洞,并于 2026 年 10 月 26 日通过更新前端以正确验证消息来源并清理输入解决了该问题。研究人员因这一发现获得了 5,000 美元的赏金。

社区讨论与见解

此次披露在安全社区内引发了激烈辩论,特别是关于赏金的充足性以及漏洞性质的讨论。许多评论者表示担心,对于一个关键的 P1 级账户接管漏洞,5,000 美元的奖励是不够的,并暗示如此低的报酬可能会阻碍负责任的披露。

"5k 的赏金让我觉得下一个人会把他的漏洞卖到黑市上。" — htk

其他人指出了该漏洞的讽刺之处,指出现代 Web 应用程序的复杂性是此类缺陷的主要驱动因素。

"这就是构建大型单体应用时会发生的情况,系统复杂性和漏洞面呈对数级增长。" — usernametaken29

一些行业专业人士还对研究公司的研究方法提出了担忧,指出未经请求的安全测试——即使出于好意——也可能被没有既定漏洞赏金计划的组织视为侵入性或不专业的行为。

Sources

相关