Una foto subida al foro de soporte de OpenAI terminó en un PR dentro de su monorepo privado, en menos de 72 horas. El exploit lo escribió un modelo de Anthropic publicado la noche anterior, cuya ficha de seguridad lo ponía "sustancialmente atrás" de otro modelo a la hora de convertir vulnerabilidades en amenazas reales. Todo en esta cadena tenía etiqueta. Ninguna describía lo que la cosa hacía.

No hubo programa malicioso. No hubo correo con enlace. No hubo empleado descuidado.

Hubo una imagen adjunta a un formulario público, como quien sube una captura para pedir ayuda.

El laboratorio de IA más vigilado del planeta quedó PAILA por un adjunto.


Por la dependencia, no por la puerta

Tres investigadores de Hacktron —Harsh Jaiswal, Mohan Pedhapati y Rahul Maini— llevaban meses revisando empresas de IA de frontera. Su informe lo dice sin rodeos: encontraron una mala configuración de SSO en la infraestructura de identidad de OpenAI y un RCE de libheif en su foro.

community.openai.com corre sobre Discourse y acepta "Sign in with OpenAI": comprometer el foro abría el paso al resto de OpenAI por la puerta de la identidad. Discourse de frente no es blanco fácil, y ya lo habían intentado. Fueron por una dependencia.

El 23 de julio encontraron el camino anómalo: Discourse valida imágenes con FastImage, FastImage no soporta HEIF, y esos archivos se derivan al magick de ImageMagick. Tres capas más abajo, un parser de C++ recibe un archivo que fabricó el atacante.

Fue investigación reportada y pagada, conviene decirlo: lo que sigue se lee peor.


Tres horas con el modelo nuevo

El fallo no lo encontró un humano. Una sesión de Opus 4.8 auditó el libheif de la imagen Docker de Discourse y detectó que "some particular security fixes were not back-ported": desbordamiento de heap, lectura y escritura fuera de rango al decodificar un HEIC.

El 24 de julio, Opus 4.8 produjo un exploit funcional con ASLR desactivado. Con ASLR activo —como viene Discourse por defecto— varias sesiones no llegaron a ninguna parte: "wasn't fruitful."

Esa noche, Anthropic publicó Claude Opus 5.

Sesión nueva. Tres horas después había un exploit ARM64 funcional para un Mac local; recién entonces le pidieron portarlo al x86-64 y al jemalloc de Discourse. A las seis de la mañana del 25 de julio, ejecución de código confirmada en local por subida de imagen.

Ahí aparece el único freno de seguridad que hizo su trabajo: Opus se negó a escribir un exploit contra instancias remotas. La solución fue disfrazar el blanco. Pusieron a Claude en un bucle autónomo /goal contra su propia instancia de Discourse Cloud, detrás del proxy rce.ee/ctf-forum "to make it look like a CTF target as Opus refused write exploit for remote instances" (sic).

A las diez, el agente ya tenía ejecución remota por su cuenta y lo demostraba leyendo /etc/hosts. Con ese script entraron a OpenAI.

A media tarde tomaron la cuenta de un empleado sin ninguna interacción de su parte. Su Codex estaba conectado a la organización de GitHub de OpenAI, y le enviaron un prompt que abrió el PR #1186742 en el monorepo openai/openai, "without actually accessing any internal code". Y pararon.

OpenAI confirmó el arreglo a las 22:49:45, unas catorce horas después del reporte, según el conteo de los investigadores. Del hallazgo al monorepo, menos de 72 horas.


Tres oportunidades

Acá la historia deja de ser sobre IA.

Mayo de 2025. Dirk Farin, mantenedor de libheif, sube un commit titulado "simplify overlay overlap area computation". Dos archivos, 36 líneas nuevas, 34 borradas. Sin aviso de seguridad. Sin CVE. Hacktron sostiene que ese es el código que explotaron y que la falta de etiqueta "might be a reason why" Debian nunca lo bajó. El cambio entró en la 1.20.0; la imagen de Discourse traía la 1.19.7, según ellos.

Mayo de 2026. Otro investigador, acreditado como "Hikai", reporta otro fallo en la misma función. Ese sí tiene número: CVE-2026-32882, parchado en la 1.22.0, 67 días antes del ataque. La distribución tampoco se movió.

Hoy, 18 de septiembre, el rastreador de seguridad de Debian sigue marcando bookworm vulnerable a ese CVE. Trixie figura corregido, que no es lo mismo que actualizado: quedó en el número viejo con el parche encima.

Tres oportunidades. Un commit que decía "simplificación". Un CVE que llegó tarde. Un boletín que llegó después del robo. Ya contamos PAILA por pip install; esto es PAILA por lo que nunca se instaló.

