Tres investigadores de seguridad encadenaron dos fallos y pasaron del foro de ayuda de OpenAI a abrir un pull request dentro de su repositorio interno de código. Desde el hallazgo inicial hasta ese acceso pasaron menos de 72 horas, y la parte difícil la escribió un modelo de Anthropic. Lo cuenta la empresa Hacktron AI en su informe publicado el 13 de septiembre, ya con la divulgación cerrada.
Conviene aclarar el alcance antes de seguir: fue una prueba de concepto, no un robo. Reportaron el fallo el mismo día que lo explotaron, OpenAI lo tapó en 14 horas y en septiembre les pagó 6.500 dólares de recompensa. No llegaron a leer código interno.
Puntos clave
- 25 de julio de 2026, entre las 05:00 y las 15:30 UTC: de la primera ejecución de código al pull request dentro del monorepo `openai/openai`.
- Dos fallos encadenados: un desbordamiento de memoria en la librería de imágenes libheif y una mala configuración del inicio de sesión de OpenAI.
- 6.500 dólares de recompensa, pagados el 1 de septiembre. OpenAI confirmó el arreglo 14 horas después del reporte.
- Menos de 3.000 dólares en tokens para toda la campaña de dos meses, que además tocó Slack, Zoom, Meta y GitHub Enterprise.
Cómo se llega desde un foro de ayuda hasta el código de OpenAI
OpenAI usa Discourse para su foro, `community.openai.com`, y permite entrar con "Sign in with OpenAI" a través de `auth.openai.com`. Ese detalle es el que convierte un foro en un problema serio.
El equipo fue primero a por la ejecución de código. Discourse comprueba las imágenes con FastImage, pero FastImage no entiende HEIF, así que esos archivos acababan en el comando `magick` de ImageMagick, que por debajo usa libheif. El parser quedaba expuesto directamente a un archivo subido por cualquiera.
Ahí encontraron el agujero: unos parches de seguridad de libheif que nunca se habían incorporado a las versiones de Debian. El arreglo existía en upstream desde el año anterior, pero el commit no estaba documentado como parche de seguridad ni tenía CVE asignado, así que nadie lo trasladó. Debian 12 seguía con la 1.19.7 y Debian 13 con la 1.19.8, ambas vulnerables. La imagen Docker de Discourse se construye sobre Debian 12. Debian no publicó su actualización hasta el 8 de agosto.
Con ejecución de código dentro del foro, el segundo fallo hizo el resto. Cualquiera que hubiese entrado al foro con su cuenta de OpenAI podía ser suplantado en ChatGPT y en Codex, sin hacer nada por su parte. Y como Codex se conecta a GitHub, Slack o el correo, el alcance real era lo que cada usuario tuviera enchufado.
Eligieron a un empleado cuyo Codex estaba conectado a la organización de GitHub de OpenAI. Para demostrar el acceso sin mirar nada confidencial, le mandaron un prompt a ese Codex pidiéndole que abriera un pull request en el repositorio interno. Salió. Y ahí pararon.
Los propios investigadores insisten en que el fallo que escala no es de Discourse. Es del SSO de OpenAI, y el foro fue solo la puerta que encontraron abierta. Cualquier otro servicio, propio o de terceros, que usara ese mismo inicio de sesión habría servido igual.
El salto de Opus 4.8 a Opus 5, medido en horas
Esta es la parte que a un operador le debería quitar el sueño más que el fallo en sí.
El 24 de julio usaron Opus 4.8 para escribir un exploit funcional con ASLR desactivado, que es el escenario fácil. Con ASLR activado, que es el real, lanzaron varias sesiones y no hubo manera.
Esa misma tarde Anthropic publicó Claude Opus 5. Abrieron una sesión nueva con el mismo problema y en tres horas tenían un exploit funcionando en ARM64 sobre un Mac local. Luego le pidieron portarlo al entorno x86-64 con jemalloc que usa Discourse. A las 06:00 del día siguiente estaba confirmada la ejecución remota mediante una subida de imagen.
Para la última parte pusieron al modelo en un bucle autónomo contra su propia instancia de Discourse Cloud, disfrazada de reto CTF detrás de un proxy porque Opus se negaba a escribir exploits contra instancias remotas. A las 10:00 el agente había conseguido ejecución remota por su cuenta y lo demostró leyendo `/etc/hosts`.
El mismo patrón que Google documentó en septiembre con una campaña de robo de credenciales montada en seis horas, o que Chrome reconoció al pasar a actualizarse cada dos semanas porque la IA encuentra bugs más rápido que antes.
HEIF Heist: el mismo fallo en media internet
El caso de OpenAI es un capítulo de una investigación mayor que Hacktron llama HEIF Heist. Dos meses, tres personas, menos de 3.000 dólares en tokens.
Rastrearon libheif por Slack, Zoom, Meta, GitHub Enterprise, Ruby on Rails y frameworks de Node como Next.js, Astro y Gatsby. Adaptar el exploit a cada empresa les llevaba uno o dos días, normalmente sin saber la versión de libheif, la de libc ni el entorno de despliegue. El modelo empezaba casi a ciegas y se ajustaba solo.
Hay un dato ahí dentro que vale más que todos los demás: de todas las empresas que probaron, la única que detectó la actividad fue Shopify. Y eso después de miles de imágenes enviadas y de procesadores de imagen cayéndose una y otra vez.
Por qué importa
Si tu producto acepta que un usuario suba una foto, esto te toca. El iPhone guarda en HEIC por defecto, así que aceptar `.heic` es lo normal en cualquier formulario, CRM o portal de clientes montado en los últimos años. La recomendación de los investigadores es concreta: actualizar libheif y libde265 a la última versión parcheada (la 1.23.4 a 14 de septiembre), desactivar la decodificación de HEIF y AVIF si no la necesitas, y aislar el procesado de imágenes en un sandbox.
Y luego está la lección de arquitectura, que es la cara. Un foro de ayuda parecía un sistema de segunda fila hasta que compartió el inicio de sesión con el resto de la casa. Merece la pena revisar qué servicios de tu empresa comparten SSO con las herramientas donde sí hay algo que perder, y qué tiene conectado cada agente que corre con las credenciales de un empleado.
El coste de convertir un bug conocido en un ataque que funciona ha bajado a unos días de cómputo. Las defensas de mucha gente siguen calculadas para el precio anterior.
Fuente original: hacktron.ai
Relacionado


