我们接管了别人的 ChatGPT 账号:MathLive 的 postMessage 链与二十行自查代码
来源:dev.to — 2026-10-31
📋 概述
受害者只做了一件事:打开一条共享对话链接。不需要粘贴、不需要登录,最终版本里连点击都不需要——约 4.5 秒后,JavaScript 就以 chatgpt.com 的身份运行,读走私密对话和会话令牌。10 月 18 日上报,10 月 21 日从 P2 升到 P1,10 月 26 日修复,赏金五千美元。作者把攻击链拆成七步:一条共享对话、MathLive(消息里出现交互图表时 ChatGPT 加载的数学输入库)、一个继承 chatgpt.com 的 iframe、一条借 YouTube oembed 绕过 CSP 的路径,最后拿到会话令牌。根因是一类几乎每个 Web 应用都还在犯的错:消息监听器不校验发送方。作者顺手写了个静态审计脚本,对那个易受攻击的库跑了一遍——四个监听器,零个发送方检查。
🔑 核心要点
- 受害者只需打开一条共享对话链接:无需点击、粘贴或登录,数秒内即以 chatgpt.com 身份执行脚本。
- 链条包括 MathLive 监听器、继承源站的 iframe 与 CSP 绕过:借 YouTube 的 oembed 端点把脚本送进去。
- 根因是 postMessage 监听器不校验发送方:这是几乎每个 Web 应用都在犯的一类错。
- 静态审计在涉事库中查出四个监听器零个检查:同样的扫描可以直接跑在自己的代码库上。
💡 金句
The root is a class of bug almost every web app ships today
译:根因是一类几乎每个 Web 应用今天都还在发布的 bug。
👍 0
👎 0
← 返回 dev.to 首页