Back to Blog

~$104.6M Perdidos: Verus, RetoSwap y Más | BlockSec Semanal

Code Auditing
May 27, 2026
9 min read
Key Insights

Durante la semana pasada (2026/05/18 - 2026/05/24), BlockSec identificó múltiples incidentes de ataques en varios ecosistemas blockchain. La tabla a continuación lista 5 incidentes notables con pérdidas totales estimadas de aproximadamente $104.6M.

Fecha Incidente Tipo Pérdida Estimada
2026/05/18 Incidente Verus Fallo en la Lógica de Negocio ~$11.7M
2026/05/18 Incidente EchoProtocol Clave Privada Comprometida ~$76.7M
2026/05/20 Incidente RetoSwap Fallo en la Lógica de Negocio ~$2.7M
2026/05/22 Incidente Polymarket Clave Privada Comprometida ~$700K
2026/05/24 Incidente StablR Clave Privada Comprometida ~$12.8M

Se seleccionan dos incidentes para un análisis en profundidad:

  • Verus: el atacante explotó un fallo de validación de tipo en el Puente Verus-Ethereum al enviar una salida de exportación suplementaria artesanal que el puente clasificó erróneamente como una exportación primaria válida. La semántica de los mensajes entre cadenas forma parte de la superficie de ataque.
  • RetoSwap: un fallo de autenticación a nivel de protocolo en el flujo de comercio P2P permitió a un atacante secuestrar el rol de árbitro enviando un mensaje ACK falsificado. El atacante comprometió la creación de la billetera multisig completamente fuera de la cadena.

El Mejor Auditor de Seguridad para Web3

Valide el diseño, el código y la lógica de negocio antes del lanzamiento


Destacado de la Semana: Verus

Este incidente se destaca porque el atacante abusó deliberadamente de un tipo de exportación entre cadenas especializado, lo que indica un profundo conocimiento del diseño interno de la cadena Verus. El exploit demuestra que los formatos de mensajes entre cadenas, incluidos los campos de datos suplementarios y los límites de codificación, forman parte de la superficie de ataque y requieren el mismo rigor que la verificación de pruebas criptográficas.

El 18 de mayo de 2026, el Puente Verus-Ethereum, un puente entre cadenas que conecta la cadena Verus L1 y Ethereum, fue explotado por aproximadamente $11.7M en ETH, tBTC y USDC [1][2]. La causa raíz fue un fallo de validación de tipo en la ruta de importación del lado de Ethereum: el contrato del puente aceptó una salida de exportación suplementaria artesanal y la clasificó erróneamente como una exportación primaria válida, lo que permitió al atacante suministrar datos de transferencia coincidentes y vaciar los fondos. Al 23 de mayo, aproximadamente el 75% de los fondos robados habían sido devueltos.

Antecedentes

El Puente Verus-Ethereum libera activos en Ethereum después de que alguien demuestre que existe una exportación calificada del lado de Verus bajo un estado Verus notarizado. Ethereum no observa directamente las transacciones de Verus; depende de los datos de prueba enviados más una notarización que ancla el estado de Verus en el que se confía.

Tres objetos del puente son relevantes para este incidente: una exportación primaria, que es el objeto que Ethereum importa y utiliza para los pagos; una salida de exportación suplementaria, que son datos adicionales adjuntos a la exportación primaria y no están destinados a ser tratados como una exportación activa independiente para fines de pago; y una notarización, que permite a Ethereum demostrar que un objeto específico del lado de Verus existió en el estado finalizado del puente.

Análisis de Vulnerabilidad

Los contratos de puente del lado de Ethereum con errores están desplegados en 0xa045...6fc87f y 0x08f0...d0107d.

La causa raíz fue un fallo de validación de tipo en la ruta de importación de Ethereum. El puente demostró que existía un objeto real del lado de Verus, pero no verificó que el objeto demostrado fuera una exportación primaria válida antes de usarlo para liberar fondos. En cambio, aceptó una salida suplementaria artesanal y la analizó como si fuera una exportación activa normal.

A alto nivel, el flujo vulnerable es:

proveImports(...)
    -> verificar prueba
    -> verificar keccak256(serializedTransfers) == hash de transferencia comprometido

processTransactions(...)
    -> ejecutar pagos en Ethereum

