Euler Finance sufrió un ataque de flash loan, con pérdidas cercanas a 200 millones de dólares.
El 13 de marzo de 2023, el proyecto Euler Finance sufrió un ataque de flash loan debido a una vulnerabilidad en el contrato, lo que resultó en pérdidas de aproximadamente 197 millones de dólares. El atacante aprovechó la falta de verificación de liquidez en la función donateToReserves del Etoken del proyecto, obteniendo enormes beneficios a través de múltiples operaciones con diferentes criptomonedas.
Análisis del proceso de ataque
El atacante primero pidió prestados 30 millones de DAI a través de un Flash Loans de alguna plataforma de préstamos y desplegó dos contratos: el contrato de préstamo y el contrato de liquidación.
Luego se apostaron 20 millones de DAI en el contrato del Euler Protocol, obteniendo 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10 veces de Euler Protocol, se prestan 195.6 millones de eDAI y 200 millones de dDAI.
Utilizar los 10 millones de DAI restantes para pagar parte de la deuda y destruir la cantidad correspondiente de dDAI, luego volver a pedir prestada la misma cantidad de eDAI y dDAI.
Donar 100 millones de eDAI a través de la función donateToReserves (10 veces el monto para reembolsos) y ejecutar inmediatamente la operación de liquidación para obtener 310 millones de dDAI y 250 millones de eDAI.
Finalmente, se extrajeron 38.9 millones de DAI, se devolvieron 30 millones de DAI del Flash Loan, y la ganancia neta fue de aproximadamente 8.87 millones de DAI.
Causa de la vulnerabilidad
La clave para el éxito del ataque radica en que la función donateToReserves de Euler Finance carece de la verificación necesaria de liquidez. A diferencia de otras funciones como mint, donateToReserves no llama a la función checkLiquidity para verificar el estado de los fondos del usuario. Esto permite al atacante manipular su cuenta para entrar en un estado que puede ser liquidado y luego ejecutar la liquidación para obtener ganancias.
En condiciones normales, la función checkLiquidity llamará al módulo RiskManager para asegurar que la cantidad de Etoken del usuario sea mayor que la cantidad de Dtoken, manteniendo así un estado saludable en la cuenta. Sin embargo, la función donateToReserves omite este paso crucial, brindando una oportunidad para que los atacantes lo aprovechen.
Consejos de seguridad
Este evento destaca la importancia de la auditoría de seguridad de los contratos inteligentes. Para los proyectos de préstamos, es especialmente necesario prestar atención a los siguientes aspectos:
Integridad del mecanismo de reembolso de fondos
Integralidad de la detección de liquidez
La rigurosidad del proceso de liquidación de deudas
El equipo del proyecto debe realizar una auditoría de seguridad completa y profunda antes del despliegue del contrato, para garantizar la seguridad y estabilidad de las diversas funciones. Al mismo tiempo, la supervisión continua de la seguridad y la reparación oportuna de vulnerabilidades también son medidas necesarias para garantizar el funcionamiento seguro a largo plazo del proyecto.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
16 me gusta
Recompensa
16
7
Republicar
Compartir
Comentar
0/400
Ser_Liquidated
· 07-14 00:49
Otra vez tenemos que sacrificar un proyecto, gracias.
Ver originalesResponder0
mev_me_maybe
· 07-14 00:03
Otra vez, otra vez, otra vez fue víctima de dumping.
Ver originalesResponder0
0xSoulless
· 07-13 14:42
tontos año tras año tomar a la gente por tonta, después de tomar a la gente por tonta, siguen tomando a la gente por tonta.
Ver originalesResponder0
RugpullSurvivor
· 07-11 02:50
¡Otra olla grande! ¿No tienes un poco de remordimiento en tu corazón?
Ver originalesResponder0
GasFeeCrier
· 07-11 02:46
Esperando a que el equipo detrás del proyecto desaparezca y haga un Rug Pull
Ver originalesResponder0
GasFeeCrybaby
· 07-11 02:39
Otra vez robado, tsk tsk
Ver originalesResponder0
GasWaster
· 07-11 02:35
rip... otra lección cara en la optimización de gas smh
Euler Finance sufrió un ataque de flash loan de 200 millones de dólares, siendo la vulnerabilidad del contrato la causa principal.
Euler Finance sufrió un ataque de flash loan, con pérdidas cercanas a 200 millones de dólares.
El 13 de marzo de 2023, el proyecto Euler Finance sufrió un ataque de flash loan debido a una vulnerabilidad en el contrato, lo que resultó en pérdidas de aproximadamente 197 millones de dólares. El atacante aprovechó la falta de verificación de liquidez en la función donateToReserves del Etoken del proyecto, obteniendo enormes beneficios a través de múltiples operaciones con diferentes criptomonedas.
Análisis del proceso de ataque
El atacante primero pidió prestados 30 millones de DAI a través de un Flash Loans de alguna plataforma de préstamos y desplegó dos contratos: el contrato de préstamo y el contrato de liquidación.
Luego se apostaron 20 millones de DAI en el contrato del Euler Protocol, obteniendo 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10 veces de Euler Protocol, se prestan 195.6 millones de eDAI y 200 millones de dDAI.
Utilizar los 10 millones de DAI restantes para pagar parte de la deuda y destruir la cantidad correspondiente de dDAI, luego volver a pedir prestada la misma cantidad de eDAI y dDAI.
Donar 100 millones de eDAI a través de la función donateToReserves (10 veces el monto para reembolsos) y ejecutar inmediatamente la operación de liquidación para obtener 310 millones de dDAI y 250 millones de eDAI.
Finalmente, se extrajeron 38.9 millones de DAI, se devolvieron 30 millones de DAI del Flash Loan, y la ganancia neta fue de aproximadamente 8.87 millones de DAI.
Causa de la vulnerabilidad
La clave para el éxito del ataque radica en que la función donateToReserves de Euler Finance carece de la verificación necesaria de liquidez. A diferencia de otras funciones como mint, donateToReserves no llama a la función checkLiquidity para verificar el estado de los fondos del usuario. Esto permite al atacante manipular su cuenta para entrar en un estado que puede ser liquidado y luego ejecutar la liquidación para obtener ganancias.
En condiciones normales, la función checkLiquidity llamará al módulo RiskManager para asegurar que la cantidad de Etoken del usuario sea mayor que la cantidad de Dtoken, manteniendo así un estado saludable en la cuenta. Sin embargo, la función donateToReserves omite este paso crucial, brindando una oportunidad para que los atacantes lo aprovechen.
Consejos de seguridad
Este evento destaca la importancia de la auditoría de seguridad de los contratos inteligentes. Para los proyectos de préstamos, es especialmente necesario prestar atención a los siguientes aspectos:
El equipo del proyecto debe realizar una auditoría de seguridad completa y profunda antes del despliegue del contrato, para garantizar la seguridad y estabilidad de las diversas funciones. Al mismo tiempo, la supervisión continua de la seguridad y la reparación oportuna de vulnerabilidades también son medidas necesarias para garantizar el funcionamiento seguro a largo plazo del proyecto.