Lo más aterrador de un ataque sándwich es que el atacante calcula claramente el monto de la ganancia en el primer paso del ataque.

El arbitraje sándwich es un método de arbitraje controvertido, también conocido como ataque sándwich, que utiliza el front-running para atacar las transacciones de arbitraje de la víctima. En la sesión de intercambio de tecnología de todos los miércoles 9 de noviembre de 2022, @daimajia, un codificador de Zhen Fund, aportó divulgación científica sobre MEV, préstamos flash y arbitraje sándwich, y analizó el arbitraje sándwich basado en el incidente del ataque DODO USDT/DAI como un caso específico., mucho contenido y mucha información útil.

1. Divulgación científica sobre MEV, préstamos rápidos y arbitraje sándwich

1. ¿Qué es MEV?

MEV (Valor extraíble minero) se refiere al valor extraíble máximo. Antes también se le llamaba valor extraíble minero. Los mineros pueden empaquetar transacciones y generar bloques en Ethereum, y dentro de los bloques que generan, los mineros pueden incluir, excluir, ordenar transacciones, etc. Además de las tarifas de transacción y las recompensas en bloque, los mineros también pueden extraer más valor a través de las operaciones anteriores, y este valor es MEV.

La última definición de MEV en blockchain PoS es:

El valor total que un validador puede extraer en un bloque (o serie de bloques) dado el estado del entorno y todas las acciones disponibles.

Los validadores pueden realizar operaciones como reordenar, revisar e insertar transacciones. También pueden incorporar estrategias más específicas, como cambiar las marcas de tiempo de los bloques, manipular la "aleatoriedad", ejecutar validadores adicionales y más.

En términos generales, un validador no puede cambiar el estado de su entorno, incluidas las reglas de la cadena de bloques, el código de contrato inteligente en la cadena de bloques, los conjuntos de transacciones en su grupo de memoria, etc.

2. Préstamo rápido

El préstamo flash es una herramienta de préstamo sin garantía que nació debido a las características de atomicidad y reversión de las transacciones blockchain. Los usuarios deben completar el préstamo y el pago dentro de una transacción atómica y no requieren ninguna garantía. Permita que los usuarios tengan la posibilidad de utilizar grandes cantidades de fondos a un costo casi nulo.

Los préstamos flash deben reembolsarse en la misma transacción. En lo que respecta a los préstamos rápidos, se puede considerar que el "proceso de transacción" consta de tres partes: aceptar el préstamo, hacer cosas con el préstamo y pagar el préstamo, pero todo esto sucede en un instante.

La transacción se envía a la red, prestándole temporalmente estos fondos, y usted puede hacer algo con los fondos (la segunda parte de la transacción), y siempre que los fondos puedan devolverse a la tercera parte a tiempo, puede hacer lo que quieras. Si los fondos no regresan a tiempo, la red blockchain rechaza la transacción, lo que significa que el prestamista recupera los fondos. De hecho, en el concepto blockchain, siempre tienen fondos.

Esto explica por qué los prestamistas no exigen que usted proporcione garantías; el reembolso de los fondos se aplica mediante un código de contrato.

3. Arbitraje tipo sándwich

El arbitraje sándwich, también conocido como ataque sándwich, es un método de ataque que utiliza front-running para atacar las transacciones de la víctima con fines de arbitraje.

El arbitraje sándwich lo inician robots de arbitraje. Cuando el robot de arbitraje detecta que una transacción puede provocar una caída de precios de los activos digitales, el atacante pagará tarifas de gas más altas para competir por los derechos de empaquetado de un bloque. Cuando tiene éxito, el robot de arbitraje compra inmediatamente una cierta cantidad de activos digitales, lo que obliga a subir el precio del activo, y luego vende los activos digitales recién comprados una vez completada la transacción de ataque para lograr un arbitraje sin costo.

El arbitraje sándwich no es un método de arbitraje pacífico; este método de arbitraje debe incluir un ataque a un determinado usuario víctima y hacer que la víctima pierda activos.

En las transacciones de Ethereum, para aprovechar el derecho a priorizar el empaquetado, los atacantes deben pagar tarifas de gas más altas, porque ETH adopta el método de oferta de tarifa de gas óptimo, es decir, el usuario que paga la tarifa de gas más alta puede obtener la prioridad. paquete. . Para tener la primera oportunidad de empaquetar bloques, los atacantes crearán una competencia feroz en las tarifas del gas, pero dado que las tarifas del gas de Ethereum se pagan por cada transacción (independientemente del éxito o el fracaso). Por lo tanto, cuando los atacantes participan en una competencia despiadada, los intereses de los usuarios comunes deben verse perjudicados.