Ninguna verificación en este flujo rechaza objetos con FLAG_SUPPLEMENTAL establecido. La corrección verifica explícitamente este indicador y revierte cuando el objeto demostrado es suplementario:

Análisis del Ataque

El siguiente análisis se basa en la transacción de Ethereum 0x6990f0...87eb321 y la transacción de Verus f899e698...b9f5a733.

  • Paso 1: El 17 de mayo, el atacante financió la dirección de Ethereum 0x5aBb...9D5777 con 1 ETH a través de Tornado Cash. El 18 de mayo, el atacante obtuvo 0.02 VRSC del faucet de Verus para la dirección RW9vEW...B3g6zd.

  • Paso 2: El atacante envió cuatro transacciones de exportación con destino a Ethereum en Verus que contenían salidas de exportación suplementarias artesanales. Estas salidas suplementarias fueron codificadas para ser analizables sin errores y contenían un compromiso hashReserveTransfers que coincidía con los pagos fraudulentos que el atacante pretendía ejecutar más adelante.

  • Paso 3: Después de que una notarización entre cadenas avanzara lo suficiente en Ethereum, el atacante envió una transacción de importación falsificada en Ethereum. El objeto del lado de Verus demostrado fue la salida suplementaria de la transacción de Verus mencionada anteriormente.

  • Paso 4: El puente de Ethereum aceptó la prueba pero no rechazó el objeto demostrado como datos suplementarios. En cambio, analizó la salida artesanal como si fuera una exportación activa válida. Dado que el atacante también suministró serializedTransfers cuyo hash coincidía con el valor hashReserveTransfers comprometido, el puente continuó a través del flujo de importación.

  • Paso 5: Con la salida suplementaria malinterpretada como una exportación válida, las transferencias fraudulentas pasaron las verificaciones del lado de Ethereum. El atacante vació aproximadamente $11.7M en ETH, tBTC y USDC.

  • Paso 6: Poco después de que la importación maliciosa tuviera éxito, los nodos de Verus encontraron una aserción de estado inválido causada por la coexistencia del hilo de exportación fraudulento y un hilo de exportación real, lo que detuvo la progresión posterior del puente y limitó la explotación subsiguiente.

Conclusión

El incidente fue causado por un fallo de validación de tipo en el Puente Verus-Ethereum: el contrato de Ethereum aceptó una prueba criptográfica real, pero el objeto demostrado era una salida de exportación suplementaria, no una exportación primaria válida para pagos.

Los formatos de mensajes entre cadenas forman parte de la superficie de ataque. Los datos suplementarios, los campos opcionales, las codificaciones compactas y los desplazamientos del analizador deben tratarse con el mismo rigor que las verificaciones de firmas o pruebas de Merkle. Cuando un objeto no coincide con el tipo esperado para la acción que se está ejecutando, el puente debe rechazarlo directamente en lugar de intentar analizarlo.

Referencias

Comience con Phalcon Explorer

Analice Transacciones para Actuar con Sabiduría

Pruébelo gratis ahora

Más Incidentes de Esta Semana

RetoSwap

El 20 de mayo de 2026, RetoSwap, un exchange P2P descentralizado en Monero bifurcado del Protocolo Haveno, fue explotado por aproximadamente $2.7M (7,000 XMR) [1]. La causa raíz fue un fallo de autenticación a nivel de protocolo: el cliente aceptó un mensaje ACK falsificado y fuera de orden, y sobreescribió la dirección Tor almacenada del árbitro con una controlada por el atacante sin verificar al remitente contra la clave pública conocida del árbitro. Esto permitió al atacante secuestrar la creación de la billetera multisig y robar los fondos en cuanto fueron depositados.

Antecedentes

RetoSwap es un exchange P2P descentralizado en Monero, bifurcado del Protocolo Haveno. Su protocolo de comercio se basa en un modelo multisig de árbitro 2 de 3 para asegurar las operaciones y coordina las transacciones fuera de la cadena a través de Tor.

Una operación normal se desarrolla en tres fases: primero, el comprador, el vendedor y el árbitro completan intercambios de mensajes fuera de la cadena para establecer una billetera multisig; segundo, los fondos se bloquean en la billetera multisig solo después de que haya sido completamente creada; tercero, el comprador y el vendedor cofirman una transacción de pago para liquidar, o el árbitro interviene para resolver disputas. Toda la comunicación se realiza a través de Tor, y cada nodo se identifica únicamente por su dirección .onion.

