flawopen.com/Incidents/openai-community-forum-heif-sso-chain-september-2026
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]
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
El mantenedor de libheif publica GHSA-hg7q-rjr2-8x46, identifica CVE-2026-32882 e indica que libheif 1.22.0 está corregido.[1]
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]
Discourse publica GHSA-vhm9-85gw-x335, enumera versiones corregidas y recomienda reconstruir las instalaciones autogestionadas.[2]
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
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]
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]
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]
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]
// 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];// 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
- ✓En Discourse autogestionado, actualiza a una versión corregida de GHSA-vhm9-85gw-x335 y reconstruye la imagen de la aplicación; actualizar solo desde la interfaz web no demuestra que haya cambiado el paquete nativo libheif.[2], [4]
- ✓Inventaría la versión de libheif realmente incluida en cada contenedor de procesamiento de imágenes y verifica los backports de la distribución; la versión upstream por sí sola puede no reflejar el estado del paquete de la distribución.[6], [4]
- ✓Al indexar un plano de imagen, usa su stride y sus dimensiones. Añade pruebas de regresión con planos alfa y de color de diferentes profundidades de bits y strides.[1], [3]
- ✓Ejecuta la conversión de HEIF/AVIF de cargas no confiables en un worker restringido y desechable, con acceso mínimo al sistema de archivos, sin credenciales del entorno y con límites de CPU y memoria.[2]
- ✓Revisa las relaciones de confianza SSO por separado de la corrección del parser: valida emisor, audiencia, URI de redirección, vinculación de cuentas y asociación de sesiones; revoca sesiones si pudo cruzarse el límite de identidad.[4]
- ✓No presentes como conocidos la implementación de SSO de OpenAI ni su parche exacto; el informe público contiene el relato de los investigadores, pero no el defecto o la corrección a nivel de código.[4]