2. Análisis paso a paso del incidente de ataque DODO USDT/DAI

El 3 de noviembre de 2022, hora de Beijing, la plataforma de comercio descentralizada Ethereum DODO fue atacada. El atacante utilizó las vulnerabilidades del contrato para cambiar tokens con frecuencia y completó un ataque sándwich. Sin embargo, al estudiar los datos de la cadena, se descubrirá que toda la La relación entre ganancias y pérdidas del proceso no fue tan exagerada, sino más bien impotente. El atacante utilizó un préstamo rápido de más de 3,5 millones de USDT en una operación y solo obtuvo una ganancia de 26,4 USDT. Es vergonzoso. Todo el proceso es como sigue:

1. El primer paso del ataque sándwich: la primera transacción del atacante FrontRun

La transacción se inició desde la dirección 0xf480, interactuó con un contrato (contrato de atacante 1) marcado como MEVbot por Etherscan, transfirió $12,840 al contrato (es decir, su propia cuenta) y luego lo transfirió al siguiente contrato (contrato de atacante 1). ).Contrato 2).

2. Paso 2: Utilice un préstamo rápido para intercambiar Tether por DAI

El atacante hizo un préstamo rápido, tomó prestados 3,55 millones de dólares estadounidenses de Balancer, transfirió el dinero a la dirección, transfirió Tether al grupo USDT del token de compromiso DODO y luego se lo transfirió al atacante. Se devuelve una suma de dinero, que es un swap (es decir, un intercambio de tokens).

En este swap, el atacante transfirió USD 3,55 millones en USDT y transfirió USD 3,53 millones en DAI, cambiando así el dinero en la cuenta del atacante de Tether a DAI.

3. Cambie los tokens con frecuencia

1) Utilice Psm para intercambiar DAI por USDC

A continuación, el atacante realizó otra transferencia, transfiriendo DAI a un contrato público DssPsm. Psm es un contrato que ha completado el canje. Los usuarios pueden transferir DAI a Psm y cambiarlo por USDC. Psm destruirá el DAI transferido por el usuario.

攻击者向Psm打了3538543个DAI,Psm合约将这些钱打到了零地址(即把这些DAI都烧掉了),然后给攻击者重新转了3538543个USDC。

2) USDC se transfiere a USDT

Luego, el atacante utilizó el USDC intercambiado para realizar un intercambio en el grupo USDT/USDC de DODO: el contrato del atacante le dio 3,53 millones de USDC a DODO, y DODO le dio 3,53 millones de USDT al contrato del atacante.

4. Paso 3: Extraer la comisión BackRun para completar el circuito cerrado

Luego, el atacante transfirió otros 70 dólares de DODO a una billetera multifirma (la dirección de DODOteam), en este paso, DODO cobró una comisión durante la transacción. Finalmente, el atacante devolvió todo el USDT (3551259) y el préstamo rápido finalizó.

3. Resumen

En total, el atacante intercambió monedas estables dos veces en los dos pools de DODO: 3551259 USDT - 3538543 DAI (este paso produjo un gran deslizamiento) - 3538543 USDC - 3.538.419 USDT.

Se puede encontrar que el USDT que finalmente se intercambió no fue suficiente para pagar el dinero prestado por el préstamo flash. La diferencia de precio fue 3551259-3538149 = 12840. En ese momento, los 12840 dólares estadounidenses transferidos por el atacante a sí mismo en el El primer paso fue útil.

En este punto tendremos preguntas, ¿no perdió el atacante los $12,840 que adelantó? ¿Qué se pretende lograr con esto?

De hecho, la operación del atacante (al intercambiar USDT por DAI) desequilibró aún más el pool DODO. Usó este pool desequilibrado para intercambiar por más USDT (proceso de arbitraje) y utilizó un proceso inverso para revertir la cosecha. Le costó 26,4 dólares estadounidenses. (después de descontar las comisiones de Gas y DODO).

Por lo tanto, vemos que en realidad hay un sesgo de superviviente en este tipo de ataques. En realidad, hay muchos atacantes que encuentran esas oportunidades en la cadena y llevan a cabo dichos ataques. La mayoría de nosotros sólo podemos ver casos de ataques exitosos, y más a menudo realizan ataques tipo sándwich. ataques. Los robots atacantes serán derrotados y muchos robots serán arbitrados por otros robots. Es por eso que MEV es muy complicado ahora.