从一张 HEIC 图片到 OpenAI 内部仓库:72 小时串起两个漏洞

堆溢出和SSO配置错误导致OpenAI内部仓库被攻破

中文
复制

简介

2026 年 7 月 25 日,我们串联了两个严重漏洞,攻破了多名 OpenAI 员工的 ChatGPT 账号。拿到这些账号后,我们得以访问 OpenAI 的内部仓库,理论上还能访问许多其他连接器。

为了证明我们确实拿到了自认为已经拿到的访问权限,同时又不让自己接触到任何敏感信息,我们用该员工的 Codex 在 OpenAI 内部 monorepo 中开了一个 PR #1186742 openai/openai

漏洞利用链

  1. libheif 图像解码器
  2. Debian 缺失安全回溯补丁
  3. ImageMagick 使用 libheif
  4. Discourse 图片上传
  5. OpenAI 论坛 community.openai.com
  6. OpenAI SSO 身份认证缺陷
  7. ChatGPT / Codex 账号访问
  8. GitHub 已连接的集成
  9. 内部仓库 OpenAI

直到两个月前,任何登录 OpenAI 自家帮助论坛(community.openai.com)的用户或 OpenAI 员工,其 ChatGPT 和 Codex 账号都可能被接管。由于用户可以把各种服务连接到 Codex 和 ChatGPT,我们理论上能触及的范围极大,包括 GitHub、Slack 和电子邮件。

从最初发现漏洞到进入 OpenAI 仓库,整个过程不到 72 小时。

我们第一时间把初始漏洞报告给了 OpenAI 和 Discourse,并与他们协作协调补丁。感谢他们对细节的重视和对此问题的快速修复。OpenAI 还向我们支付了 6,500 美元赏金。

完整的披露时间线见此处。本文其余部分将详细说明我们如何发现这两个漏洞、如何使用 claude 模型,以及这次经历带给我们的经验。

  1. 2026 年 7 月 25 日 05:00–06:00 UTC 初步发现 HacktronAI 团队在 community.openai.com 上托管的 Discourse 环境中获得了远程代码执行(RCE)和管理员权限。
  2. 2026 年 7 月 25 日 08:00–10:00 UTC 提交至 Bugcrowd 确认跨产品影响后,团队内部就负责任披露流程进行了协调,并通过 Bugcrowd 上的 OpenAI 漏洞赏金计划提交了报告。
  3. 2026 年 7 月 25 日 13:30–15:30 UTC 访问 OpenAI 员工账号并验证概念 为展示该漏洞的实际影响,我们在 OpenAI 内部 monorepo 中创建了一个无害的概念验证 pull request(链接应 OpenAI 要求隐去)。我们把相关发现补充到已有的 Bugcrowd 报告中,通过 Twitter/X 联系 OpenAI 的朋友直接告知,并在约 15:30 UTC 停止了所有进一步测试。
  4. 2026 年 7 月 25 日 22:49:45 UTC 确认 OpenAI 侧已修复 OpenAI 回复了报告,确认问题已修复,距最初提交约 14 小时。
  5. 2026 年 7 月 25 日 通过 HackerOne 报告 Discourse 我们通过 Discourse 的 HackerOne 项目提交了报告。
  6. 2026 年 7 月 26 日 Discourse 回复 Discourse 在周日回复了报告。
  7. 2026 年 7 月 27 日 Discourse 修复就绪 Discourse 在周一就准备好了修复方案,并增加了图像处理沙箱作为纵深防御。
  8. 2026 年 7 月 28 日 Discourse 发布公告 Discourse 发布了 GHSA-vhm9-85gw-x335,附补丁与重建指引。
  9. 2026 年 9 月 1 日 OpenAI 发放 6,500 美元赏金并标记为已解决 OpenAI 评论——为澄清该奖励的范围:针对 Discourse 托管的 community.openai.com 的测试被明确排除在我们的漏洞赏金计划之外。该奖励认可的是 OpenAI 侧的发现,而非针对 Discourse 的行为。

背景

几个月前,我们在 Hacktron 的团队开始研究前沿 AI 公司,寻找安全漏洞。团队由 Harsh Jaiswal 带队,成员包括 Mohan Pedhapati 和 Rahul Maini。这项研究让我们发现了 OpenAI 身份基础设施中的一处 SSO 配置错误,以及 OpenAI 所用社区论坛中的一个 libheif RCE。

此后我们把研究扩展成了 HEIF Heist:一次历时数月的调查,追踪 libheif 在 Slack、Meta、GitHub Enterprise、Ruby on Rails,以及 Next.js、Astro、Gatsby 等 Node.js 框架中的传播路径。大量广泛使用的软件都依赖这个图像处理库,数量之多令人意外

xkcd 2347

如果你的应用会处理用户可控的图片,并且接受 .heic/.heif/.avif 格式,那它很可能受影响。如需任何形式的协助,请联系 hello@hacktron.ai

