Los validadores de AFX firmaron el robo de 24 millones como si fuera rutina, y el atacante entró trece días antes con una oferta de trabajo falsa
La transacción que se llevó 24,15 millones de dólares del puente de AFX Trade el 22 de julio a las 21:27 UTC era perfectamente válida. La firmaron los validadores del propio protocolo, en…

La transacción que se llevó 24,15 millones de dólares del puente de AFX Trade el 22 de julio a las 21:27 UTC era perfectamente válida. La firmaron los validadores del propio protocolo, en el número que exige el quórum, con las claves correctas, y la cadena la procesó sin objetar nada porque no había nada que objetar. Blockaid dio la alerta tres minutos después. Para entonces el dinero ya estaba fuera y el sistema de seguridad de la casa había funcionado exactamente como estaba escrito.
El protocolo publicó este viernes el resultado de su investigación técnica y anunció que el lunes 3 de agosto presentará un «plan de buena voluntad» para los afectados. Lo interesante del informe no es el remate, sino el arranque: el atacante entró el 9 de julio haciéndose pasar por reclutador de una empresa llamada Oddium Lab y convenciendo a un desarrollador de que clonara un repositorio con aspecto legítimo. Ningún contrato inteligente falló en ningún momento de esa historia.
La cadena de trece días, paso a paso
El informe de AFX, recogido por crypto.news, describe una escalada de manual y responde a la pregunta que quedó abierta la noche del robo. El repositorio clonado llevaba una configuración de Git maliciosa que ejecutaba una carga oculta durante un flujo de trabajo rutinario, sin que el desarrollador hiciera nada distinto de lo que hace cada día. Desde ese portátil el atacante fue ampliando acceso a los sistemas internos de desarrollo y, días después, se descargó el código fuente del proyecto.
El salto decisivo llegó cuando subió un complemento Groovy malicioso al repositorio de artefactos JFrog de la empresa, lo que le dio ejecución remota de código dentro del entorno que compila y despliega el software. De ahí pasó a producción aprovechando un servicio de gestión basado en Ansible que ya tenía acceso privilegiado a los nodos validadores. No robó credenciales nuevas ni explotó ningún servicio externo: usó las relaciones de confianza que ya existían para colocar cargas en un subconjunto de validadores, que descargaron una segunda fase y empezaron a manipular el tratamiento de los mensajes de consenso.
| Fecha | Paso | Qué se rompió |
|---|---|---|
| 9 jul | Falso reclutador de «Oddium Lab» pide clonar un repositorio | Nada técnico: una persona |
| 9 jul | Configuración de Git maliciosa ejecuta carga oculta | El portátil del desarrollador |
| días siguientes | Movimiento lateral y descarga del código fuente | Sistemas internos de desarrollo |
| s/f | Complemento Groovy malicioso en el repositorio JFrog | El entorno de compilación y despliegue |
| s/f | Servicio Ansible con acceso privilegiado a validadores | La infraestructura de producción |
| 22 jul 21:27 UTC | Validadores infectados cofirman la salida de fondos | 24,15 M USDC |
| 22 jul 21:30 UTC | Blockaid detecta y avisa | Tres minutos tarde |
El servidor que se quedaba sin memoria era la alarma, y la atendió el departamento equivocado
Hay un detalle en el informe que vale más que el resto del relato. El servidor de JFrog sufrió caídas repetidas por falta de memoria mientras el complemento malicioso estaba dentro. AFX las trató como problemas operativos y las gestionó con ayuda del propio proveedor, de modo que el complemento sobrevivió a varios reinicios sin activar ninguna respuesta de seguridad.
Es decir: el sistema sí avisó. Un servidor que se muere de memoria una y otra vez es una anomalía y AFX la vio. Lo que falló fue la traducción. Un síntoma de capacidad se atendió como incidencia de capacidad, con el fabricante al teléfono, cuando era la huella de una intrusión. Ese error de encuadre no aparece en ninguna auditoría de contratos, porque las auditorías miran el código, no el registro de incidencias del equipo de sistemas.
El forense se salvó por un accidente parecido. Los atacantes reemplazaron binarios del sistema por versiones troyanizadas, inyectaron bibliotecas maliciosas e intentaron borrar los registros de seguridad. Parte del malware se cayó antes de terminar, y los registros de SELinux conservaron el tráfico de mando y control. Sin esa avería del propio atacante, buena parte de la reconstrucción no existiría.
El quórum no sirve si un solo Ansible manda en todos los validadores
Un puente con varios validadores está diseñado para que ninguna clave suelta pueda mover el dinero, y la lógica es sólida siempre que los validadores fallen de forma independiente. Casi nunca lo hacen. Si un mismo servicio de configuración despliega en todos ellos con privilegios, el atacante que se hace dueño de esa herramienta no rompe el quórum: lo cumple. Deja de haber varias firmas y empieza a haber una decisión replicada.
Esa es la razón por la que el ataque no aparece en ningún panel de riesgo on-chain. Steven Goldfeder, cofundador de Offchain Labs, confirmó desde el primer día que el puente nativo de Arbitrum no había sido comprometido, y el informe lo ratifica: el incidente quedó confinado a infraestructura de AFX. La cadena aguantó. La empresa que colgaba de ella, no.
Tres robos grandes en julio y el código nunca falló
Julio cierra con más de 110 millones de dólares robados en ocho protocolos DeFi, y AFX es el mayor de todos. Lo que emparenta a los dos primeros del mes es el mecanismo, no la cifra. El 30 de julio Ostium publicó que sus 23,75 millones se fueron porque alguien accedió a su infraestructura fuera de la cadena y metió precios falsos de BTC-USD en el depósito de liquidez, mientras sus contratos y sus multifirmas seguían intactos, algo que contamos aquí. Ese mismo día empezó el barrido de los monederos Coldcard, donde las claves privadas eran válidas porque salían de un generador que producía un puñado de resultados posibles.
En los tres casos la criptografía hizo su trabajo sin un solo error. Las firmas eran buenas, el consenso funcionó, los contratos se comportaron según su especificación. Lo que se movió fue la superficie de ataque: del contrato inteligente al canal de compilación, al repositorio de artefactos, al firmware, al mensaje directo de un reclutador que no existe. Auditar contratos sigue siendo necesario y ha dejado de ser suficiente, porque el dinero de un protocolo ya no está detrás de su código, está detrás de su departamento de sistemas.
Una recompensa ofrecida a un grupo sancionado
La atribución cierra el círculo y abre un problema. AFX dice que sus hallazgos, por técnicas e infraestructura observada, son coherentes con las atribuciones independientes que señalan a UNC4899, también conocido como TraderTraitor, la rama de Lazarus vinculada a la Oficina General de Reconocimiento de Corea del Norte y seguida por Mandiant, Microsoft Threat Intelligence, el FBI y CISA. Conviene leer la frase como está escrita: coherente con, no demostrado por. El patrón encaja con lo que se ve estas semanas: Infosecurity Magazine informó el 30 de julio de una campaña atribuida a Corea del Norte que ha atacado a desarrolladores de cerca de un centenar de organizaciones con el mismo señuelo, falsas ofertas de empleo y falsas revisiones de código.
Aquí aparece la incomodidad. En los días siguientes al robo, AFX ofreció al atacante quedarse con el 30%, unos 7,2 millones de dólares, si devolvía el resto. Es la jugada habitual del sector y no funcionó. Pero si el destinatario de esa oferta es una rama de Lazarus, entidad designada por la OFAC desde 2019, la recompensa de sombrero blanco deja de ser una negociación y se parece a un pago a un programa estatal sancionado. La oferta se hizo antes de que la atribución fuera pública, lo que la explica sin resolver el problema para el próximo protocolo que se vea igual.
Un plan de buena voluntad está en marcha tras el reciente incidente de seguridad, y se dará a conocer el lunes 3 de agosto. Los inversores de AFX, el equipo y quienes nos apoyaron desde el principio estamos todos profundamente afectados por la situación.
Merece atención la elección de palabras. No es «reembolso» ni «compensación», es «buena voluntad». Y meter a inversores, equipo y primeros apoyos en la misma frase que a los usuarios coloca a todos en el mismo barco, que es el aspecto que tiene un plan sin obligación jurídica detrás.
La otra cara
Hay cosas que AFX hizo bien y conviene decirlas. Publicó un post mortem con nombres de herramientas, fechas y errores propios, incluido el más caro de admitir, que es haber leído las caídas de memoria como una avería. Ha reconstruido la infraestructura afectada, rotado credenciales, subido la sensibilidad de la monitorización y migrado producción a un entorno aislado con segmentación de confianza cero. Comparado con el silencio de otros incidentes del mes, es un documento útil.
Y la aritmética del atacante tampoco le ha salido redonda. Convirtió los 24,15 millones de USDC en unos 12.467 ether a un precio medio de 1.937 dólares para escapar de la capacidad de congelación de Circle. Con el ether a 1.861 dólares esta tarde, ese paquete vale alrededor de 23,2 millones: la huida del dólar congelable le ha costado cerca de un millón en nueve días, algo menos del 4% del botín.
El mercado no se enteró de nada de esto. El bitcoin cerraba el mes en 62.915 dólares con una caída del 3%, el ether en 1.861 un 3,4% abajo, XRP en 1,06 y solana en 72,86. Los robos por la puerta de atrás no mueven precios: mueven presupuestos de seguridad, y con retraso.
- El plan del lunes 3 de agosto: si cubre el 100% de lo perdido, con qué dinero, en qué plazo y si llega en USDC o en tokens del propio protocolo.
- Si algún organismo público confirma formalmente la atribución a UNC4899, lo que convertiría la recompensa ofrecida en un asunto de sanciones y no de negociación.
- Si otros protocolos revisan quién tiene acceso privilegiado a sus validadores desde un mismo servicio de despliegue, que es el eslabón concreto que falló aquí.
- Los 12.467 ether: siguen quietos y sin recuperación pública confirmada.
- Si aparece más código de AFX robado en circulación, porque el atacante se descargó el fuente del proyecto días antes del robo.
- Si el señuelo del falso reclutador vuelve a funcionar en otra empresa del sector después de dos avisos públicos en una semana.
Datos y fuentes: crypto.news, ChainCatcher, KuCoin, Crypto Briefing, Infosecurity Magazine, Blockaid, PeckShield, Offchain Labs.