sábado, octubre 22, 2022

1.45 Millones de USD robados a uno de los MEV Bots más famosos en la Web3 #0xBad #Ethereum

En lo que se refiere a SmartContracts si uno es vulnerable y se puede sacar beneficios de él entonces eventualmente será vulnerado; y es que 0xbad uno de los MEV bots más famosos de la comunidad de Ethereum perdió el pasado 27 de Septiembre 1100 WETH’s (Wrapped Ethereum) equivalente a 1.45 millones de dólares americanos a causa de un exploit en su contrato que permitía ejecutar código de manera arbitraria.

Figura 1: 1.45 Millones de USD robados a uno de los MEV Bots más famosos en la Web3

Para explicar qué es lo que ha pasado, antes hay que entender bien algunos conceptos y cómo funcionan estos MEV bots. Vamos a por la explicación, y que nos sirva para aprender.

MEV bots

Los MEV bots o “Miner Extractable Value / Maximal Extractable Value” son bots que a través del empleo de información “privilegiada” pueden hacer uso de estrategias de arbitraje, front running y fallos para poder sacar un rédito extra de minar bloques. La información privilegiada de la que disponen este tipo de bots son todas aquellas transacciones que están en la mempool esperando a ser recogidas por algún minero para que éste la incluya en uno de sus bloques (si es que lo llega a hacer alguno).

Figura 2: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación"
de Yaiza Rubio y Félix Brezo

La mempool es un limbo en el que las transacciones están a la espera de ser procesadas, normalmente si el incentivo aportado (precio del Gas) al minero es acorde al del mercado estas no suelen tardar más de 6 minutos en procesarse (en Ethereum, en otras Blockchains puede variar), pero mientras estas no se hayan añadido a la cadena de bloques saber esta información es casi como saber el futuro. El funcionamiento de los incentivos y las colas de mempool en las cadenas está bien explicado en el libro de "La tecnología Blockchain y su investigación".

Frontrunning

El Front Running es un concepto que lleva mucho tiempo en Wall Street y que también tiene cabida en el mundo crypto; no es más que el uso de información privilegiada para especular con un activo, en nuestro caso un ejemplo claro sería aquel en el cual una transacción enviada a la Blockchain hace que un activo suba de precio x2, el minero lo que haría es comprar ese activo y después justo añadir la transacción que hace que el precio suba.

Los MEV bots suelen estar bastante mal considerados en la comunidad precisamente por usar este tipo de estrategias y similares en las que con diferentes algoritmos y la información de la mempool tratan de sacar beneficio de cualquier manera como con el ejemplo anterior. Cabe destacar que las dinámicas que se acaban generando son dañinas para el usuario normal y corriente.

Antes de la actualización de Ethereum 2.0 que supuso el paso del uso de PoW (Proof of Work) a PoS (Proof of Stake) solo aquellos nodos mineros notables (que tienen poder computacional para validar) podían usar este tipo de bots ya que una pieza clave para que este sistema funcione es el de poder coger una transacción de la mempool e incluirla en el mismo bloque junto con la del bot, de lo contrario te arriesgas a que otra persona lleve a cabo la estrategia en un nuevo bloque antes de que tu envíes la tuya.

Figura 3: Diferencia entre Wallet y Smart Contract Account

Pero ahora con la actualización del PoS se ha “democratizado” (cosa que no ha gustado en la comunidad) el uso de este tipo de bots, ya que no hace falta de un gran poder computacional para validar bloques sino simplemente un nodo validador. Este tipo de bots suelen usar SmartContract Accounts o sea SmartContracts para realizar las interacciones. Se hace de esta manera porque en una misma función, el contrato, puede realizar varias acciones en una misma transacción. Por ejemplo, si con un wallet normal queremos enviar Ether a varias wallets lo tendrémos que hacer de transacción en transacción.

Sin embargo los SmartContracts nos permiten realizar distintas acciones en una misma transacción, cosa que es muy útil sobre todo en este caso. Este tipo de cuentas se espera que sean el futuro de Ethereum ya que en palabras de su propio creador en ellas residen muchas posibles soluciones a problemas que dificultan la adopción masiva de la blockchain. (EIP-4337 para más detalles).

