安全团队 Parameter 公开了一条已修复的 ChatGPT 攻击链:攻击者发一个普通的对话分享链接,受害者在登录状态下打开,攻击者的 JavaScript 就在 chatgpt.com 的会话里运行。研究人员实测列出了受害者最近的对话,读到一段从未分享过的私密对话,并把少量数据发到外部服务器。
全程不用装应用,不用连接第三方插件,也不用打开开发者工具。OpenAI 已在 10 月 26 日确认修复,把漏洞定为 P1。
两个隔离良好的功能,被一个键盘接通
ChatGPT 的 HTML 预览运行在单独的隔离域里,按设计碰不到主页面。麻烦出在对话里的交互式图形:它加载了数学输入库 MathLive,这个库在主页面装了一个接收虚拟键盘消息的监听器。
Parameter 的报告把缺陷分成几层:
- 监听器不校验消息来自哪里,隔离域里的预览也能给它发消息
- 消息可以改键盘布局,布局又允许带 HTML,最后写进主页面
- 负责“净化”的函数其实只把字符串标记为可信
- 新插入的 iframe 没有沙箱属性,继承了 chatgpt.com 的身份
- 内容安全策略放行了 YouTube 脚本,研究人员借它的一个回调接口绕了过去
早期版本还要受害者先连接研究人员的 ChatGPT App,后来他们把图形和恶意预览塞进同一段公开对话,只靠分享功能就能投递。报告同时公布了部分请求细节,这里不转述。
攻击效果上,报告实测的是读对话和外发数据。“代表受害者执行任何操作”是研究人员从前端认证接口推出来的说法,并非逐项演示。
八天走完的时间线
报告写得很细。10 月 13 日确认 MathLive 这条路径,16 日做到跨账户、跨工作区复现,18 日提交到 OpenAI 的漏洞赏金计划。OpenAI 21 日复现并把等级从 P2 提到 P1,22 日通知一个前端已修、另一个还在更新,23 日先调整内容安全策略挡住了部分链路。
ChatGPT 的网页端同时跑着两个前端版本,所以修复也分了两步。
账号接管不是第一回
分享、插件、缓存,ChatGPT 过去的账号接管类漏洞大多出在主流程边上。2023 年研究员 Nagli 用网页缓存欺骗拿到过访问令牌,同样只需受害者点一次链接;2024 年 Salt Labs 披露过插件授权流程里的跳转问题。这一次的入口换成了内容渲染用的第三方库。
MathLive 本身也不是第一次出事,美国国家漏洞库收录过它的跨站脚本漏洞 CVE-2025-29049,影响 0.103.0 及更早版本。那条记录没有提到虚拟键盘消息,看不出两者有直接关系。
普通用户眼下不用做什么。报告没有提到这条链路是否被实际利用过,OpenAI 也没有就此单独发布公告,我们没能核实有无受害者。有一点习惯倒可以保留:陌生人发来的 ChatGPT 分享链接,和其他网页链接一样对待。
报告最后给开发者的建议很朴素:跨窗口消息同时校验来源和发送窗口,设置项不要携带原始 HTML,内容安全策略只当备用防线。
参考来源:CocoLoop、Parameter 安全研究报告、美国国家漏洞库;修复进度与赏金按研究团队披露口径,OpenAI 未单独公告。