¡Posible pirateo del puente de Connext! Más de 70K Frontrunned

TLDR: El equipo de investigadores de Sayfer encontró una nueva vulnerabilidad potencial en los contratos inteligentes del puente entre cadenas de Connext. Parece que su sistema de remuneración para los enrutadores (usuarios que hacen posible las transferencias en las cadenas de envío y recepción) es sensible a la ejecución anticipada. De hecho, encontramos más de 1000 transacciones MEV solo en la cadena de bloques de Ethereum, por un total de $70 en tarifas robadas.

Tómame a los detalles técnicos.

Web3 es una visión extraordinaria y revolucionaria de la World Wide Web que nos ofrece muchas posibilidades nuevas. Sin embargo, como todo lo nuevo, tiene su lado bueno y su lado malo y la famosa guerra entre sombreros blancos y negros no perdona a web3. Sin duda, web3 se convirtió en el nuevo terreno de juego para los piratas informáticos.

Como empresa de seguridad, a menudo encontramos vulnerabilidades que pueden ser utilizadas por piratas informáticos y, en este artículo, le presentaremos una de ellas, la vulnerabilidad frontal de las tarifas de Connext.

¿Qué es Connext?

Connext es una plataforma basada en la cadena de bloques de Ethereum que permite a los usuarios realizar transacciones en diferentes redes compatibles con Ethereum. Connext logra su función sin el uso de ningún validador fuera de la cadena. Funciona a través del Protocolo de transferencia Xchain sin custodia (NXTP) para sus transferencias entre cadenas.

Arquitectura de conexión

NXTP es un protocolo simple para transferencias entre cadenas totalmente sin custodia y llamadas por contrato. La conclusión clave de este protocolo es que toda la información necesaria para ambas partes está disponible en la cadena

Cada vez que alguien mueve dinero de una cadena de bloques a otra, ocurren tres pasos:

  1. Selección de ruta: Los usuarios seleccionan las cadenas y los activos y comienzan una subasta con la información de la transferencia. Los enrutadores ofertan para completar la transferencia dentro de un rango de tiempo/precio.
  2. Prepárese: Los usuarios envían una transacción a los contratos NXTP en la cadena de envío. Al ver el evento del contrato, los enrutadores bloquean la liquidez en la cadena de recepción.
  3. Realizar: Los usuarios proporcionan una firma para desbloquear fondos en la cadena de recepción y los enrutadores usan la firma revelada para reclamar la liquidez en la cadena de envío.

¿Qué es Front-Running?

La ejecución anticipada es el acto de colocar una transacción en una cola con el conocimiento de una transacción futura. La delantera en una plataforma de cadena de bloques normalmente ocurre cuando un minero, que tiene acceso a información sobre transacciones pendientes, realiza un pedido que le generaría una ganancia en función de una operación pendiente. Por ejemplo, en la cadena de bloques de Ethereum, la ejecución anticipada puede ocurrir cuando los bots pueden cotizar un precio de gasolina más alto que una operación pendiente, lo que acelera su procesamiento. Esto sucede principalmente por razones de arbitraje.

Mempool es un conjunto de transacciones de Ethereum que se han transmitido a la red y esperan ser empaquetadas en bloques. Es la premisa para la implementación de front-running.

El bot de ejecución frontal analiza y encuentra objetivos que pueden ser atacados al escanear continuamente las transacciones pendientes en Mempool.

El valor extraíble máximo (o minero) (MEV) se refiere a las ganancias que los mineros y otras entidades pueden obtener al explotar la transparencia de la cadena de bloques para ejecutar transacciones rentables antes de que se confirmen.

Los detalles técnicos

Los routers tienen dos fuentes de ingresos: tarifas de subasta y tarifas de envío de repetidores.

Como se explica en el Academia Connex:

Tarifas de subasta

Cada vez que un usuario transmite a la red Connext señalando su intención de realizar una transferencia entre cadenas, los enrutadores pueden responder con ofertas selladas. El proceso subyacente para esto se describe con más detalle aquí: Subasta de ruta. Las ofertas incluyen el compromiso de los enrutadores de cumplir con la transacción dentro de un rango de tiempo y precio predefinido. Luego, Connext empareja al usuario con la oferta más barata.

Una vez que el enrutador detecta un evento que contiene su oferta firmada, el enrutador envía la transacción. Para incentivar al enrutador a completar la transacción, la cantidad bloqueada en la cadena de recepción se reduce por la tarifa de subasta que recibe el enrutador.

Tarifas de envío de repetidores

El usuario que inició la transmisión firma un mensaje una vez que el enrutador ha preparado la transacción.

El mensaje se envía a un repetidor que gana una tarifa por el envío. El repetidor suele ser otro enrutador. Aquí se utiliza un repetidor para permitir a los usuarios enviar transacciones con datos de llamadas arbitrarios en la cadena de recepción sin necesidad de gas para hacerlo. Luego, el enrutador envía el mismo mensaje firmado y completa la transacción en el lado del remitente, desbloqueando la cantidad original.

Durante nuestra investigación, encontramos que la cumplir en función de la TransactionManager.sol El contrato carece de un mecanismo de autenticación particular, lo que permite a un atacante MEV ejecutar la transacción de un repetidor y robar su Tarifas del repetidor.

Los atacantes MEV pueden buscar transacciones pendientes en Mempool que llamen al cumplir en función de la Administrador de transacciones contrato. Luego pueden realizar un ataque de desplazamiento enviando la misma transacción a Mempool pero con una tarifa de gas más alta. Esto pasa por alto las medidas de autenticación actualmente vigentes, ya que el atacante simplemente copia la transacción, incluida su firma.

La vulnerabilidad detrás de este ataque se origina en un error lógico en el TransactionManager.sol:842.

LibAsset.transferAsset(txData.receivingAssetId, pagadero(msg.sender), retransmisorFee);

La tarifa de retransmisor se envía al remitente del mensaje, sin ninguna verificación. Quienquiera que llame al cumplir la función primero obtiene la tarifa.

Si la transacción líder supera con éxito la transacción original enviada por el repetidor, esa transacción legítima se revierte con un '#F:019' código de error, ya que sería la segunda vez que se cumple.

El impacto

El impacto financiero aquí es crítico, ya que se trata de un ataque económico que tiene como objetivo uno de los componentes del protocolo NXTP: el repetidor (es importante tener en cuenta que los fondos de los usuarios actualmente no están en riesgo). Mediante el uso de ataques MEV, los atacantes maliciosos pueden potencialmente robar las tarifas del retransmisor, impidiendo así el incentivo del retransmisor para realizar la transacción.

Sin tarifas lo suficientemente rentables, los repetidores pueden dejar de brindar su servicio, lo que con el tiempo podría impedir que el protocolo NXTP funcione.

Este escenario no es teórico en absoluto. Durante nuestra investigación MEV, encontramos que este ataque está siendo explotado activamente por sofisticados bots favoritos generales familias que actualmente estamos rastreando. Estos bots provocan la pérdida de una gran cantidad de fondos en la red Ethereum. 

Desde su implementación, hemos encontrado más de mil ataques exitosos en el TransactionManager.sol contrato. Un ejemplo de este tipo incluye:

Transacción del atacante:

  1. https://etherscan.io/tx/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985
  2. https://ethtx.info/mainnet/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985/

Transacción de la víctima:

  1. https://etherscan.io/tx/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff
  2. https://ethtx.info/mainnet/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff/

Podemos decir que ambas transacciones están relacionadas con la misma transferencia entre cadenas al verificar el valor del parámetro de firma en los datos de la transacción. Dado que las firmas son las mismas en nuestro ejemplo anterior, sabemos que ambos remitentes están tratando de obtener el tarifa de retransmisor, por lo que uno de ellos está tratando de adelantarse al otro. Para identificar el bot, solo necesitamos comparar el costo de las transacciones, siendo el más costoso el del atacante.

Nuestro equipo estimó que la cantidad total de tarifas cobradas, solo en la cadena de bloques Ethereum, es de aproximadamente $ 70k.

Informes

Hemos informado esta vulnerabilidad a Connext a través de la plataforma de recompensas por errores Immunefi. Después de un largo intercambio, Connext nos dijo que esto no era una vulnerabilidad y que “esto es por diseño.

Aquí está su última respuesta:

Creemos que los contratos inteligentes aún pueden no ser lo suficientemente seguros para los usuarios principales, y creemos que historias como este caso son la causa de ello. Creemos que las criptomonedas cambiarán el mundo (si aún no lo ha hecho). Es por eso que vemos como nuestra responsabilidad informar al mundo sobre cómo algunos protocolos consideran sus responsabilidades de seguridad cibernética.

Escrito por
AvigdorSason Cohen

Avigdor es investigador de seguridad web3 en Sayfer. Le apasionan las nuevas tecnologías de cadena de bloques y cómo podemos asegurarnos de desarrollarlas de manera segura.

 

Ir al contenido