攻破 community.openai.com

summary_svg:last-child]:rotate-180 [&[open]>summary]:mb-3" open> 警告

补丁提醒: 如果你自建 Discourse,请立刻重新构建安装。较旧的 Docker 镜像可能包含存在漏洞的 libheif 依赖,可借由图片上传实现代码执行。在 /var/discourse 中依次运行 git pull./launcher rebuild app;只通过 Web 界面更新,未必会替换底层镜像。Discourse 托管客户已完成修补。详见安全公告

OpenAI 的论坛跑在 Discourse 上,并允许通过 auth.openai.com 使用“Sign in with OpenAI”。在充分了解 OpenAI 的服务和基础设施之后,我们有理由认为,拿下这个论坛可以借由这条身份流程打开通往 OpenAI 更广泛服务的路径。要验证这个假设,首先需要在 OpenAI 的某个服务(比如 Discourse 社区论坛)上实现远程代码执行。

Discourse 应用本身其实并不好打(我们过去研究过),所以我们想,或许可以从它的某个依赖下手。

libheif 中的堆缓冲区溢出

7 月 23 日,我们开始审查 Discourse 的图片上传流程,发现 HEIC 和 HEIF 文件走了一条不寻常的路径。Discourse 通常用 FastImage 做图片检查,但 FastImage 不支持 HEIF,于是把这些文件交给 ImageMagick 的 magick 命令做转换。2 这就把底层的 libheif 解析器直接暴露给了攻击者可控的文件。

我们启动了一个 Opus 4.8 会话,挂上 Discourse 的 Docker 镜像,让它检查已安装的 libheif 包有没有安全问题。过了一阵,它发现某些安全修复并没有回合到 libheif 包中。这导致 HEIC 解码过程中出现堆缓冲区溢出,进而得到 OOB 读写原语。

有意思的是,这段有漏洞的代码上一年就在上游被改掉了,但那个提交没有标注为安全修复,也没有拿到 CVE。3 这或许就是 Debian 12 和 13 没能及时拿到相关安全回合的原因。Discourse 的 Docker 镜像基于 Debian 12,装的是有漏洞的 libheif 1.19.7 版本。当时连 Debian 13 也还在发布有漏洞的 1.19.8。此后 Debian 已于 2026 年 8 月 8 日发布针对 Debian 13 的安全更新。4

7 月 24 日,我们用 Opus 4.8 在关闭 ASLR 的情况下做出了一个可用的 ImageMagick/libheif 代码执行 exploit。随后我们又开了几个独立会话,想让它绕过 Discourse 默认配置、在开启 ASLR 的情况下稳定利用,但没有成功。

Opus 5 发布

当晚,Anthropic 发布了 Claude Opus 5。5 我们开了一个新会话,它先是在 3 小时内做出了一个能在本地 Mac 上用的 ARM64 exploit。接着我们让它把这个 exploit 移植到 Discourse 使用的 x86-64 环境和 jemalloc 配置上。

到 7 月 25 日早上 6 点,我们已经确认可以通过上传图片实现本地 RCE。之后我们把 Claude 放进一个自主 /goal 循环,对着我们自己的 Discourse Cloud 实例打,并通过 rce.ee/ctf-forum 做代理,让它看起来像一个 CTF 靶机——因为 Opus 拒绝为远程实例编写 exploit。

上午 10:00 再次检查时,agent 已经在 Discourse Cloud 上实现了 RCE,并通过读取 /etc/hosts 证明了访问权限。利用生成的 exploit 脚本,我们又拿到了 OpenAI 实例上的 RCE。

在确认了论坛活跃成员可以无交互接管 ChatGPT/Codex 账号这一假设后,我们立刻把报告发给了 OpenAI。随后我们接管了一名 OpenAI 员工的账号,其 Codex 已连接到 OpenAI 的 GitHub organization。为了证明影响,同时又不实际访问任何内部代码,我们向该员工的 Codex 账号发送了一条 prompt,让它在 OpenAI 内部 monorepo 中为我们开一个 PR。之后我们停止了进一步测试。

打码后的 pull request,证明可以访问 OpenAI 内部 monorepo

我们把影响证明补充进 Bugcrowd 提交,并通知了 OpenAI 安全团队。我们也为 Discourse 准备了一份报告,提交到其 HackerOne 项目。Discourse 周六收到报告,周日回复,周一就完成了修复(速度值得称赞)。他们还立即开始对 ImageMagick 做沙箱隔离。

我们要强调,用于提权的这个漏洞并非 Discourse 独有。这是 OpenAI SSO 的问题,正是它把论坛沦陷变成了对 ChatGPT 和 Codex 的访问。任何使用 OpenAI SSO 的 OpenAI 一方或三方服务一旦被攻破,都会导致同样的访问权限——Discourse 只是证明这一点的一种途径。

