1.45 Millones de USD robados a uno de los MEV Bots más famosos en la Web3 #0xBad #Ethereum
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.
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.
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.
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. “”
“”” 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. “””
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.
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las “Proof-of-work”: Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat “fuera de juego”
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- ZIION: Una distribución Linux para auditar SmartContracts (& BlockChain)
- Dominios Web3 en Etherenum Name Service y la trazabilizad de las transacciones Blockchain
- BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
- Jumping level up (from) web2 (to) web3: Vulnerabilities & SCAMs – SmartContracts
- 20 millones (Euros) en Tokens de Optimism perdidos por no saber cómo funcionan los Wallets Multifirma
- BlockChain & SmartContracts: Cómo crear una DApp de la Web3 con Python (y Flask)
- 570M de USD robados en Tokens BNBs de la Binance Smart Chain (BSC)
- Tokenomics 101: Una explicación con gráficos
- 1.45 Millones de USD robados a uno de los MEV Bots más famosos en la Web3
Powered by WPeMatico