2026 年 10 月,我们找到了一种方法,可以将普通的公共 ChatGPT 共享转换为攻击者控制的 JavaScript,在打开它的人的登录会话中运行。攻击者可以创建恶意对话,使用 ChatGPT 的正常共享功能发布它,并将链接发送给其他用户。当受害者打开共享时,有效负载以 chatgpt.com 的形式执行,并可以访问受害者经过身份验证的 Web 会话。我们确认此代码可以枚举受害者的对话列表,从从未与攻击者共享的私人对话中检索内容,并将该对话中的数据发送到外部服务器。有效负载不仅限于修改页面或显示警报,它还可以作为受害者直接调用 ChatGPT 的经过身份验证的 API,本质上允许我们接管受害者的 ChatGPT 帐户。受害者不需要安装应用程序、加入项目、粘贴代码或打开开发者工具。打开共享链接是唯一需要的操作。 OpenAI 于 10 月 26 日修复了该问题,并将报告分类为 P1。该链以两个看起来无害的功能开始:图表和 HTML 预览。 TD A[“攻击者发布 ChatGPT 对话”] --> B[“受害者打开公共共享”] B --> C[“HTML 预览进入主 chatgpt.com 页面”] C --> D[“JavaScript 在受害者的登录会话中运行”] D --> E[“作为受害者在 chatgpt.com 上执行的任何操作:
读取私人聊天和文件,更改帐户”] 技术演练 它以图表和流程图开始开始这项研究的问题很简单:如果预览代码被装箱到不同的网站中,它仍然可以与什么对话? ChatGPT 可以使用其预览功能将 HTML 代码块转换为小型工作网页。由于该页面可能包含任意代码,ChatGPT 会明智地在不同网址上的受限框架内运行它。预览版可以运行 JavaScript,但浏览器将其视为不同的网站,因此无法直接检查其周围的登录 ChatGPT 页面。起初,这种隔离似乎完全按照预期发挥作用。预览版中的代码无法读取 Parent.document ,这是 ChatGPT 主页面。事情应该就这样结束了。对话还包含一个正常的交互图。在幕后,该图加载了一个名为 MathLive 的数学库。加载它不仅仅是绘制图表:它还在 ChatGPT 主页面中安装了一个侦听器,用于接收与 MathLive 屏幕键盘相关的消息。浏览器调用相关API postMessage 。即使浏览器阻止它们读取彼此的页面,这也是两个框架交换信息的合法方式。您可以将其视为一个邮件槽:受限制的预览无法进入主页,但它仍然可以通过该槽投下消息。只有当接收者检查消息的发送者时,这才是安全的。 MathLive 没有对我们感兴趣的设置进行检查。它的监听器接受了一条更改虚拟键盘布局的消息,并且该布局允许包含 HTML。图上已经安装了接收器;预览给了我们一个不受信任的发件人。两个不相关的功能意外地创建了一条穿过沙箱的路径。不应该起作用的消息 预览版发送了两条消息。第一个用我们的 HTML 替换了虚拟键盘布局。第二个告诉 MathLive 显示键盘,使其呈现新布局: top.postMessage({ type: "mathlive#virtual-keyboard-message", action: "update-setting", layouts: [{ label: "Compatibility", Layers: [{ id: "compatibility", markup }] }] }, "*"); top.postMessage({ type: "mathlive#virtual-keyboard-message", action: "show", animate: false }, "*"); MathLive 识别了公共消息类型,但其顶级控制器使用了 none 源策略,这意味着它接受来自任何网址的消息。它也不要求更新设置消息来自先前批准的窗口。任何能够联系到听众并知道消息格式的人都可以替换布局。当键盘打开时,MathLive 将提供的布局加入到 HTML 字符串中,并将其分配给真实 ChatGPT 页面中的innerHTML。一个名为 createHTML 的助手最初看起来可能会清理该值。但事实并非如此;它将字符串标记为可信,并不变地传递我们的 HTML。这很令人兴奋,但我们仍然没有执行 JavaScript。通过innerHTML 插入的脚本标签不会自动运行。下一步是使用 srcdoc 的 iframe,这是一种浏览器功能,允许嵌入框架直接在属性中携带其 HTML: MathLive 将此框架插入到主 ChatGPT 文档中,而无需沙箱属性。这给了我们两个有用的属性。首先,srcdoc 创建了一个可以执行外部脚本的新文档。其次,由于 ChatGPT 主页面创建了该框架,因此浏览器为其提供了 https://chatgpt.com web i
开发者生态
morning
我们接管了 ChatGPT 帐户
摘要
In October 2026, we found a way to turn an ordinary public ChatGPT share into attacker-controlled JavaScript running inside the signed-in session of whoever opened it. An attacker could create a malic...
the
victim
ChatGPT
and
that
Preview
conversation
code
The
into
2026-10-31
1 阅读
约6分钟阅读
armcat
字号:
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