发现这些漏洞的成本

攻破 Discourse 和 OpenAI,agent 花了几天,人工时间只有几个小时。整个 HEIF Heist 研究项目针对 Slack、Meta 等目标,耗时两个月,token 总成本不到 3,000 美元,由三名研究员完成。把 exploit 适配到每一家新公司通常只需一两天。

我们观察到,每个新模型的能力都在不断增强,本报告中的 Discourse exploit 就是明证。在开启 ASLR 的情况下,Opus 4.8 跨多个 session 都没能做出可用的 exploit。Opus 5 发布几小时后,我们把同样的问题交给它,它成功了。在更大范围的行动中,从 Opus 5 到 GPT-5.6 Sol 又出现了一次明显的跃升——那时我们要在除了“目标存在漏洞”之外对目标系统一无所知的情况下完成利用。

每个目标都从上传一张图片开始测试。此后,我们把内存破坏变成了稳定的内存泄漏或 shell,而且通常并不知道确切的 libheif 版本、libc 版本或部署环境。AI 几乎是在一无所知的情况下起步的,却在一两天内为每家公司改造出可用的 exploit。除了 Shopify,我们不知道还有哪家公司察觉到了这些活动——即便在发送了数千张图片、他们的图像处理器反复崩溃之后。

当代码执行落在沙箱或受限环境中时,模型还协助完成了提权、横向移动和绕过现有防御。这并非完全自主的黑客行为,熟练的人工引导依然重要,但一个小团队能完成的工作量大幅增加了。

后记

软件长期以来受益于一种由复杂性带来的安全性。代码乃至漏洞本身都可以公开,但要把一个 bug 变成稳定的 exploit,仍然需要稀缺的专业能力、大量时间以及对目标环境的了解。已知的内存破坏漏洞利用成本高昂,而 zero-day 大多留给价值最高的目标。

这从来不是真正的安全边界,但在实践中,它让普通公司免受软件漏洞的威胁。AI 正在移除这层保护,把更多原本稀缺的专业能力转化为算力。过去需要一个资源充足的团队耗费数月才能完成的工作,如今可以压缩到几天。

安全假设必须跟上攻击者的能力。现实的威胁模型应当把当下的漏洞利用经济学纳入考量,而不是依赖关于谁能发动复杂攻击的过时假设 6。

Hacktron 的使命是在恶意行为者之前,发现并消除被广泛信任的软件中的漏洞,从而帮助保障互联网安全。我们正在前沿实验室以及其他对互联网至关重要的系统上继续这项研究。如果你负责其中某个系统的安全,我们希望与你合作。

受影响的版本与补丁

HEIF Heist 并不针对某一特定版本,而是瞄准横跨多个发布系列(如 1.19.x、1.20.x、1.22.x、1.23.x)的整套漏洞生态。任何未打上最新上游安全补丁的部署都可能受影响。

  • 更新上游。 通过发行版的安全通道或上游发布,安装带有最新安全补丁的 libheiflibde265 包。截至 2026 年 9 月 14 日,最新的上游 libheif 安全版本是 v1.23.4;v1.23.2 已被后续的安全修复取代。发行版打包的版本号可能仍是较旧的上游版本,但其中包含向后移植的修复,因此也要查看该包的安全公告。7 4
  • 纵深防御。 考虑到 ISO 基础媒体文件格式的复杂程度以及解码器更新的节奏,未来出现内存安全缺陷的可能性很大。生产架构应在不需要的地方禁用不可信的 HEIF/AVIF 解码,或者把图像处理流水线隔离在加固的临时沙箱中运行。ImageMagick 的安全策略支持限制可接受的格式和资源用量。8

致谢

感谢 Sudanshu Rajhbhar 提供技术协助,感谢 Zayne Zhang、Fabian Faessler、Robert Chen 和 Jessica Ruan 校对、审阅草稿并提出改进本文的反馈。

参考资料

[1] xkcd #2347: Dependency ↩[2] Discourse: Support for HEIC images ↩[3] libheif: simplify overlay overlap area computation ↩[4] Debian DSA-6417-1: libheif security update ↩1 ↩2[5] Anthropic: Introducing Claude Opus 5 ↩[6] RAND: A Playbook for Securing AI Model Weights ↩[7] libheif v1.23.4 security maintenance release ↩[8] ImageMagick Security Policy

与这项研究背后的团队合作

Hacktron 汇聚了顶尖的 CTF 研究员、经验丰富的红队成员和攻防安全研究员。我们用 AI 加速安全研究,在恶意攻击者之前发现并消除被广泛信任的软件中的漏洞。我们正在前沿实验室和其他互联网关键系统上继续开展研究。如果你正负责其中某个系统的安全,我们希望能与你合作。

Hacktron 在生产环境发布前发现并修复真实的安全漏洞。免费开始 预约演示

来源: Hacktron← 返回首页