Euler Finance sufrió un ataque de flash loan de 200 millones de dólares, lo que vuelve a encender la alarma sobre la seguridad en las Finanzas descentralizadas.
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 gran ataque de flash loan debido a una vulnerabilidad en la función donateToReserves de su contrato Etoken. El atacante realizó múltiples operaciones utilizando varios tokens, lo que resultó en una pérdida masiva de aproximadamente 197 millones de dólares.
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 luego desplegó dos contratos clave: uno para las operaciones de préstamo y otro para la liquidación. El proceso de ataque se puede dividir en los siguientes pasos:
Depositar 20 millones de DAI en el contrato del Euler Protocol para obtener aproximadamente 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10x de Euler Protocol, se prestaron 195.6 millones de eDAI y 200 millones de dDAI.
Utilizar los restantes 10 millones de DAI para pagar parte de la deuda y destruir la cantidad correspondiente de dDAI, y 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, 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 retiraron 38.9 millones de DAI, y después de devolver el Flash Loan, se ganó netamente aproximadamente 8.87 millones de DAI.
Análisis de la causa de la vulnerabilidad
El problema central de este ataque radica en que la función donateToReserves carece de las verificaciones de liquidez necesarias. A diferencia de la función mint, la función donateToReserves no ejecuta el paso de checkLiquidity, lo que permite a los usuarios eludir el mecanismo normal de verificación de liquidez.
En condiciones normales, la función checkLiquidity llamaría al módulo RiskManager para asegurarse de que la cantidad de Etoken del usuario sea mayor que la cantidad de Dtoken. Sin embargo, debido a que la función donateToReserves omitió este paso, el atacante pudo colocarse primero en un estado susceptible de ser liquidado y luego completar la operación de liquidación.
Sugerencias de seguridad
Para vulnerabilidades de este tipo, recomendamos a los proyectos DeFi:
Realizar una auditoría de seguridad completa antes de que el contrato se implemente, para garantizar la seguridad del contrato.
Prestar especial atención a los aspectos clave como el reembolso de fondos, la detección de liquidez y la liquidación de deudas en proyectos de préstamos.
Implementar controles de liquidez estrictos en todas las funciones que puedan afectar el estado de los activos de los usuarios.
Realizar revisiones de código periódicamente y corregir a tiempo las posibles vulnerabilidades de seguridad.
Considerar la introducción de mecanismos de firma múltiple o medidas de seguridad adicionales como los bloqueos de tiempo.
Este evento vuelve a resaltar la importancia de la seguridad de los contratos inteligentes. Los equipos de proyectos deben siempre priorizar la seguridad, protegiendo los activos de los usuarios y el desarrollo saludable del ecosistema del proyecto a través de prácticas de seguridad en constante mejora.
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.
22 me gusta
Recompensa
22
6
Compartir
Comentar
0/400
MevTears
· 07-07 18:24
¿Es agradable ganar dinero sin hacer nada en DeFi?
Euler Finance sufrió un ataque de flash loan de 200 millones de dólares, lo que vuelve a encender la alarma sobre la seguridad en las Finanzas descentralizadas.
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 gran ataque de flash loan debido a una vulnerabilidad en la función donateToReserves de su contrato Etoken. El atacante realizó múltiples operaciones utilizando varios tokens, lo que resultó en una pérdida masiva de aproximadamente 197 millones de dólares.
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 luego desplegó dos contratos clave: uno para las operaciones de préstamo y otro para la liquidación. El proceso de ataque se puede dividir en los siguientes pasos:
Depositar 20 millones de DAI en el contrato del Euler Protocol para obtener aproximadamente 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10x de Euler Protocol, se prestaron 195.6 millones de eDAI y 200 millones de dDAI.
Utilizar los restantes 10 millones de DAI para pagar parte de la deuda y destruir la cantidad correspondiente de dDAI, y 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, 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 retiraron 38.9 millones de DAI, y después de devolver el Flash Loan, se ganó netamente aproximadamente 8.87 millones de DAI.
Análisis de la causa de la vulnerabilidad
El problema central de este ataque radica en que la función donateToReserves carece de las verificaciones de liquidez necesarias. A diferencia de la función mint, la función donateToReserves no ejecuta el paso de checkLiquidity, lo que permite a los usuarios eludir el mecanismo normal de verificación de liquidez.
En condiciones normales, la función checkLiquidity llamaría al módulo RiskManager para asegurarse de que la cantidad de Etoken del usuario sea mayor que la cantidad de Dtoken. Sin embargo, debido a que la función donateToReserves omitió este paso, el atacante pudo colocarse primero en un estado susceptible de ser liquidado y luego completar la operación de liquidación.
Sugerencias de seguridad
Para vulnerabilidades de este tipo, recomendamos a los proyectos DeFi:
Realizar una auditoría de seguridad completa antes de que el contrato se implemente, para garantizar la seguridad del contrato.
Prestar especial atención a los aspectos clave como el reembolso de fondos, la detección de liquidez y la liquidación de deudas en proyectos de préstamos.
Implementar controles de liquidez estrictos en todas las funciones que puedan afectar el estado de los activos de los usuarios.
Realizar revisiones de código periódicamente y corregir a tiempo las posibles vulnerabilidades de seguridad.
Considerar la introducción de mecanismos de firma múltiple o medidas de seguridad adicionales como los bloqueos de tiempo.
Este evento vuelve a resaltar la importancia de la seguridad de los contratos inteligentes. Los equipos de proyectos deben siempre priorizar la seguridad, protegiendo los activos de los usuarios y el desarrollo saludable del ecosistema del proyecto a través de prácticas de seguridad en constante mejora.