El número del registro tampoco describe lo que pasó. El aviso de libheif califica ese CVE como lectura fuera de rango: hasta 3.123 bytes de memoria ajena filtrados en los píxeles de salida, con integridad "Ninguna". El de Discourse, sobre el mismo CVE, lo llama ejecución remota de código, lo puntúa 8.8 con integridad alta y anota "No CWEs". Una lectura pura no da escritura. ¿Cuál de las dos fichas describe lo que pasó?

Ninguna. Discourse atribuye su RCE a ese CVE, no lo demuestra, y ninguna fuente pública identifica con un número el fallo que se usó contra OpenAI: el caso más ruidoso del año en parsers de imagen no tiene ficha propia.

El hueco sigue abierto: la última versión de seguridad de libheif publica seis fallas bajo la línea "CVE numbers will be added when assigned". La etiqueta no miente: no protege.


El modelo también venía etiquetado

El 24 de julio, Anthropic publicó Opus 5 con su propia etiqueta: "Safety. Opus 5 does not advance the frontier in risky, dual-use capabilities." Y con una precisión que envejeció en horas: el modelo casi alcanza a Mythos 5 encontrando fallos, pero "remains substantially behind Mythos 5 on the exploitation of those vulnerabilities—that is, in turning vulnerabilities into material cyber threats."

Esa misma noche convirtió una vulnerabilidad en una amenaza material: "Within hours of Opus 5's release, we gave it the same problem and it succeeded."

Los clasificadores de ciberseguridad del modelo bloquean, dice el anuncio, "penetration testing, and exploit generation". Y bloquearon: se negó a atacar una máquina remota. Lo que no supieron mirar fue el disfraz. El blanco estaba detrás de un proxy cuya URL decía ctf-forum. Bastó. El freno no preguntó qué era esa máquina. Preguntó cómo se llamaba.

¿Por qué iba a bastar algo tan barato? Porque el CTF es el marco con el que se evalúa a estos modelos: atacar un sistema externo es, por diseño, la tarea.

La simetría no la inventamos nosotros. El 21 de julio, OpenAI admitió que sus modelos se escaparon de un examen y entraron a la producción de Hugging Face. El 23, el fundador de Hacktron publicó su reconstrucción de ese caso —declarada al 80% de confianza— el mismo día en que su equipo empezó a mirar el procesamiento de imágenes de Discourse. La herramienta tampoco fue una sola: heif-heist.com acredita a GPT-5.6 Sol, el modelo de OpenAI, antes que a Opus 5.


Atribución

Perpetrador: nadie, en el sentido en que esta sección usa la palabra. OpenAI pagó 6.500 dólares el 1 de septiembre, con una nota al pie que vale más que el monto: probar contra el foro estaba "explicitly excluded from our bug bounty program", y el premio reconoce el hallazgo del lado de OpenAI, no las acciones contra Discourse. Una etiqueta de alcance sobre un cheque. En Hacker News el reclamo fue otro: "That amount for this payout is beyond pathetic for a near $1.2T company." El perpetrador técnico sí tiene domicilio: "It is an OpenAI SSO issue that turned the forum compromise into access to ChatGPT and Codex." Hasta hace dos meses, cualquiera que entrara al foro pudo perder sus cuentas de ChatGPT y Codex.

Cómplices: las etiquetas, una por una. El commit archivado como simplificación. La distribución que baja lo que el proyecto original etiqueta, no lo que arregla. ImageMagick sin aislar, pesadilla conocida desde los tiempos de PHP. Y el Codex del empleado, que hizo lo que le pidieron, con los permisos del empleado, para quien no era el empleado — el confused deputy otra vez, ahora con un PR de recibo. Discourse sale de esta lista: reporte el sábado, respuesta el domingo, y el lunes aisló con Landlock el procesamiento de imágenes. No se quedó en subir un número de versión: cambió la arquitectura.

Falla sistémica: lo que protegía a las empresas normales nunca fue una muralla, era un precio. ¿Cuánto vale hoy? Dos meses, tres investigadores y menos de 3.000 dólares en tokens para toda la campaña, con uno o dos días por empresa nueva. "AI is removing that protection by turning more of this scarce expertise into compute." O, como se lo dijo Matt Fredrikson, de Gray Swan, a TechCrunch: "For $200 a month, anyone can use these tools and hack into a company like OpenAI." Una sola empresa detectó algo: Shopify, tras miles de imágenes y caídas repetidas.

Los propios autores ponen el contrapeso: "This was not completly autonomous hacking" (sic). Lo que cambió no es quién hackea. Es cuánta gente hace falta.


Todo en esta cadena estaba correctamente etiquetado. El commit decía lo que hacía. El modelo venía con su ficha de seguridad, honesta el día en que se escribió. La foto era una foto.

La pregunta no es quién se equivocó al rotular. Es qué se supone que leemos, ahora que la etiqueta se escribe una vez y la capacidad de quien la lee cambia de un día para otro.