Tres investigadores de la startup de seguridad Hacktron AI —Harsh Jaiswal, Mohan Pedhapati y Rahul Maini— usaron a finales de julio Claude Opus 5, de Anthropic, para construir una cadena de explotación que fue del foro de desarrolladores de OpenAI hasta el propio repositorio de código interno de la empresa. El equipo publicó el proceso completo en un blog el 13 de septiembre, y esta semana The Wall Street Journal y The Information han informado sobre el caso, lo que le dio mayor repercusión.
Toda la cadena empezó con una sola imagen y terminó en el repositorio principal de OpenAI, openai/openai. Como prueba, los investigadores abrieron ahí un pull request inofensivo (número #1186742), sin leer ningún dato sensible.
Una imagen HEIF que atravesó el foro
El foro de desarrolladores de OpenAI, community.openai.com, funciona sobre Discourse. La librería de imágenes propia de Discourse no reconoce el formato HEIF, así que las subidas en ese formato se envían a ImageMagick, que a su vez llama a libheif para decodificarlas.
El problema está en libheif. La librería tiene una vulnerabilidad de desbordamiento de búfer en el heap, y la versión 1.19.7 usada en el repositorio de Debian no había recibido el retroporte del parche de seguridad correspondiente. A partir de ahí, los investigadores construyeron una imagen HEIF maliciosa que, tras subirla, les dio ejecución remota de código en el servidor del foro. Según Hacktron, las versiones afectadas de libheif van de la 1.19.7 a la 1.23.x, en varias distribuciones de Linux.
Tomar el servidor del foro fue solo el primer paso. En él se almacenaban los tokens de autenticación de usuarios que habían iniciado sesión, incluidos empleados de OpenAI. Los investigadores descubrieron que algunos de esos tokens del foro podían usarse directamente en ChatGPT. Hacktron subrayó este punto en su blog:
"the vulnerability to escalate is not Discourse-specific. It is an OpenAI SSO issue"
La vulnerabilidad usada para escalar privilegios no es específica de Discourse; es un problema del sistema de inicio de sesión único (SSO) de OpenAI.
A través de este resquicio, los investigadores tomaron el control de las cuentas de ChatGPT y Codex de varios empleados. En un caso, el Codex estaba conectado a la organización de OpenAI en GitHub; los investigadores le enviaron un prompt a ese Codex, haciendo que él mismo abriera un pull request en el repositorio interno. Según Hacktron, por la misma conexión también eran accesibles servicios como Slack y correo electrónico, pero no llegaron a tocarlos.
Opus 4.8 no lo logró, Opus 5 tardó tres horas
La parte a la que más espacio dedica el blog es el papel del modelo. El desbordamiento de búfer en libheif es difícil de explotar en un entorno con ASLR (aleatorización del diseño del espacio de direcciones) activado; el equipo ya lo había intentado varias veces con Claude Opus 4.8 sin éxito.
"Opus 4.8 struggled across several sessions to produce a working exploit with ASLR enabled. Within hours of Opus 5's release, we gave it the same problem and it succeeded."
Opus 4.8 tuvo dificultades durante varias sesiones para producir un exploit funcional con ASLR activado; horas después del lanzamiento de Opus 5, le dimos el mismo problema y lo logró.
Según la cronología dada por el equipo, Opus 5 se lanzó el 24 de julio, y en unas tres horas el modelo escribió primero un exploit funcional para una máquina ARM64 local y luego lo adaptó al entorno x86-64 con jemalloc que usa el servidor de Discourse. Los investigadores dejaron a Claude corriendo en un bucle autónomo, probando repetidamente contra una instancia de Discourse Cloud montada por ellos mismos; a la mañana siguiente, al revisar, ya había conseguido ejecución de código y había leído el archivo /etc/hosts como prueba. Después, el mismo script funcionó también en la instancia de OpenAI.
Desde el descubrimiento hasta la vulneración completa pasaron unas 72 horas. Según Hacktron, toda esta investigación, bautizada "HEIF Heist", costó menos de 3.000 dólares en tokens.
No es la primera vez que esta empresa usa Claude para escribir exploits. Antes ya había publicado un balance sobre el uso de Claude Opus para escribir un exploit de Chrome, cuya conclusión en su momento fue que el modelo podía completar la mayor parte del trabajo, pero los pasos clave todavía requerían intervención humana. Esta vez, en toda la cadena desde el foro hasta el repositorio, la participación humana se redujo notablemente. Según la descripción del equipo, el código de explotación de la parte de Discourse lo produjo casi por completo el propio modelo.
Parche y recompensa
La respuesta de OpenAI no fue lenta. Después de que los investigadores reportaran el fallo el 25 de julio, OpenAI confirmó la corrección en unas 14 horas, a las 22:49 (UTC) del mismo día. Discourse confirmó la recepción del informe el domingo y entregó el parche el lunes. El 1 de septiembre, OpenAI pagó una recompensa de 6.500 dólares.
Por ahora, lo único que se conoce es el relato unilateral de Hacktron. Si OpenAI revisó los registros de acceso de ese servidor del foro antes de la corrección, si alguien más explotó la misma cadena y si los tokens de los empleados fueron revocados por completo son cuestiones que, hasta el cierre de esta nota, no han tenido una aclaración pública.
Para los desarrolladores en China, este caso deja dos puntos de comparación directos: primero, los equipos que mantienen sus propias comunidades tipo Discourse o Discuz suelen tener versiones de ImageMagick y de varias librerías de decodificación en la cadena de procesamiento de imágenes más atrasadas que el programa principal. Segundo, en las empresas que integran foro, sistema de tickets y producto principal bajo el mismo inicio de sesión único, cuando un sitio periférico es vulnerado, hasta dónde puede llegar un token depende de si el alcance del SSO se ha restringido lo suficiente.
Fuentes: blog técnico de Hacktron AI, The Wall Street Journal, CocoLoop, The Information; el blog de Hacktron confirma la cadena de explotación, la cronología de 72 horas, el tiempo de corrección de 14 horas, la recompensa de 6.500 dólares y el costo de 3.000 dólares en tokens.