Robo y devolución a NEAR Intents por 3,87 millones de dólares
Un atacante drenó unos 3,87 millones de dólares en USDT de un contrato de NEAR Intents en BNB Chain entre la noche del 30 de septiembre y el 1 de octubre, y cuarenta y ocho horas más tarde devolvió todo. No cobró nada por hacerlo. El caso lo cerró Alex Shevchenko, gerente general de NEAR Intents y cofundador de Aurora Labs, con una secuencia de tres movimientos: publicó las direcciones del atacante, le dio un plazo de dos días y abrió un canal cifrado para hablar en privado.
La primera huella del ataque son dos retiros de prueba, de 10 y 11 USDT. Montos irrisorios, del tipo que sirve para confirmar que la llamada al contrato devuelve lo que uno espera antes de pedirle algo grande. Funcionaron. Después vinieron cinco retiros que sumaron 3.865.000 USDT desde una bóveda en BNB Chain, repartidos a lo largo de unas seis horas, según el relevamiento de Bitquery. Una salida final de 35.000 USDT explicaría la diferencia con la cifra redonda de 3,8 millones que la empresa usó después en sus comunicados.
El origen fue un bug en la interacción entre Omni —la infraestructura que maneja depósitos y retiros— y el contrato inteligente de NEAR Intents. Eso es todo lo que se sabe con precisión, y es menos de lo que parece: no hay confirmación pública de cuál fue la primitiva que falló, si una verificación de firma ausente, un nonce mal manejado o una condición de carrera. A más de una semana del incidente, el informe técnico detallado que la empresa prometió sigue sin publicarse. El protocolo NEAR, el token y el resto de las aplicaciones del ecosistema no fueron tocados. El agujero estaba en la capa de infraestructura de una aplicación, no en la cadena.
La ironía de la semana previa
Siete días antes, el 24 de septiembre, Bitget sufrió un robo de 387,5 millones de dólares. NEAR Intents fue uno de los servicios que se usó para intentar mover ese dinero, y su capa de riesgo lo bloqueó: rechazó más de 50 millones en transferencias vinculadas al exchange, congeló 503.000 dólares y dejó pasar 166.000.
Esa capa se llama SHIELD, y es la misma que una semana después detectó los retiros irregulares de su propia bóveda. La detección fue rápida —las operaciones se suspendieron el 1 de octubre, el sitio y la función de swap volvieron en cerca de una hora, y los depósitos y retiros en once redes, entre ellas BSC, Polygon, TON y Scroll, quedaron congelados unas doce horas más mientras se reparaba la infraestructura—.
Dicho de otro modo, el sistema de riesgo hizo su trabajo dos veces en siete días, una contra el dinero robado de otro y otra contra el propio. El que falló fue el contrato. Para una arquitectura que se vende como la alternativa sin puentes al movimiento de valor entre cadenas —el usuario declara el resultado que quiere y una red de operadores llamados solvers lo ejecuta, con más de 30.000 millones de dólares procesados en 35 blockchains—, la distinción importa: la pieza nueva aguantó, la plomería no.
El error que le costó el botín
Acá está el punto que la mayoría de las coberturas pasó por encima. A las 14:30 del 1 de octubre, el 76% de lo robado ya estaba convertido en 34,69 BTC repartidos en cuatro billeteras. Pero el 21% restante, unos 802.000 dólares, había llegado a direcciones de depósito de KuCoin. Un exchange centralizado con KYC. Es decir: una dirección que alguien tuvo que registrar con documentos.
El investigador ZachXBT fue quien trazó el recorrido —de la billetera caliente en BNB Chain a KuCoin, y de ahí el salto a Bitcoin—. Cuando Shevchenko anunció al día siguiente que tenían identificado al responsable, la afirmación no era una pose de negociación. Era la consecuencia aritmética de que una quinta parte del dinero había pasado por una ventanilla que guarda nombres.
El ultimátum de 48 horas, entonces, no fue una muestra de poder de la empresa. Fue la cuantificación de un apalancamiento que el propio atacante le había entregado.
| Elemento | Detalle |
|---|---|
| Monto drenado | 3.865.000 USDT (+35.000 en una salida final) |
| Cadena afectada | BNB Chain, únicamente |
| Vector | Bug en la interacción Omni ↔ contrato de NEAR Intents |
| Preparación | Dos retiros de prueba, de 10 y 11 USDT |
| Ejecución | 5 retiros en ~6 horas, noche del 30/9 al 1/10 |
| Detección | SHIELD, capa de riesgo propia, el 1/10 |
| Error de lavado | 21% (~U$S 802.000) enviado a depósitos de KuCoin |
| Devolución | 34,59 BTC el 2/10 entre 14:31 y 15:05 UTC, más el resto |
| Recompensa pagada | Ninguna confirmada |
| Post-mortem técnico | Prometido, sin publicar |
Un BNB como golpe a la puerta
La respuesta del atacante llegó por el canal más incómodo posible, que es la propia blockchain. Desde la dirección que BscScan ya etiquetaba como «Near Intents Exploiter 1» salió 1 BNB hacia la dirección de recuperación, con un mensaje adosado: estaba dispuesto a colaborar y pedía un contacto de Signal para seguir la conversación fuera de la vista de todos.
Shevchenko confirmó públicamente el contacto y resolvió el problema de la privacidad de una manera elegante: publicó mensajes que solo podían descifrarse con la clave privada de una dirección de Ethereum determinada. Quien controlaba esa clave podía leer; el resto, no. Un canal cifrado montado sobre infraestructura pública, sin necesidad de que ninguna de las dos partes revelara un dato de contacto.
El 2 de octubre, entre las 14:31 y las 15:05 UTC, llegaron 34,59 BTC —cerca de 2,95 millones de dólares— a la dirección de Bitcoin que la empresa había publicado. A las 16:15:28 UTC, una transacción en BNB Chain cerró el episodio con otro mensaje: el remitente avisaba que había devuelto todo, reconocía que su conducta estuvo mal y sugería usar los programas de recompensas por vulnerabilidades, con un enlace a una página de HackenProof.
Shevchenko dio por cerrado el asunto el mismo día, confirmando que el dinero había vuelto completo, que la investigación se detenía, y repitiendo el consejo de usar los canales de bug bounty en lugar de interrumpir servicios en producción. Illia Polosukhin, fundador de NEAR, insistió con la misma idea: los programas de recompensas existen por algo.
Lo que este caso no es
Conviene no confundirlo con un rescate de sombrero blanco, porque la cronología no lo permite. La secuencia fue robo, conversión a Bitcoin, paso por un exchange con KYC, identificación, ultimátum público y recién entonces el ofrecimiento de cooperar. El encuadre de «investigación de seguridad» apareció después de que lo identificaran, no antes de que tocara el contrato. Un investigador que pensaba reportar la falla no fracciona tres millones en Bitcoin ni abre cuentas en KuCoin.
La comparación con GMX lo deja claro. En julio de 2025, ese atacante devolvió unos 37,5 millones de dólares y se quedó con un 10% como recompensa negociada, unos 3,7 millones. En Euler Finance, de los 197 millones robados en marzo de 2023 se recuperaron más de 177. En el caso de Liquid, de este mismo año, los atacantes devolvieron el 85% en veinticuatro horas y conservaron el resto sin preguntarle a nadie.
No hay recompensa confirmada, ni términos revelados, ni porcentaje retenido. El atacante trabajó tres millones, los movió por cuatro billeteras y un exchange, y se fue con cero. Es, en términos puramente económicos, el peor resultado posible para él y el mejor para la empresa.
El tercer trimestre de 2026 cerró con cerca de 742 millones de dólares en pérdidas por hackeos, contra 86 millones a fines de junio, según DeFiLlama. Casi diez veces en tres meses, y más de 1.250 millones desde julio. En ese panorama, recuperar el 100% es la excepción estadística. Queda una deuda pendiente, y no es menor. El informe técnico sigue sin aparecer. Mientras no se publique, la frase «un bug en la interacción entre Omni y el contrato» cumple la función de explicar sin explicar, y cualquier otro equipo que esté construyendo sobre arquitecturas de intents no tiene de dónde aprender qué fue exactamente lo que falló.
Por Sistemas, el 09/10/2026.