FlawOpen

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

● OpenAI / Discourse / libheif · CVE-2026-32882 · 2026-07-25 · CVSS 7.1 · Alta
Investigación · FlawOpen

Cadena del foro al SSO de OpenAI: CVE-2026-32882

Hacktron informó de una cadena entre una lectura fuera de límites en el plano alfa de libheif, a través del procesamiento de imágenes de Discourse, y un fallo independiente en el SSO de OpenAI. CVE-2026-32882 se corrigió en libheif 1.22.0; los investigadores afirman que detuvieron las pruebas tras una pull request inocua para demostrar el acceso.[4], [1], [2]

💡 Explicación en Lenguaje Sencillo (ELI5)

Imagina dos láminas transparentes: una tiene una fila ancha de cuadros de color y la otra una fila más estrecha de valores de transparencia. El decodificador usó la longitud de la fila de color para encontrar el siguiente valor de transparencia. Cada fila, la lectura se alejaba más de la lámina pequeña. La corrección usa la longitud propia de la fila de transparencia.[1]

Conceptos Clave y Términos

HEIF / HEIC
Formato contenedor de imágenes. Un archivo HEIF puede incluir imágenes derivadas, superposiciones y planos separados de color y alfa que el decodificador debe mantener dentro de sus propios límites.[1]
libheif
Biblioteca nativa que decodifica y codifica imágenes HEIF y AVIF. El aviso de Discourse vincula su ruta de procesamiento de cargas de imágenes con CVE-2026-32882.[1], [2]
Stride
Cantidad de bytes entre el inicio de una fila de un plano de imagen y la siguiente. Las distintas profundidades de bits pueden dar strides diferentes a los planos de color y alfa.[1]
CWE-125
Lectura fuera de límites: el software lee más allá de la región de memoria asignada a un búfer. Aquí, la dirección del plano alfa avanzaba usando el stride del plano de color.[1]
Límite de confianza de SSO
Relación de identidad entre un servicio de inicio de sesión y una aplicación. Hacktron informó que la relación SSO del foro de OpenAI amplió el impacto del compromiso independiente del foro; el informe público no revela el fallo exacto ni el parche de SSO.[4]

Mapeos de marcos

  • Referencia CWE para la debilidad descrita en esta guía: CWE-125

Cronología del Incidente

2026-05-19

El mantenedor de libheif publica GHSA-hg7q-rjr2-8x46, identifica CVE-2026-32882 e indica que libheif 1.22.0 está corregido.[1]

2026-07-25

Hacktron afirma que sus investigadores llegaron al foro de OpenAI por la ruta de imágenes de Discourse, informaron del problema de SSO del lado de OpenAI y detuvieron las pruebas tras una pull request inocua de comprobación de acceso.[4]

2026-07-28

Discourse publica GHSA-vhm9-85gw-x335, enumera versiones corregidas y recomienda reconstruir las instalaciones autogestionadas.[2]

2026-09-13

Hacktron publica su relato de la divulgación coordinada. El informe dice que OpenAI confirmó la corrección de SSO y aclara que la recompensa reconoció ese hallazgo de OpenAI, no las pruebas contra el foro alojado por Discourse.[4]

Flujo de Ataque Paso a Paso

Paso 1

Una imagen cargada llega a un decodificador nativo

Hacktron informa que la ruta de imágenes de Discourse enviaba archivos HEIF/HEIC a libheif mediante ImageMagick, porque el flujo normal de comprobación de imágenes no admitía ese formato.[4], [2]

Paso 2

El diseño del plano de color se reutiliza para alfa

En HeifPixelImage::overlay(), el código vulnerable avanza alpha_p en y * in_stride aunque se obtuvo alpha_stride para ese plano. Si las profundidades de bits de alfa y color difieren, las filas tienen tamaños distintos y la lectura puede sobrepasar la asignación alfa. El aviso upstream clasifica el fallo como CWE-125.[1]

Paso 3

El impacto downstream depende de la ruta anfitriona

El aviso de libheif describe un bloqueo o una posible divulgación mediante píxeles decodificados. El aviso independiente de Discourse describe ejecución remota de código por su ruta de cargas y asigna CVSS 8.8 al problema de Discourse. No sustituyas esa puntuación o impacto del producto por CVSS 7.1 y la lectura fuera de límites de la propia CVE.[1], [2]

Paso 4

Un fallo independiente de SSO amplió la cadena reportada

Hacktron afirma que el compromiso del foro permitió acceder a cuentas ChatGPT/Codex de empleados mediante un problema de SSO de OpenAI y que una pull request inocua demostró acceso al repositorio conectado. La evidencia pública no revela el defecto de código SSO, los permisos exactos de la cuenta ni una corrección de SSO reutilizable.[4]

Paso 5

Limita las pruebas y las afirmaciones

Hacktron dice que detuvo las pruebas tras la pull request de comprobación de acceso. Su informe describe una divulgación controlada por investigadores, no un incidente malicioso ni pruebas de que se obtuvieran datos de clientes. Los investigadores también indican que la recompensa de OpenAI cubrió su hallazgo de SSO y excluyó las pruebas en el foro alojado por Discourse.[4]

Código Fuente: Vulnerable vs. Seguro

Este es un fragmento acotado, no un decodificador independiente ni una reproducción literal del parche completo. El aviso del mantenedor identifica la expresión vulnerable e indica que se corrigió en libheif 1.22.0. Cada plano debe indexarse con su propio stride; reutilizar el stride del color hace que la lectura alfa avance demasiado cuando los planos tienen distintas profundidades de bits. En la aplicación anfitriona, mantén también los decodificadores actualizados y aísla la conversión de cargas no confiables.[1], [3]

IMPLEMENTACIÓN VULNERABLE
// Fragmento simplificado del patrón de acceso documentado.
// alpha_stride estaba disponible, pero se usó el stride del color.
uint8_t alpha_value = alpha_p[in_x0 + y * in_stride + x];
PARCHE SEGURO Y ROBUSTO
// Usa el diseño de filas propio del plano alfa.
// La corrección upstream está en libheif 1.22.0.
uint8_t alpha_value = alpha_p[in_x0 + y * alpha_stride + x];

Lista de Verificación de Seguridad para Ingeniería

Fuentes