Flashbots

Para que el sistema que usan los MEV bots funcione es necesario que estos puedan introducir de manera inmediata transacciones en la cadena de Blockchain, sin tener que pasar por la mempool ya que de otra manera otro MEV bot podría adelantarse a su estrategia. Además en muchas de sus estrategias necesitan poder añadir y ordenar de manera específica transacciones que están en la mempool a espera de ser procesadas; por ello este tipo de bots usan una tecnología llamada Flashbots.

Figura 4: “MEV bots making money from the mempool” 
  
Flashbots son una capa adicional que se añade a los clientes (no a todos) de minería/validación de Ethereum (u otros entornos) para que se les pueda enviar transacciones “privadas” a estos clientes. Con transacciones “privadas” me refiero a a transacciones que nunca pasan por la mempool por lo que nadie sabe de la existencia de la transacción se va a incluir en un bloque hasta que esta se ha incluido; esto es muy importante porque si fueran a la mempool cualquiera podría replicar la estrategia del MEV bot pagando un poco más de gas para que se incluya antes.

Ataque a 0xbad

Durante los últimos 85 días el bot 0xbad ha estado en activo sacando una gran rentabilidad a su algoritmo de búsqueda de oportunidades. Pero estas rentabilidades las ha sacado a costa de ejecutar cualquier tipo de acción que le reportara un beneficio aunque este fuera mínimo, tanto que ha sido esta misma característica la que le ha hecho perder 1.45 millones de USD.

El atacante creó un honeypot con el que logró que el bot ejecutase una transacción con código que delegaba a un SmartContract creado por el atacante en el que esté a su vez llamaba a la función “approve” del contrato de WETH con su address, inmediatamente después transfirió los WETHs desde la cuenta de 0xbad a la suya . Esta es la transacción en la que se ejecuta el “approve” y esta otra en la que se roban los fondos.


Esto fue posible por que el bot para, poder sacar esa rentabilidad “extra” autorizaba a entidades sin verificación previa,  hizo el que gastaran y aprobarán sus tokens por él. De manera normal usando las pools de liquidez de UniSwap no hubiera pasado nada, pero es que el honeypot había sido montado en dxdy que permite código personalizable en sus pools de liquidez.

Después del ataque los creadores de 0xbad enviaron un mensaje a través de la cadena de Blockchain que decía:

“”” Congratulations on this, we got careless and you sure managed to get us good, that was not easy to see. We would like this cooperate with you on resolving this matter. Return the funds to XXX before September 28 at 23:59 GMT and we will consider this a whitehat, we will give you 20% of the retrieved amount as a bug bounty, payable as you see fit. Should the funds not be returned by then, we will have no choice but to pursue accordingly with everything in our power with the appropriate authorities to retrieve our funds. “”

A lo que posteriormente contestó el atacante:

“”” What about normal people who you have mev'ed and literally fucked them? Will you return them? Return the funds to all people before September 28 at 23:59 GMT and we will consider this a whitehat, we will give you 1% of the retrieved amount as a good heart sign, payable as you see fit. Should the funds not be returned by then, we will have no choice but to pursue accordingly with everything in our power with the appropriate authorities to retrieve our funds. “””

Como se puede apreciar no hay muy buena relación entre la comunidad y los bots MEV y es que muchas veces estos hacen perder posiciones importantes en las pools de liquidez a la gente normal o incluso subir el precio de un activo cuando ven una transacción a un DEX que no tiene fijado precio límite mínimo del swapping.

Conclusiones finales

La tecnología creada sobre Blockchain y el mundo del Tokenomics es aún un ecosistema joven y aún queda mucho por explorar y descubrir, pero lo que es seguro es que aun en sus etapas “iniciales” es importante siempre cuidar la seguridad de los sistemas o pueden llegar a ocurrir problemas como éste. 

Más artículos de Web3, Blockchain & SmartContracts
Saludos,

AutorChema Garabito. Desarrollador Full-Stack. Ideas Locas Telefónica CDO.

No hay comentarios:

Publicar un comentario