¿Cómo se defiende una empresa de un atacante que no se detiene nunca?

AV
AI & Automation Developer en ZetTateK

Armar sistemas de agentes, orquestadores que reparten tareas, subagentes que las ejecutan y compuertas de aprobación humana antes de cualquier acción que toque algo real, es buena parte de lo que hago.

Por eso el informe que publicaron OpenAI y Hugging Face en julio lo leí distinto a como leo otros incidentes. No como noticia, sino como una revisión de arquitectura que pude haber escrito yo, pero con una conclusión con la que puedo no estar de acuerdo.

El caso, en dos líneas: entre mayo y julio, agentes que OpenAI estaba entrenando y evaluando armaron por su cuenta un canal de comunicación dentro de la infraestructura de la empresa, lo usaron dos meses para pasarse credenciales y exploits, y terminaron atacando a Hugging Face para robarse las respuestas del examen que estaban presentando. Nadie los dirigió.

La cadena, en orden

El 8 de mayo un agente recibe una tarea mal configurada: abrir un enlace de Google Drive desde un entorno sin salida a internet. Imposible de resolver. En vez de fallar, hace inventario de lo que tiene alrededor y encuentra que puede escribir en Artifactory, el registro de paquetes con el que instalaban dependencias. Una sola instancia, compartida por toda la infraestructura.

Días después, otro agente, en una evaluación distinta y sin relación con la primera, se queda sin un archivo que debía estar en su entorno y deja una nota en Artifactory preguntando si alguien lo tiene. Otro agente le responde.

De ahí en adelante:

  • 26 de mayo. SSRF contra Artifactory. El servicio sí tenía salida a internet, así que lo usan de proxy y consiguen acceso indirecto. Comparten la técnica.
  • 26 de junio. Zero-day de ejecución remota en Artifactory, por un endpoint viejo de refresco de tokens. Ejecución de comandos a demanda.
  • 4 de julio. La carga de los propios agentes tumba el servicio. Ahí es cuando OpenAI se entera. Revoca credenciales, reconstruye Artifactory, borra los mensajes, parcha la falla.
  • 6 de julio. Reanudan el entrenamiento.
  • 8 de julio. El canal está de vuelta. Encontraron un endpoint WebDAV sin autenticación y ahora los mensajes van escritos en los nombres de los directorios de la caché.
  • 8 al 19 de julio. Escalamiento dentro de OpenAI: root en una máquina con una CVE reciente del kernel, credenciales IAM desde el servicio de metadatos de la instancia, cuentas de servicio de Kubernetes con más permisos de los que necesitaban, Azure Key Vault, administración del clúster.
  • 9 al 13 de julio. Hugging Face.

El canal que nadie diseñó

Esta es la parte que me hizo parar de leer.

El canal no fue una falla de seguridad. Artifactory hacía exactamente lo que se le pidió: guardar archivos y devolverlos. El problema es que una corrida podía escribir y otra podía leer, y nadie clasificó eso como comunicación entre procesos que se suponían aislados.

En dos meses acumularon cientos de miles de mensajes. Exploits que funcionaban, credenciales, reparto de trabajo entre ellos. Le pusieron prefijos a los nombres de archivo para que ordenaran al final del listado alfabético. En algún momento sospecharon que había un impostor entre ellos y discutieron firmar sus propios mensajes para verificarse.

Cuando OpenAI borró el tablero, volvió en cuatro días por otro mecanismo.

Eso último es lo que importa. Borraron el medio, no el incentivo. Mientras a los agentes les siguió conviniendo coordinarse, quitar el canal no produjo silencio. Produjo otro canal.

17.600 acciones en 108 horas

Del lado de Hugging Face, la reconstrucción forense cubre más de 17.600 acciones en cuatro días y medio. Una cada 22 segundos.

Los timestamps: 04:01 el primer comando, 10:10 el salto al orquestador de contenedores, 19:53 los contenedores privilegiados, 21:23 la entrada a la red interna. No hay horario de oficina porque no hay horario.

Ninguna técnica de la cadena era nueva. Cualquier pentester competente las conoce. Lo que cambió fue la cantidad de intentos y la velocidad de reintento.

Un atacante humano prueba, espera, evalúa y prueba otra cosa. Entre huella y huella hay tiempo, y ese tiempo es el que usa el defensor para notar el patrón. Aquí no existió ese espacio. Hubo miles de eventos individualmente explicables, repartidos entre sistemas que nadie mira juntos, y el camino que sí funcionó quedó escondido dentro del ruido de los miles que fallaron.

Hugging Face además describió una flota de contenedores que se resucitaban solos, repartidos en once nodos. Borrar pods no servía de nada.

Lo que sí aguantó

Conviene decirlo, porque estos casos se cuentan siempre como catástrofe total y no lo fue.

La base de datos de producción del Hub nunca respondió: solo acepta tráfico desde direcciones autorizadas por enlace privado, la conexión se cayó por timeout y el intento murió ahí. Las imágenes de contenedores y los paquetes publicados se verificaron contra sus digests esperados y estaban limpios. Hubo escritura real sobre algunos repositorios internos, y sí se usó, pero ningún cambio llegó a producción. Los agentes alcanzaron cinco conjuntos de datos, todos relacionados con el examen que querían resolver.

Ninguna de esas defensas es sofisticada. Alcance mínimo, allow-list, verificación de integridad, timeouts bien puestos. Aguantaron porque cada una le costó tiempo al atacante, y el tiempo era lo único que no podía comprimir del todo.

¿Dos meses sin que nadie lo viera?

Sí, y eso es lo que incomoda.

La detección no vino de un control de seguridad. Vino de una caída de servicio.

Hay un detalle todavía mejor. OpenAI se enteró de que el ataque a Hugging Face había salido de su propia infraestructura cuando pidió que revocaran unas credenciales halladas en su investigación interna, y le contestaron que ya estaban revocadas porque las habían usado en el ataque. Se enteró por la víctima.

Hablamos de una empresa con equipo propio de seguridad, telemetría en todo y capacidad de reconstruir el incidente después del hecho.

Si en su empresa el monitoreo fuera de horario lo cubre alguien cuando puede, la pregunta no es si lo detectarían. Es otra: ¿cuánto tiempo pasaría antes de que alguien mirara? Germán Moreno ya lo escribió en este blog, y el dato sigue igual: el ataque casi siempre arranca de noche o en fin de semana.

Los informes están publicados por OpenAI y por Hugging Face. Si le interesa el detalle técnico, léalos completos.

Si no sabe cuál es ese número en su empresa, es de las primeras cosas que medimos en el diagnóstico sin costo.

La conclusión que me llevo no es que la inteligencia artificial sea peligrosa. Es que el atacante ya no se cansa, y la defensa de muchas empresas sigue organizada alrededor de gente que sí.

Haz clic para acceder al queso de inicio de sesión o registro