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 importante ataque de flash loan. Según los datos de monitoreo en cadena, el atacante aprovechó una vulnerabilidad en el contrato del proyecto y logró robar aproximadamente 197 millones de dólares, involucrando 6 tipos diferentes de tokens.
Análisis del proceso de ataque
El atacante primero obtuvo un préstamo de flash de 30 millones de DAI de una plataforma de préstamos, y luego desplegó dos contratos clave: uno para la operación de préstamo y otro para la liquidación.
Los pasos principales del ataque son los siguientes:
Poner 20 millones de DAI en el contrato del Protocolo Euler y obtener 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10x del Protocolo Euler, se prestan 195.6 millones de eDAI y 200 millones de dDAI.
Utiliza los 10 millones de DAI restantes para pagar parte de la deuda y quema el dDAI correspondiente.
Volver a prestar la misma cantidad de eDAI y dDAI.
A través de la función donateToReserves, donar 100 millones de eDAI y luego llamar a la función liquidate para liquidar, obteniendo 310 millones de dDAI y 250 millones de eDAI.
Finalmente, se retiraron 38.9 millones de DAI, se devolvieron 30 millones de Flash Loans, y la ganancia neta fue 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 del contrato 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 ejecuta la operación checkLiquidity, lo que permite a los atacantes manipular el estado de su cuenta para que cumpla con las condiciones de liquidación.
En condiciones normales, la función checkLiquidity llamará al módulo RiskManager para asegurar que la cantidad de eToken del usuario siempre sea mayor que la cantidad de dToken. Sin embargo, debido a que la función donateToReserves carece de este paso crítico, un atacante puede eludir el mecanismo de seguridad y obtener beneficios indebidos.
Sugerencias de seguridad
Para este tipo de ataques, los proyectos de blockchain deberían:
Realizar una auditoría de seguridad completa antes del lanzamiento del contrato, asegurando la calidad y la seguridad del código.
Prestar especial atención a la reembolso de fondos, detección de liquidez y liquidación de deudas en proyectos de préstamos.
Asegúrate de que todas las funciones que puedan afectar el estado de los activos del usuario incluyan los pasos de verificación de seguridad necesarios.
Realizar revisiones de código y escaneos de vulnerabilidades de forma regular, y corregir a tiempo los riesgos potenciales.
Considerar la introducción de mecanismos de firma múltiple o bloqueos temporales y otras medidas de seguridad adicionales para reservar tiempo de amortiguación en caso de emergencia.
Este incidente destaca nuevamente la importancia de la seguridad en los contratos inteligentes. Los desarrolladores del proyecto deben siempre priorizar la seguridad, a través de prácticas de seguridad continuas e innovaciones tecnológicas, para construir juntos un ecosistema Web3 más seguro y confiable.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
19 me gusta
Recompensa
19
5
Compartir
Comentar
0/400
liquidation_surfer
· 07-11 22:36
Flash Loans ha vuelto a tener problemas.
Ver originalesResponder0
ZKSherlock
· 07-11 21:59
La auditoría de contratos es demasiado laxas.
Ver originalesResponder0
ResearchChadButBroke
· 07-10 21:58
Es realmente difícil prevenir las vulnerabilidades en los contratos.
Euler Finance sufrió un ataque de flash loan de 197 millones de dólares debido a una vulnerabilidad en la función donateToReserves.
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 importante ataque de flash loan. Según los datos de monitoreo en cadena, el atacante aprovechó una vulnerabilidad en el contrato del proyecto y logró robar aproximadamente 197 millones de dólares, involucrando 6 tipos diferentes de tokens.
Análisis del proceso de ataque
El atacante primero obtuvo un préstamo de flash de 30 millones de DAI de una plataforma de préstamos, y luego desplegó dos contratos clave: uno para la operación de préstamo y otro para la liquidación.
Los pasos principales del ataque son los siguientes:
Poner 20 millones de DAI en el contrato del Protocolo Euler y obtener 19.5 millones de eDAI.
Utilizando la función de apalancamiento de 10x del Protocolo Euler, se prestan 195.6 millones de eDAI y 200 millones de dDAI.
Utiliza los 10 millones de DAI restantes para pagar parte de la deuda y quema el dDAI correspondiente.
Volver a prestar la misma cantidad de eDAI y dDAI.
A través de la función donateToReserves, donar 100 millones de eDAI y luego llamar a la función liquidate para liquidar, obteniendo 310 millones de dDAI y 250 millones de eDAI.
Finalmente, se retiraron 38.9 millones de DAI, se devolvieron 30 millones de Flash Loans, y la ganancia neta fue 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 del contrato 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 ejecuta la operación checkLiquidity, lo que permite a los atacantes manipular el estado de su cuenta para que cumpla con las condiciones de liquidación.
En condiciones normales, la función checkLiquidity llamará al módulo RiskManager para asegurar que la cantidad de eToken del usuario siempre sea mayor que la cantidad de dToken. Sin embargo, debido a que la función donateToReserves carece de este paso crítico, un atacante puede eludir el mecanismo de seguridad y obtener beneficios indebidos.
Sugerencias de seguridad
Para este tipo de ataques, los proyectos de blockchain deberían:
Realizar una auditoría de seguridad completa antes del lanzamiento del contrato, asegurando la calidad y la seguridad del código.
Prestar especial atención a la reembolso de fondos, detección de liquidez y liquidación de deudas en proyectos de préstamos.
Asegúrate de que todas las funciones que puedan afectar el estado de los activos del usuario incluyan los pasos de verificación de seguridad necesarios.
Realizar revisiones de código y escaneos de vulnerabilidades de forma regular, y corregir a tiempo los riesgos potenciales.
Considerar la introducción de mecanismos de firma múltiple o bloqueos temporales y otras medidas de seguridad adicionales para reservar tiempo de amortiguación en caso de emergencia.
Este incidente destaca nuevamente la importancia de la seguridad en los contratos inteligentes. Los desarrolladores del proyecto deben siempre priorizar la seguridad, a través de prácticas de seguridad continuas e innovaciones tecnológicas, para construir juntos un ecosistema Web3 más seguro y confiable.