Análisis de Vulnerabilidad

El 20 de mayo, el proyecto Haveno abrió una solicitud de extracción titulada "core: refuse to update node address before multisig created" [2]. Para entonces, RetoSwap ya estaba siendo explotado.

El parche reveló una vulnerabilidad en TradeProtocol.java:onAckMessageAux(...). El cliente identificaba a los pares usando un senderNodeAddress suministrado por el mensaje sin verificar criptográficamente que el remitente coincidiera con la clave pública del árbitro esperado. Un atacante podía enviar un mensaje ACK falsificado que llevara una dirección .onion controlada por el atacante, y el cliente sobreescribiría la dirección del árbitro almacenada con ella.

Dado que esto ocurrió durante la Fase 1 (antes de la creación de la billetera multisig), la dirección del atacante reemplazó la dirección del árbitro real. Por lo tanto, el atacante poseía tanto la clave del comerciante como la clave del árbitro de la billetera multisig, lo que permitía el robo del saldo completo una vez que se depositaran los fondos.

La corrección aborda esto de dos maneras: verifica al remitente contra la clave pública conocida del par, rechazando mensajes de pares no verificados; y condiciona las actualizaciones de dirección a trade.isDepositRequested(), impidiendo sobreescrituras antes de que se cree la billetera multisig.

Análisis del Ataque

No se ha identificado ninguna transacción de ataque en cadena para este incidente. RetoSwap opera completamente a través de Tor con manejo de mensajes fuera de la cadena, por lo que las acciones críticas ocurren fuera de cualquier libro mayor público. La siguiente reconstrucción se basa en el parche disponible públicamente y las comunicaciones oficiales.

  • Paso 1: El atacante se unió a una operación existente como comprador o vendedor.

  • Paso 2: El atacante envió un mensaje ACK falsificado y fuera de orden que parecía provenir del árbitro, llevando una dirección .onion controlada por el atacante como senderNodeAddress.

  • Paso 3: El cliente de la víctima aceptó el mensaje y sobreescribió la dirección almacenada del árbitro sin verificar al remitente contra la clave pública conocida del árbitro.

  • Paso 4: Toda la comunicación posterior destinada al árbitro, incluida la creación de la billetera multisig, fue enrutada al atacante, quien obtuvo la tercera clave multisig.

  • Paso 5: Una vez que el comprador y el vendedor depositaron fondos en la billetera multisig comprometida, el atacante robó el contenido completo de la billetera. El beneficio total ascendió a aproximadamente 7,000 XMR (~$2.7M).

Conclusión

El incidente no fue un fallo criptográfico sino un fallo de autenticación a nivel de protocolo: los mensajes fueron validados como bien formados, pero el remitente no estaba criptográficamente vinculado a una clave pública conocida antes de que se aplicaran las actualizaciones de dirección. Como resultado, el cliente trató un senderNodeAddress no verificado de un mensaje ACK falsificado como el nuevo punto de contacto del árbitro antes de que se creara la billetera multisig, lo que permitió al atacante secuestrar el rol de árbitro.

Las lecciones clave son: (1) cualquier mensaje que actualice la identidad de un par debe ser verificado criptográficamente contra la clave pública conocida del par antes de que se aplique la actualización, y (2) el estado crítico de identidad, como las direcciones de las contrapartes, debe ser inmutable una vez que ha comenzado la fase sensible a la seguridad (p. ej., la creación de la billetera multisig).

Referencias

Comience con Phalcon Security

Detecte cada amenaza, alerte sobre lo que importa y bloquee ataques.

Pruébelo gratis ahora

Acerca de BlockSec

BlockSec es un proveedor integral de seguridad blockchain y cumplimiento de criptomonedas. Desarrollamos productos y servicios que ayudan a los clientes a realizar auditorías de código (incluidos contratos inteligentes, blockchain y billeteras), interceptar ataques en tiempo real, analizar incidentes, rastrear fondos ilícitos y cumplir con las obligaciones AML/CFT, a lo largo del ciclo de vida completo de protocolos y plataformas.

BlockSec ha publicado múltiples artículos de seguridad blockchain en conferencias de prestigio, ha reportado varios ataques de día cero en aplicaciones DeFi, ha bloqueado múltiples hackeos para rescatar más de 20 millones de dólares y ha asegurado miles de millones en criptomonedas.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit