Euler Finance sufrió un ataque de flash loan, con pérdidas de casi 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 inteligente, lo que resultó en pérdidas de aproximadamente 197 millones de dólares. Los atacantes aprovecharon la falta de verificación de liquidez en la función donateToReserves del contrato, obteniendo enormes beneficios a través de múltiples operaciones.
Análisis del proceso de ataque
El atacante primero tomó prestados 30 millones de DAI de una plataforma de préstamos mediante un préstamo relámpago y desplegó dos contratos: un contrato de préstamo y un contrato de liquidación.
Poner en garantía 20 millones de DAI prestados en el contrato del Protocolo Euler, obteniendo aproximadamente 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10 veces del Protocolo Euler, se prestaron 195.6 millones de eDAI y 200 millones de dDAI.
Usar los 10 millones restantes de DAI 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.
Llama a la función donateToReserves para donar 100 millones de eDAI, luego liquida a través de la función liquidate y obtén 310 millones de dDAI y 250 millones de eDAI.
Finalmente se extraen 38.9 millones de DAI, se devuelven 30 millones de DAI del Flash Loans, ganando netamente alrededor de 8.87 millones de DAI.
Causas de vulnerabilidad
La principal razón por la que el ataque tuvo éxito es que la función donateToReserves carece de la verificación de liquidez necesaria. A diferencia de otras funciones clave (como mint), donateToReserves no llama a la función checkLiquidity para validar el estado de liquidez del usuario. Esto permite que el atacante manipule su propia cuenta para entrar en un estado que puede ser liquidado y obtener ganancias de ello.
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, a fin de mantener el estado saludable de la cuenta. Sin embargo, la función donateToReserves omite este paso crucial, creando una oportunidad para el ataque.
Lecciones y Sugerencias
Este incidente destaca una vez más la importancia de la auditoría de seguridad de 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
Seguridad del proceso de liquidación de deudas
Antes de que el proyecto se lance en el contrato, se debe realizar una auditoría de seguridad completa y rigurosa para garantizar la seguridad y estabilidad del contrato. Al mismo tiempo, el monitoreo de seguridad continuo y la reparación oportuna de vulnerabilidades también son indispensables.
Con el rápido desarrollo de las finanzas descentralizadas, eventos de seguridad similares pueden seguir ocurriendo. Los desarrolladores y los proyectos deben mantenerse alerta, aprender y mejorar continuamente para construir un ecosistema blockchain más seguro y confiable.
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.
5 me gusta
Recompensa
5
6
Republicar
Compartir
Comentar
0/400
ChainComedian
· 08-12 11:55
Otro proyecto alcista ha fracasado.
Ver originalesResponder0
OfflineNewbie
· 08-12 11:53
tontos otra vez tomados por tontos~
Ver originalesResponder0
SmartMoneyWallet
· 08-12 11:46
¿197 millones de dólares? Esta técnica es demasiado baja, aunque la cantidad de fondos no es pequeña.
Ver originalesResponder0
SolidityStruggler
· 08-12 11:46
Una vez más, el chivo expiatorio de los contratos inteligentes
Euler Finance sufrió un ataque de flash loan de 200 millones de dólares; la vulnerabilidad en los contratos inteligentes fue la causa.
Euler Finance sufrió un ataque de flash loan, con pérdidas de casi 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 inteligente, lo que resultó en pérdidas de aproximadamente 197 millones de dólares. Los atacantes aprovecharon la falta de verificación de liquidez en la función donateToReserves del contrato, obteniendo enormes beneficios a través de múltiples operaciones.
Análisis del proceso de ataque
El atacante primero tomó prestados 30 millones de DAI de una plataforma de préstamos mediante un préstamo relámpago y desplegó dos contratos: un contrato de préstamo y un contrato de liquidación.
Poner en garantía 20 millones de DAI prestados en el contrato del Protocolo Euler, obteniendo aproximadamente 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10 veces del Protocolo Euler, se prestaron 195.6 millones de eDAI y 200 millones de dDAI.
Usar los 10 millones restantes de DAI 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.
Llama a la función donateToReserves para donar 100 millones de eDAI, luego liquida a través de la función liquidate y obtén 310 millones de dDAI y 250 millones de eDAI.
Finalmente se extraen 38.9 millones de DAI, se devuelven 30 millones de DAI del Flash Loans, ganando netamente alrededor de 8.87 millones de DAI.
Causas de vulnerabilidad
La principal razón por la que el ataque tuvo éxito es que la función donateToReserves carece de la verificación de liquidez necesaria. A diferencia de otras funciones clave (como mint), donateToReserves no llama a la función checkLiquidity para validar el estado de liquidez del usuario. Esto permite que el atacante manipule su propia cuenta para entrar en un estado que puede ser liquidado y obtener ganancias de ello.
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, a fin de mantener el estado saludable de la cuenta. Sin embargo, la función donateToReserves omite este paso crucial, creando una oportunidad para el ataque.
Lecciones y Sugerencias
Este incidente destaca una vez más la importancia de la auditoría de seguridad de contratos inteligentes. Para los proyectos de préstamos, es especialmente necesario prestar atención a los siguientes aspectos:
Antes de que el proyecto se lance en el contrato, se debe realizar una auditoría de seguridad completa y rigurosa para garantizar la seguridad y estabilidad del contrato. Al mismo tiempo, el monitoreo de seguridad continuo y la reparación oportuna de vulnerabilidades también son indispensables.
Con el rápido desarrollo de las finanzas descentralizadas, eventos de seguridad similares pueden seguir ocurriendo. Los desarrolladores y los proyectos deben mantenerse alerta, aprender y mejorar continuamente para construir un ecosistema blockchain más seguro y confiable.