FlawOpen

flawopen.com/Incidents/openai-community-forum-heif-sso-chain-september-2026

● OpenAI / Discourse / libheif · CVE-2026-32882 · 2026-07-25 · CVSS 7.1 · 高危
安全研究 · FlawOpen

从 OpenAI 论坛到 SSO:CVE-2026-32882

Hacktron 报告称,Discourse 图像处理中的 libheif Alpha 平面越界读取与 OpenAI 的另一项 SSO 缺陷形成了攻击链。CVE-2026-32882 已在 libheif 1.22.0 中修复;研究人员称,他们在提交无害的访问证明 pull request 后停止测试。[4], [1], [2]

💡 通俗易懂的原理解析 (ELI5)

想象两张透明胶片:一张的彩色方格行很宽,另一张的透明度数值行较窄。解码器用彩色胶片的行长度去定位下一个透明度值,因此每读一行就会进一步越过较小的胶片。修复方法是使用透明度胶片自己的行长度。[1]

核心概念与专有名词

HEIF / HEIC
一种图像容器格式。HEIF 文件可以包含派生图像、叠加图像以及分离的颜色和 Alpha 平面,解码器必须分别在各自边界内处理它们。[1]
libheif
用于解码和编码 HEIF 与 AVIF 图像的原生库。Discourse 公告将其图像上传处理路径与 CVE-2026-32882 联系起来。[1], [2]
Stride
图像平面中一行起点到下一行起点之间的字节数。不同的位深会让颜色平面和 Alpha 平面拥有不同的 stride。[1]
CWE-125
越界读取:软件读取了分配给缓冲区的内存区域之外的数据。此处 Alpha 平面地址错误地使用了颜色平面的 stride。[1]
SSO 信任边界
登录服务与应用之间的身份关系。Hacktron 报告称 OpenAI 论坛的 SSO 关系扩大了论坛被单独攻陷后的影响;公开报告未披露确切的 SSO 实现缺陷或补丁。[4]

框架映射

  • 本指南所述弱点的 CWE 参考: CWE-125

事件演进时间线

2026-05-19

libheif 维护者发布 GHSA-hg7q-rjr2-8x46,登记 CVE-2026-32882,并将 libheif 1.22.0 列为已修复版本。[1]

2026-07-25

Hacktron 称研究人员通过 Discourse 图像路径进入 OpenAI 论坛,报告了 OpenAI 侧 SSO 问题,并在提交无害的访问证明 pull request 后停止测试。[4]

2026-07-28

Discourse 发布 GHSA-vhm9-85gw-x335,列出已修复版本并建议自托管安装重新构建。[2]

2026-09-13

Hacktron 发布协调披露报告。报告称 OpenAI 已确认修复 SSO,并澄清奖励针对 OpenAI 侧问题,而非对 Discourse 托管论坛的测试。[4]

攻击执行流程分解

步骤 1

上传图像进入原生解码器

Hacktron 报告称,由于常规图像检查路径不支持 HEIF/HEIC,Discourse 将这些文件经 ImageMagick 转交给 libheif。[4], [2]

步骤 2

颜色平面布局被错误用于 Alpha 平面

在 HeifPixelImage::overlay() 中,易受攻击的代码将 alpha_p 按 y * in_stride 前移,尽管已为该平面获取 alpha_stride。颜色与 Alpha 位深不同时,两者行宽不同,读取可能超出 Alpha 缓冲区分配范围。上游公告将其归类为 CWE-125。[1]

步骤 3

下游影响取决于宿主处理路径

libheif 公告说明可能导致崩溃或通过解码像素泄露信息。Discourse 的独立公告则说明其上传路径可能导致远程代码执行,并将 Discourse 问题评为 CVSS 8.8。不要把该产品级评级或影响与 CVE 自身的 CVSS 7.1 和越界读取混为一谈。[1], [2]

步骤 4

另一项 SSO 缺陷扩大了报告中的攻击链

Hacktron 称论坛失陷后,研究人员通过 OpenAI SSO 问题访问员工的 ChatGPT/Codex 账户,并用无害 pull request 证明可访问关联代码库。公开证据没有披露 SSO 代码缺陷、账户的具体权限或可复用的 SSO 修复方案。[4]

步骤 5

限定证据和表述范围

Hacktron 称其在提交访问证明 pull request 后停止测试。报告描述的是研究人员控制下的披露,不是恶意事件,也不能证明客户数据被获取。研究人员还说明,OpenAI 奖励针对其 SSO 发现,不包括对 Discourse 托管论坛的测试。[4]

源代码对比:漏洞与安全实现

这是聚焦于关键访问方式的代码片段,不是独立解码器,也不是完整补丁的逐字复制。维护者公告指出了易受攻击的表达式,并确认 libheif 1.22.0 已修复。每个平面都必须使用自己的 stride 索引;颜色与 Alpha 位深不同时复用颜色 stride 会让 Alpha 读取位置前移过多。宿主应用还应及时更新解码器,并隔离不可信上传内容的转换过程。[1], [3]

存在漏洞的实现
// 已记录访问模式的简化片段。
// alpha_stride 可用,但代码使用了颜色平面的 stride。
uint8_t alpha_value = alpha_p[in_x0 + y * in_stride + x];
加固后的安全修复
// 使用 alpha 平面自身的行布局。
// 上游修复已包含在 libheif 1.22.0 中。
uint8_t alpha_value = alpha_p[in_x0 + y * alpha_stride + x];

工程与系统安全加固清单

参考来源