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 masiva de aproximadamente 197 millones de dólares. Este ataque involucró 6 tipos diferentes de tokens de criptomonedas.
Análisis del proceso de ataque
El atacante primero obtuvo un préstamo flash de 30 millones de DAI de una plataforma de préstamos y desplegó dos contratos clave: uno para la operación de préstamos y otro para la liquidación.
Luego, el atacante comprometió 20 millones de DAI en el contrato del Euler Protocol, obteniendo aproximadamente 19.5 millones de eDAI. Utilizando la función de apalancamiento de 10 veces del Euler Protocol, el atacante tomó prestados 195.6 millones de eDAI y 200 millones de dDAI.
Luego, el atacante utilizó los 10 millones de DAI restantes para pagar parte de la deuda, destruyendo el dDAI correspondiente. Luego, volvió a pedir prestada la misma cantidad de eDAI y dDAI.
Un paso clave es que el atacante aprovechó la vulnerabilidad de la función donateToReserves, donando 10 veces la cantidad de fondos a reembolsar, es decir, 100 millones de eDAI. Esta operación permitió al atacante activar el mecanismo de liquidación, obteniendo así 310 millones de dDAI y 250 millones de eDAI.
Finalmente, el atacante obtuvo 38.9 millones de DAI a través de la función de retiro, devolvió 30 millones de DAI del Flash Loans, y finalmente obtuvo una ganancia de aproximadamente 8.87 millones de DAI.
Análisis de la causa de la vulnerabilidad
La vulnerabilidad central de este ataque radica en que la función donateToReserves de Euler Finance carece de las comprobaciones de liquidez necesarias. A diferencia de otras funciones clave (como la función mint), la función donateToReserves no llama a checkLiquidity para la verificación de liquidez del usuario.
En condiciones normales, la función checkLiquidity asegura que la cantidad de eTokens del usuario sea mayor que la cantidad de dTokens al llamar al módulo RiskManager, para mantener la seguridad del sistema. Sin embargo, debido a que la función donateToReserves carece de este paso clave, los atacantes pueden manipular el estado de su cuenta para cumplir con las condiciones de liquidación y luego ejecutar la liquidación para obtener ganancias.
Consejos de seguridad
Para este tipo de ataques, recomendamos a los proyectos de blockchain:
Realizar una auditoría de seguridad completa antes de que el contrato inteligente esté en línea, prestando especial atención a los aspectos clave como el préstamo de fondos, la gestión de liquidez y la liquidación de deudas.
Implementar controles de seguridad estrictos en todas las funciones que puedan afectar el estado de los activos del usuario, incluyendo pero no limitado a la verificación de liquidez.
Realizar revisiones de código y escaneos de vulnerabilidades de manera regular, y corregir a tiempo las posibles amenazas de seguridad.
Establecer un mecanismo de gestión de riesgos completo, estableciendo límites de préstamo y umbrales de liquidación razonables.
Considere la introducción de medidas de seguridad adicionales, como firmas múltiples o bloqueos de tiempo, para prevenir la pérdida masiva de fondos.
Al tomar estas medidas preventivas, se puede aumentar significativamente la seguridad de los proyectos DeFi y reducir el riesgo de sufrir ataques similares.
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
ServantOfSatoshi
· 07-19 18:22
Otra vez ha ocurrido un accidente, es realmente frustrante.
Ver originalesResponder0
MercilessHalal
· 07-19 08:53
Nuevamente en la zona ciega del contrato
Ver originalesResponder0
DYORMaster
· 07-17 03:24
Otra vez se cayó el contrato.
Ver originalesResponder0
StableNomad
· 07-17 03:24
Otro proyecto que se convierte en ladrillo
Ver originalesResponder0
LightningSentry
· 07-17 03:19
Otra vez se ha llevado una ola de beneficios.
Ver originalesResponder0
just_another_fish
· 07-17 03:11
La auditoría de contratos es indispensable.
Ver originalesResponder0
BitcoinDaddy
· 07-17 02:56
Otra vez ocurrió un accidente de contratos inteligentes.
Euler Finance sufrió un ataque de flash loan de 200 millones de dólares, y la vulnerabilidad en los contratos inteligentes fue la raíz del problema.
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 masiva de aproximadamente 197 millones de dólares. Este ataque involucró 6 tipos diferentes de tokens de criptomonedas.
Análisis del proceso de ataque
El atacante primero obtuvo un préstamo flash de 30 millones de DAI de una plataforma de préstamos y desplegó dos contratos clave: uno para la operación de préstamos y otro para la liquidación.
Luego, el atacante comprometió 20 millones de DAI en el contrato del Euler Protocol, obteniendo aproximadamente 19.5 millones de eDAI. Utilizando la función de apalancamiento de 10 veces del Euler Protocol, el atacante tomó prestados 195.6 millones de eDAI y 200 millones de dDAI.
Luego, el atacante utilizó los 10 millones de DAI restantes para pagar parte de la deuda, destruyendo el dDAI correspondiente. Luego, volvió a pedir prestada la misma cantidad de eDAI y dDAI.
Un paso clave es que el atacante aprovechó la vulnerabilidad de la función donateToReserves, donando 10 veces la cantidad de fondos a reembolsar, es decir, 100 millones de eDAI. Esta operación permitió al atacante activar el mecanismo de liquidación, obteniendo así 310 millones de dDAI y 250 millones de eDAI.
Finalmente, el atacante obtuvo 38.9 millones de DAI a través de la función de retiro, devolvió 30 millones de DAI del Flash Loans, y finalmente obtuvo una ganancia de aproximadamente 8.87 millones de DAI.
Análisis de la causa de la vulnerabilidad
La vulnerabilidad central de este ataque radica en que la función donateToReserves de Euler Finance carece de las comprobaciones de liquidez necesarias. A diferencia de otras funciones clave (como la función mint), la función donateToReserves no llama a checkLiquidity para la verificación de liquidez del usuario.
En condiciones normales, la función checkLiquidity asegura que la cantidad de eTokens del usuario sea mayor que la cantidad de dTokens al llamar al módulo RiskManager, para mantener la seguridad del sistema. Sin embargo, debido a que la función donateToReserves carece de este paso clave, los atacantes pueden manipular el estado de su cuenta para cumplir con las condiciones de liquidación y luego ejecutar la liquidación para obtener ganancias.
Consejos de seguridad
Para este tipo de ataques, recomendamos a los proyectos de blockchain:
Realizar una auditoría de seguridad completa antes de que el contrato inteligente esté en línea, prestando especial atención a los aspectos clave como el préstamo de fondos, la gestión de liquidez y la liquidación de deudas.
Implementar controles de seguridad estrictos en todas las funciones que puedan afectar el estado de los activos del usuario, incluyendo pero no limitado a la verificación de liquidez.
Realizar revisiones de código y escaneos de vulnerabilidades de manera regular, y corregir a tiempo las posibles amenazas de seguridad.
Establecer un mecanismo de gestión de riesgos completo, estableciendo límites de préstamo y umbrales de liquidación razonables.
Considere la introducción de medidas de seguridad adicionales, como firmas múltiples o bloqueos de tiempo, para prevenir la pérdida masiva de fondos.
Al tomar estas medidas preventivas, se puede aumentar significativamente la seguridad de los proyectos DeFi y reducir el riesgo de sufrir ataques similares.