Cabecera blog ciberseguridad

Monitorizando atacantes en la blockchain de Ethereum: Ataques sandwich

Los ataques sandwich a la blockchain de Ethereum generan ganacias notables a los actores hostilesExisten actores maliciosos realizando ataques sobre la blockchain de Ethereum. Sin embargo, debido a su naturaleza abierta y pública, es posible identificar y rastrear algunos de estos ataques junto con sus autores. Hemos medido el beneficio que estos actores maliciosos están obteniendo (o robando) y la magnitud de estos ataques. 

Cuando los usuarios de la blockchain quieren ejecutar una transacción, necesitan que un minero la incluya dentro de uno de los bloques. Para ello, lo más habitual es enviar la transacción al mempool, que es una lista pública y temporal de transacciones a la espera de ser minadas. Los mineros tienen un incentivo para incluir nuevas transacciones en la blockchain (es decir, minar transacciones) porque obtienen beneficios cobrando comisiones durante el proceso. Por lo tanto, tienen un incentivo para monitorizar este mempool y procesar tantas transacciones como les sea posible. 

¿Qué transacciones eligen los mineros del mempool?

Respuesta corta: las más rentables. Cada usuario puede definir la comisión (gas fee) que está dispuesto a pagar a los mineros. Cuanto más alta sea esta comisión, más rápido se procesará su transacción. 

Ataques Frontrunning

Los atacantes monitorizan constantemente las transacciones enviadas al mempool. Se adelantan a la inclusión de estas transacciones en la blockchain y reaccionan primero, obteniendo beneficios si se cumplen ciertas condiciones. Esto es lo que se denomina ataque frontrunning

Un ataque frontrunning se aprovecha de los usuarios que envían una transacción pero que todavía están esperando a que se incluya en la cadena de bloques. Un atacante simulará el resultado de esas transacciones antes de que se ejecuten, y explotará esta información ejecutando él primero una transacción especialmente diseñada para proporcionarle beneficios.

Hay varias formas conocidas en las que un atacante puede sacar provecho de este tipo de acciones. En este artículo nos centraremos en los ataques sandwich.

Ataques sandwich

Un ataque sandwich es un tipo de ataque frontrunning. Se aplica sobre transacciones enviadas a un DEX (Decentralized EXchange) para comprar tokens. El atacante seguirá los siguientes pasos: 

  • Detectar una transacción de compra antes de su ejecución.
  • Comprar una cierta cantidad del mismo token antes de que se ejecute la transacción del usuario.
  • Esperar a que se ejecute la transacción del usuario.
  • Vender todas sus tokens justo después.
  • Disfrutar del beneficio.

Resumen: Bajo ciertas condiciones, si una transacción de compra está a punto de ser ejecutada, se pueden obtener ganancias comprando el mismo token primero y vendiéndolo justo después de que se ejecute.

¿Cómo es esto posible? 

La intuición es la siguiente: Cada vez que alguien compra un token, su precio aumenta. Por tanto, si alguien compra primero, y luego un usuario compra de nuevo el mismo token, el precio subirá. Al vender inmediatamente después, se obtiene un beneficio porque se compró barato y se vendió caro.

La verdadera (y más compleja) explicación

La explicación anterior es una versión simplificada para obtener la intuición sobre cómo funciona este ataque. En realidad, es un poco más complejo. El precio del token se rige por la ecuación del AMM (Automatic Market Maker), que es: x*y=k (siendo x e y la cantidad total disponible de cada token en el Liquidity Pool del par, tal como USDT-ETH, por ejemplo).

Con esta ecuación en mente y con un poco de matemáticas podemos llegar a la ecuación que define el beneficio esperado del ataque sandwich:

El significado de las variables es el siguiente:

  • P: Beneficio esperado desde la perspectiva del atacante.
  • Qx: Cantidad de tokens comprados por el atacante.
  • Q’x: Cantidad de tokens comprados por el usuario/víctima.
  • x: Cantidad de tokens disponibles en el liquidity pool.

Nota: Las variables que aumentan el beneficio son Q’x (cantidad de fichas compradas por el usuario) y Qx (cantidad de fichas compradas por el atacante). Cuanto más altas sean estas variables, mayor será el beneficio.

Por otro lado, según la ecuación, el ataque aumenta su beneficio manteniendo x (cantidad total de tokens disponibles en el LP (Liquidity Pool) ) lo más bajo posible. Una mejor manera de interpretar esto es: Qx y Q’x tienen que representar la mayor proporción posible del token de compra (x). En resumen, no importa cuántos tokens hay en un determinado LP, sino la proporción que representan Qx y Q’x con respecto a x.

Estos dos gráficos muestran cómo incrementan los beneficios a medida que lo hacen las variables Qx y Q’x. La cantidad total de tokens (x) se ha establecido en 100. Aunque la relación entre las variables Q y los beneficios no es lineal, para valores moderados es razonable suponer que lo es.

¿Siempre funciona? 

No. Se necesita que ocurran dos condiciones a la vez:

  1. El beneficio debe de ser mayor que la comisión de los mineros (gas fee). Como el beneficio tiende a ser pequeño, Q’x (total del tokens adquiridos por la víctima) necesita ser grande para superar las comisiones.
  1. Slippage relajado. Slippage es la máxima desviación del precio deseado que un usuario está dispuesto a aceptar en una operación. Dado que las transacciones no se ejecutan inmediatamente, otras transacciones que operan sobre el mismo token pueden ejecutarse primero, lo que da lugar a una variación del precio. Esto significa que los usuarios que quieren comprar un token no pueden saber el precio exacto al momento de ejecutarse sus transacciones. Esto plantea el problema de comprar tokens que pueden haber experimentado una variación de precio sustancial.

    Para proteger a los usuarios de la compra de un token a un precio no deseado, es posible definir un slippage para cada transacción. En la mayoría de los casos, el slippage se fija en un 2%. Cuanto más alto sea el slippage, más sujetas estarán las transacciones a ataques de frontrunning.

Cómo medir los ataques 

El primer paso es procesar todas las transacciones DEX (Decentralized EXchange). Procesamos todas las UniswapV2 y UniswapV3 de la blockchain de Ethereum.

Se considera una transacción como parte de un ataque sandwich cuando se cumplen las siguientes condiciones:

  1. Tres transacciones consecutivas sobre el mismo token.
  2. Las dos primeras son transacciones de compra y la última de venta.
  3. La primera y la última provienen de la misma wallet.
  4. La última transacción vende la totalidad de tokens comprados en la primera.
  5. La cantidad obtenida con la venta supera la cantidad comprada.

Si todas estas condiciones se cumplen, podemos estar seguros que estamos tratando con un ataque sandwich.

¿Cómo de frecuentes y rentables son?

Durante el período comprendido entre Mayo de 2020 y Abril de 2022 se detectaron 457,691 ataques sandwich.

Se muestra a continuación la distribución del número de ataques y beneficios obtenidos en función del tiempo:

El gráfico muestra una aparente tendencia a la baja en el número de ataques desde Abril de 2021. Sin embargo, el porcentaje de ROI (es decir, el beneficio medio medido en porcentaje, excluyendo las comisiones de los mineros) se mantuvo moderadamente constante a lo largo del tiempo, aún con variaciones significativas en el número de ataques sandwich exitosos. Con un ROI medio superior al 4%, se podría considerar este ataque como una excelente estrategia de inversión dentro del mundo de las criptomonedas, debido a su bajo riesgo (especialmente al tratar directamente con los mineros) y a unos beneficios razonables.

Como se muestra en el gráfico anterior, el beneficio medio es pequeño, alrededor de 0,15 ETH, pero hay un número significativo de oportunidades al mes para explotar esta técnica que podría llevar a acumular un beneficio sustancial. Esto se muestra en el siguiente gráfico:

Aunque hay una variación importante en el beneficio total mensual (es decir, todos los beneficios de los ataques sandwich sumados), las cifras son notablemente altas. Los beneficios medios en torno al 4% pueden dar lugar a beneficios mensuales de hasta 10.000 ETH. Esto es, por supuesto, con todos los actores combinados.

Nota: El beneficio total acumulado por estos ataques es de casi 60.000 ETH.

¿Quién se lleva el beneficio?

No podemos saberlo con certeza, especialmente entre los grandes actores. Al rastrear las wallets más rentables, aquellas que han tenido un gran éxito implementando este ataque, resulta que forman parte de famosos pools de minería. Estas wallets actúan como pasarelas intermedias, impidiendo categorizar y medir cuántos “jugadores” hay tras bambalinas. Estas son las 3 wallets más rentables:

El gráfico muestra una concentración sustancial de las ganancias totales obtenidas utilizando este ataque en las principales wallets. Todas ganaron más de 1.000 ETH, lo cual es sorprendente si se tiene en cuenta que el beneficio medio por ataque es alrededor de 0,15 ETH.

Los dos primeros atacantes son wallets de conocidos pools de minería. Sin embargo, la tercera parece ser un bot dedicado exclusivamente a ataques sandwich, a juzgar por sus transacciones. Por lo tanto, es posible que esta tercera wallet corresponda a un solo actor que opera dentro de un pool de minería. Si ése fuera el caso, este actor habría ganado más de 1.600 ETH explotando esta técnica.

El mayor ataque sandwich jamás visto

Ocurrió el 17 de mayo de 2021. Este ataque se llevó una ganancia de 56 ETH. Lo que en ese momento equivalía a 200.000 dólares. No está mal para únicamente dos transacciones ejecutadas en un segundo.

Otras consideraciones acerca de la naturaleza de este ataque

Puede ser interesante mostrar dos histogramas más que completan la imagen de este ataque.

Estos gráficos son más interesantes por lo que no muestran, que por lo que muestran. Ambos histogramas son suaves y encajan con el análisis anterior. El histograma de beneficios es el esperado, con un máximo en torno al 2% y un descenso pronunciado para valores superiores al 3%. Nos da una idea de lo difícil y poco probable que es encontrar una oportunidad que pueda ofrecer un alto porcentaje de beneficio.

En el caso del histograma de ETH invertido, destaca la escasez de ataques con grandes cantidades de ETH implicadas. Este hecho, unido al porcentaje de beneficio medio nos ayuda a entender cómo funcionan los beneficios de estos ataques.

Conclusión

Los ataques sandwich siguen existiendo hoy en día, pero han disminuido drásticamente desde su apogeo a mediados de 2021. Esta investigación ha tratado de arrojar luz sobre el estado pasado y presente de este ataque para ayudar a otros investigadores a comprender mejor su naturaleza.

Más artículos de la serie Blockchain de Ethereum

Este artículo forma parte de una serie de articulos sobre Blockchain de Ethereum

  1. Procesamos 800 millones de transacciones en la Blockchain de Ethereum. Te explicamos cómo
  2. Monitorizando atacantes en la blockchain de Ethereum: Ataques sandwich
  3. Si haces trading en la blockchain de Ethereum, perderás tu dinero. Te explicamos por qué