Seguridad

Cómo evitar los bots de BlockChain que se llevan tus beneficios: Protección MEV

En el mundo de DeFi (Finanzas Descentralizadas), existe la preocupación constante de ser estafado a la hora de realizar una transacción de gran valor. Esto se debe a que tu transacción viaja a una “memory pool” pública momentos antes de ser incluida en la cadena de bloques.

Figura 1: Cómo evitar los bots de BlockChain que
se llevan tus beneficios: Protección MEV

Esta pool está siendo monitoreada 24/7 por bots que tratarán de enviar transacciones con más y menos prioridad, en fracciones de segundo, para alterar el orden en el que se incluyen en la cadena con el objetivo de obtener un beneficio económico. En el pasado os contamos como uno de estos MEV Bots, el famoso 0xBad sufrió un robo de 1,45 Millones de dórales en Ehtereum.

Aquel fue uno de los ataques de Hacking de SmartContracts que podemos tener en la Web3, y por lo que merece la pena que os empapéis el libro de Hacking Web3: Challenge Accepted! que han publicado nuestros compañeros Chema GarabitoPablo GonzálezYaiza RubioLeif FerreiraChema Alonso en 0xWord.

¿Qué es MEV y qué tipos existen?


MEV (Máximo Valor Extraíble) se refiere al máximo valor económico generado a través de la alteración de las transacciones a la hora de incluirlas en un nuevo bloque. Estas oportunidades se dan entre la creación de un bloque y el siguiente y son aprovechadas por los “Searchers”

Para alterar el orden de las transacciones se primero se monitorea la mempool con un script como este:

```
import { ethers } from "ethers";

async function main() {
  const provider = new ethers.providers.WebSocketProvider(
    `wss://ethereum.publicnode.com`
  );

  provider.on("pending", async (tx) => {
    console.log(tx);
    const txInfo = await provider.getTransaction(tx);
    console.log(txInfo)    
  });
}

main(); 
```

Obteniendo las transacciones que están pendientes de incluirse en la cadena de bloques.

Figura 4: Captura de transacción en la mempool

Estos bots simularán en un entorno de prueba estas transacciones y si podrán obtener beneficios realizándolas desde su propia dirección. Para ello realizan desde copiar el “data” y subir la transacción con un mayor “gasPrice” para ser incluidos antes en la cadena de bloques, hasta operaciones mucho más complejas como los flashloans, dónde se toman préstamos de cantidades enormes para corregir el mercado y obtener cantidades generalmente pequeñas.

Según si la transacción del bot se coloca antes (frontrunning) o después (backrunning) de la transacción víctima y la intención de esta, conocemos tres tipos de ataques:

1.- Arbitraje: este es un backrun que se coloca para la corrección de mercados descentralizados. Aquí vemos como un bot se aprovecha de las diferencias en dos pools distintas de liquidez para obtener un beneficio mientras iguala los precios en los mercados. 
 
2.- Sandwich: Este se compone de un frontrun más un backrun. Suelen aprovecharse de una oportunidad que ha encontrado otro usuario o del slippage (deslizamiento) que permitan al intercambiar en un DEX. Estos son malos para la red ya que empeoran la experiencia de usuario.

Figura 6: Esquema ataque sandwich

En el siguiente gráfico observamos como una persona quería comprar el token BIDEN con su WETH y no habrá fijado un slipagge muy cerrado por lo que un bot ha comprado el token antes que él, aumentando su precio en el mercado. Más tarde él ha comprado el token por ese precio más elevado y subiéndolo aún más. Finalmente, el bot ha devuelto la cantidad comprada cuando el precio estaba más alto obteniendo un beneficio.
 Figura 7: Ataque sandwich a dirección que cambiaba
WETH por BIDEN en Uniswapv2

Además del intercambio injusto que ha recibido nuestra víctima, al aumentar el número de transacciones se aumenta el precio del gas por transacción y se congestiona la red por lo que es perjudicial para el ecosistema.
3.- Liquidación: Backrun parecido al arbitraje pero liquidando posiciones en préstamos descentralizados. Son los menos comunes. Estos se dan cuando el valor de un préstamo que se ha dejado como fianza, baja por debajo del umbral establecido y el contrato automáticamente lo pone a la venta para que cualquiera pueda comprar el token a un precio un poco por encima del que está en el mercado, para que el contrato no pierda liquidez.
Cuándo y Cómo Protegernos

La idea es evitar todas los posibles frontruns que nos puedan afectar, sean de sandwich o no. Por lo tanto, los momentos adecuados para protegernos del MEV serían:

  • Al intercambiar en un DEX.
  • Si intentamos un white hack del cual vayamos a extraer valor.
  • Cuando vayamos a retirar fondos de un contrato que no tenga protección de permisión como un owner o address concreta.
  • Transacciones de alto valor

La mejor protección ante cada uno de ellos es la de utilizar Protect RPC Endpoints. Esta es una de las medidas de defensa más directas y eficaces. Los Protect RPC Endpoints ocultan nuestras transacciones del mempool público, reduciendo así la visibilidad y el riesgo de ser objetivo de los bots de MEV.

Figura 6: Logo de la empresa Flashbots

Hoy en día, la empresa líder en el mercado es Flashbots, que ofrece este tipo de nodos privados en los que te prometen que tus transacciones no van a ser frontruneadas.
Por contraparte, utilizar estos servicios puede aumentar el coste de tu transacción dependiendo de la tarifa escogida y, por lo general, tardará más en incluirse en la cadena de BlockChain, ya que habrá que esperar a los nodos de flashbots minen el próximo bloque. Aquí tenéis un vídeo tutorial de como implementar un Protect RPC Endpoint en la wallet de MetaMask.

Figura 7: MEV Protection. How to avoid front-running and sandwiching bots.

Otra buena práctica que se recomienda a la hora de realizar intercambios descentralizados es especificar y limitar el slippage. Para ello se recomienda interactuar con DEX seguros y actuales que incorporan mayor personalización y seguridad on-chain.

Figura 8: Slippage intercambiando en Uniswap

Si quieres recibir el valor esperado en tus transacciones en la cadena de BlockChain y no encontrarte con sustos, a veces, es mejor utilizar un nodo privado al que enviar tus transacciones a utilizar los públicos dónde podrás ser víctima de este tipo de bots.

Para completar tu aprendizaje, este libro es un buen complemento para tu entrada en el mundo Web3, pero nuestra recomendación es que te leas también el libro dedicado a “Bitcoin: La tecnología Blockchain y su investigación” de Yaiza Rubio y Félix Brezo que profundiza en las arquitecturas utilizadas en BlockChain que pueden suponer interesantes fuentes de información para ciber-investigadoresRecuerda que si quieres aprender de estas tecnologías, tienes Bit2Me Academy, que es una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos.

Más artículos de Web3, Blockchain & SmartContracts
AutorLuis García Adán (Intership en el equipo de IdeasLocas)

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.