2026 年 10 月 31 日,开发者 Simon Willison 在其链接博客中提及安全研究团队 Parameter Labs 披露的一条 ChatGPT 漏洞。该漏洞与 ChatGPT 展示交互式 HTML 应用的 artifacts 机制有关。按照素材描述,这一功能曾被称为 Canvas,最新修订版本看起来被称为 HTML previews。攻击者可以构造一个 ChatGPT 分享链接,当另一名已登录用户访问时,可能读取其私有数据,或代表其执行操作。OpenAI 已关闭该漏洞,并支付 $5,000 漏洞赏金。
沙箱中的 HTML,本应隔离用户数据
在 ChatGPT 的 artifacts 类功能中,模型生成的自定义 HTML 应用会显示在沙箱 iframe 中。这个设计的关键,是让不可信代码无法直接访问宿主页面的 OpenAI API、用户会话或私有数据。换句话说,沙箱不仅要限制代码执行,也要限制嵌入内容与外部账户能力之间的接触面。
Parameter Labs 找到的路径并不是一个孤立的页面脚本漏洞,而是由多个环节组合而成:第三方 JavaScript 库、跨窗口消息机制、父页面 DOM 插入、CSP 白名单以及外部 oEmbed 接口。单个环节看似常见,但串联之后,沙箱中的不可信内容获得了对主页面施加影响的能力。
攻击链如何从虚拟键盘走到用户数据
根据披露,OpenAI 在图表支持中使用了 MathLive JavaScript 库。该库包含自己的虚拟键盘功能,并且可以通过来自沙箱 iframe 的 postMessage 消息,在父页面中被触发。
问题出在接收消息的代码使用了 innerHTML。这意味着,只要能向该消息处理器发送消息,就可以向父页面添加自定义 HTML。披露同时指出,当时没有机制阻止其他沙箱 frame,包括 HTML preview frame,调用这一方法。
由于 innerHTML 不会直接执行 script 元素,攻击者并不能立刻运行 JavaScript,但可以利用它插入一个新的、没有沙箱限制的 iframe。随后,限制来自 OpenAI 的内容安全策略:CSP 规则完全阻止内联脚本,并只允许从少数几个域加载脚本,其中一个被允许的域是 YouTube。
攻击链在这里继续延伸。披露称,YouTube 的 oEmbed 端点可以被用于以可执行方式反射 JavaScript。借助这一路径,攻击者最终在 ChatGPT 页面中获得 JavaScript 执行能力。此后,攻击者可通过 API 获取私有用户数据,并借助图片引用将数据带出。
- 沙箱 iframe 中的不可信内容可通过 postMessage 触达父页面逻辑。
- 父页面消息处理代码使用 innerHTML,形成 HTML 注入点。
- 攻击者可插入无沙箱限制的 iframe,扩大攻击面。
- YouTube 被 CSP 允许加载脚本,其 oEmbed 接口成为脚本执行跳板。
- 获得页面脚本执行权后,用户 API 数据和账户操作成为可被触及的目标。
对模型产品集成与账户安全的提醒
这次披露的价值,不只在于单个漏洞已经修复,更在于它呈现出大模型产品集成中的典型风险面。ChatGPT 已不只是对话窗口,也在承载可交互 HTML、预览、工具输出和应用化内容。当模型输出可以变成界面,界面就必须接受与传统 Web 应用同样严格的安全审计。
对模型产品团队而言,至少有几个问题值得反复检查:沙箱是否真的隔离了所有敏感接口;来自嵌入内容或第三方库的 postMessage 是否有来源校验和结构校验;DOM 插入是否避免使用 innerHTML;CSP 白名单是否过宽;分享链接是否会在用户登录状态下继承过多权限。
披露中还提到,OpenAI 已关闭该漏洞并支付 $5,000 漏洞赏金。Simon Willison 认为,对于这一严重程度的漏洞而言,这一金额偏低。这一判断属于其个人看法,但也反映出外部研究者对高影响漏洞定价的关注。对平台来说,赏金数额并不是唯一问题,更重要的是能否在攻击链形成前识别并切断其中的每一环。
原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/chatgpt-fen-xiang-lian-jie-ceng-ke-chu-da-deng-lu-yong-hu