Euler Finance sufrió un ataque de flash loan, con pérdidas cercanas a 200 millones de dólares
El 13 de marzo, el proyecto Euler Finance sufrió un ataque de flash loan debido a una vulnerabilidad en su contrato inteligente, lo que resultó en una pérdida de aproximadamente 197 millones de dólares. Este ataque involucró 6 tipos de tokens y es uno de los incidentes de seguridad más grandes en el ámbito DeFi en tiempos recientes.
Análisis del proceso de ataque
El atacante primero obtiene un préstamo flash de 30 millones de DAI de una plataforma de préstamo, y luego despliega dos contratos: uno de préstamo y otro de liquidación. El proceso de ataque es aproximadamente el siguiente:
Apostar 20 millones de DAI en el Protocolo Euler para obtener 19.5 millones de eDAI.
Utilizar el protocolo Euler para pedir prestados 195.6 millones de eDAI y 200 millones de dDAI con un apalancamiento de 10x.
Utilizar los restantes 10 millones de DAI para pagar parte de la deuda, destruir el dDAI correspondiente.
Volver a prestar la misma cantidad de eDAI y dDAI.
Donar 100 millones de eDAI a través de la función donateToReserves y luego llamar a la función liquidate para realizar la liquidación, obteniendo 310 millones de dDAI y 250 millones de eDAI.
Finalmente se extrajeron 38.9 millones de DAI, se devolvieron 30 millones de Flash Loans, y la ganancia neta fue de aproximadamente 8.87 millones de DAI.
Causa de la vulnerabilidad
La clave de este ataque radica en que la función donateToReserves de Euler Finance carece de la verificación de liquidez necesaria. A diferencia de otras funciones como mint, donateToReserves no llama a la función checkLiquidity para verificar el estado de los activos del usuario. Esto permite que el atacante pueda colocar su cuenta en un estado susceptible de ser liquidado a través de esta función, lo que lleva a la implementación del ataque.
En condiciones normales, la función checkLiquidity llamaría al módulo RiskManager para asegurar que el eToken del usuario sea mayor que el dToken, con el fin de mantener la seguridad del sistema. Sin embargo, la función donateToReserves omite este paso importante, proporcionando una oportunidad para que los atacantes lo aprovechen.
Consejos de seguridad
Este incidente destaca nuevamente la importancia de la seguridad de los contratos en los proyectos DeFi. En los proyectos de préstamos, es especialmente necesario prestar atención a los siguientes puntos:
Asegúrate de que todas las funciones que involucren operaciones de fondos realicen suficientes verificaciones de liquidez.
Controlar estrictamente el apalancamiento de los préstamos de los usuarios para prevenir los riesgos sistémicos causados por un apalancamiento excesivo.
Implementar múltiples mecanismos de seguridad, como la función de pausa de emergencia, para hacer frente a eventos de seguridad imprevistos.
Realizar una auditoría completa del contrato, prestando especial atención a aspectos clave como el reembolso de fondos, la detección de liquidez y la liquidación de deudas.
Realizar evaluaciones de seguridad y pruebas de estrés periódicamente para detectar y corregir vulnerabilidades potenciales a tiempo.
Este incidente de ataque nos recuerda que en el mundo en rápida evolución de Web3, la seguridad siempre debe ser la principal preocupación. Los equipos de proyectos deberían invertir más recursos en la construcción de seguridad, y los usuarios también deben aumentar su conciencia sobre los riesgos y participar con precaución en diversos proyectos DeFi.
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.
15 me gusta
Recompensa
15
6
Compartir
Comentar
0/400
airdrop_whisperer
· hace10h
Otra empresa ser liquidado ¿quién será la siguiente?
Euler Finance sufrió un ataque de flash loan con pérdidas cercanas a 200 millones de dólares.
Euler Finance sufrió un ataque de flash loan, con pérdidas cercanas a 200 millones de dólares
El 13 de marzo, el proyecto Euler Finance sufrió un ataque de flash loan debido a una vulnerabilidad en su contrato inteligente, lo que resultó en una pérdida de aproximadamente 197 millones de dólares. Este ataque involucró 6 tipos de tokens y es uno de los incidentes de seguridad más grandes en el ámbito DeFi en tiempos recientes.
Análisis del proceso de ataque
El atacante primero obtiene un préstamo flash de 30 millones de DAI de una plataforma de préstamo, y luego despliega dos contratos: uno de préstamo y otro de liquidación. El proceso de ataque es aproximadamente el siguiente:
Apostar 20 millones de DAI en el Protocolo Euler para obtener 19.5 millones de eDAI.
Utilizar el protocolo Euler para pedir prestados 195.6 millones de eDAI y 200 millones de dDAI con un apalancamiento de 10x.
Utilizar los restantes 10 millones de DAI para pagar parte de la deuda, destruir el dDAI correspondiente.
Volver a prestar la misma cantidad de eDAI y dDAI.
Donar 100 millones de eDAI a través de la función donateToReserves y luego llamar a la función liquidate para realizar la liquidación, obteniendo 310 millones de dDAI y 250 millones de eDAI.
Finalmente se extrajeron 38.9 millones de DAI, se devolvieron 30 millones de Flash Loans, y la ganancia neta fue de aproximadamente 8.87 millones de DAI.
Causa de la vulnerabilidad
La clave de este ataque radica en que la función donateToReserves de Euler Finance carece de la verificación de liquidez necesaria. A diferencia de otras funciones como mint, donateToReserves no llama a la función checkLiquidity para verificar el estado de los activos del usuario. Esto permite que el atacante pueda colocar su cuenta en un estado susceptible de ser liquidado a través de esta función, lo que lleva a la implementación del ataque.
En condiciones normales, la función checkLiquidity llamaría al módulo RiskManager para asegurar que el eToken del usuario sea mayor que el dToken, con el fin de mantener la seguridad del sistema. Sin embargo, la función donateToReserves omite este paso importante, proporcionando una oportunidad para que los atacantes lo aprovechen.
Consejos de seguridad
Este incidente destaca nuevamente la importancia de la seguridad de los contratos en los proyectos DeFi. En los proyectos de préstamos, es especialmente necesario prestar atención a los siguientes puntos:
Asegúrate de que todas las funciones que involucren operaciones de fondos realicen suficientes verificaciones de liquidez.
Controlar estrictamente el apalancamiento de los préstamos de los usuarios para prevenir los riesgos sistémicos causados por un apalancamiento excesivo.
Implementar múltiples mecanismos de seguridad, como la función de pausa de emergencia, para hacer frente a eventos de seguridad imprevistos.
Realizar una auditoría completa del contrato, prestando especial atención a aspectos clave como el reembolso de fondos, la detección de liquidez y la liquidación de deudas.
Realizar evaluaciones de seguridad y pruebas de estrés periódicamente para detectar y corregir vulnerabilidades potenciales a tiempo.
Este incidente de ataque nos recuerda que en el mundo en rápida evolución de Web3, la seguridad siempre debe ser la principal preocupación. Los equipos de proyectos deberían invertir más recursos en la construcción de seguridad, y los usuarios también deben aumentar su conciencia sobre los riesgos y participar con precaución en diversos proyectos DeFi.