单条分享链接即可绕过沙盒,接管 ChatGPT 账户并窃取数据。此漏洞让 OpenAI 支付 5000 美元赏金。
先说结论:
- 攻击链依赖 MathLive 库的 postMessage 机制与 YouTube oEmbed 端点反射。
- 漏洞核心在于 HTML previews 沙盒隔离失效,导致恶意代码获取父页面执行权限。
- OpenAI 修复漏洞并支付 5000 美元赏金,但业界认为该定价远低于其实际风险。
拆解 ChatGPT 账户接管的攻击链路
OpenAI 的 HTML previews 功能将交互式自定义 HTML 应用显示在沙盒 iframe 中。Parameter Labs 发现,OpenAI 使用的 MathLive JavaScript 库包含虚拟键盘,可通过沙盒 iframe 的 postMessage 在父页面触发。接收消息的代码使用 innerHTML,允许添加自定义 HTML,且没有机制阻止其他沙盒 iframe 调用该方法。
虽然 innerHTML 不直接执行 script 元素,但攻击者可以注入一个没有沙盒限制的新 iframe。OpenAI 的 CSP 规则阻止了内联脚本,只允许从少数域名加载脚本,其中包含 YouTube。攻击者利用 YouTube oEmbed 端点反射 JavaScript 并执行。一旦获得 JavaScript 执行权限,获取私有用户数据并通过图像引用外泄就变得轻而易举。
对于正在集成第三方 JS 库的 AI 产品经理,这暴露了组件依赖的盲区。选型时必须审查其 postMessage 监听器是否校验 origin,以及渲染方式是否使用 innerHTML。任何允许跨窗口通信的组件,都是潜在的越狱跳板。在引入类似 MathLive 这种包含复杂交互逻辑的库时,必须强制要求开发团队剥离不必要的消息监听接口,或者在业务层增加严格的域名白名单校验。
沙盒隔离失效的代价与安全定价争议
Simon Willison 在博客中指出,5000 美元的漏洞赏金对于如此严重的漏洞来说有点便宜。在传统 Web 安全评估中,这属于中高危定价。但在 AI 场景下,账户接管意味着攻击者可以消耗用户的 API 额度、窃取对话历史中的商业机密,甚至代表用户执行操作。这种风险溢价未被体现在赏金中。
AI 产品的沙盒不仅防代码执行,还要防数据外泄。当 CSP 规则与第三方端点结合时,传统的白名单机制反而成为攻击者的武器。这提醒安全团队,基于域名的 CSP 白名单在富文本渲染场景下极其脆弱,必须引入更细粒度的 nonce 或 hash 校验。单纯依赖域名放行,等同于在防火墙上留了一个随时能被利用的侧门。
从风险推导来看,5000 美元赏金反映出 AI 公司在安全预算分配上仍沿用传统 SaaS 思维。随着 AI 产品接管更多工作流,其账户价值已远超传统社交账号。安全团队需要重新评估核心资产的价值,而不是用固定的赏金表格来打发发现致命漏洞的研究者。如果一次成功的账户接管能带走企业核心代码库的对话记录,其实际损失将是 5000 美元的成百上千倍。
复现路径与官方参考资源
想要深入了解这条攻击链的技术细节,或者排查自家产品是否存在类似的 postMessage 滥用问题,可以查阅以下原始资料。Parameter Labs 提供了完整的漏洞发现过程,MathLive 官方文档则展示了虚拟键盘的触发机制。
Parameter Labs 漏洞报告:
Hacker News 讨论帖:
OpenAI 官方帮助文档:
MathLive 虚拟键盘文档:
AI 产品的边界正在模糊。以前安全团队主要防范 Prompt 注入,现在必须防范富文本渲染引发的 DOM 级接管。建议安全团队在 CI/CD 流程中引入针对 iframe postMessage 和 CSP 绕过规则的自动化 fuzzing。不要等白帽子用 5000 美元买走你的底裤,才想起来去修补那些看似不起眼的第三方依赖。
评论区唠唠
你也觉得 OpenAI 这 5000 美元赏金是在打发叫花子吗?
往期推荐
- ·OpenAI 仅融 110 亿,Anthropic 携百亿资本反杀
- ·Claude Code 被造本地平替,24次测试全通关
- ·纳指跌两万亿 vs SpaceX 市值,AI 烧钱遇冷
点击公众号头像 → 历史消息,可翻阅以上文章