Euler Finance sofreu um ataque de empréstimo flash, com perdas de quase 200 milhões de dólares
No dia 13 de março de 2023, o projeto Euler Finance sofreu um ataque de empréstimo flash devido a uma vulnerabilidade no contrato inteligente, resultando em uma perda significativa de cerca de 197 milhões de dólares. O atacante explorou a falha na função donateToReserves do contrato, que não tinha verificação de liquidez, e executou o ataque através de múltiplas operações.
Análise do Processo de Ataque
Os principais passos do atacante são os seguintes:
De uma plataforma de empréstimo, foi solicitado um empréstimo flash de 30 milhões DAI e foram implementados dois contratos: um para empréstimo e outro para liquidação.
Coloque 20 milhões de DAI em garantia no contrato do Euler Protocol e obtenha 19,5 milhões de eDAI.
Utilizando a funcionalidade de alavancagem de 10x do Euler Protocol, emprestar 195,6 milhões de eDAI e 200 milhões de dDAI.
Usar os restantes 10 milhões DAI para pagar parte da dívida, destruir a correspondente dDAI, e depois tomar emprestado novamente a mesma quantidade de eDAI e dDAI.
Por fim, foram retirados 38,9 milhões de DAI, devolvidos 30 milhões de Empréstimos Flash, com lucro líquido de cerca de 8,87 milhões de DAI.
Causa da Vulnerabilidade
O núcleo do ataque reside na falta de verificações de liquidez necessárias na função donateToReserves do contrato Euler Finance. Ao contrário de outras funções críticas (como mint), a função donateToReserves não chama checkLiquidity para validar a liquidez do usuário. Isso permite que um atacante, através de operações específicas, se coloque em um estado que pode ser liquidado, e então complete a liquidação para lucrar.
Em condições normais, a função checkLiquidity chamaria o módulo RiskManager, assegurando que o Etoken do usuário esteja sempre superior ao Dtoken, para manter a segurança do contrato. No entanto, a função donateToReserves pulou este passo importante, resultando em uma grave vulnerabilidade de segurança.
Lições e Recomendações
Este incidente destaca novamente a importância da auditoria de segurança de contratos inteligentes. Para projetos de empréstimo, é necessário prestar atenção especial aos seguintes aspectos-chave:
A integridade do mecanismo de reembolso de fundos
Abrangência da detecção de liquidez
Segurança do processo de liquidação de dívidas
A equipe do projeto deve realizar uma auditoria de segurança completa antes do lançamento, garantindo que cada função do contrato tenha passado por verificações de segurança rigorosas. Além disso, a monitorização contínua de segurança e um programa de recompensas por vulnerabilidades também são medidas eficazes para garantir a segurança a longo prazo do projeto.
Além disso, os desenvolvedores devem prestar atenção à consistência entre as funções, garantindo que as verificações de segurança críticas (como a verificação de liquidez) sejam corretamente implementadas em todas as funções relevantes. Isso não inclui apenas as funções principais, mas também deve abranger funções auxiliares, como doações.
Por fim, recomenda-se que as partes envolvidas no projeto e os desenvolvedores mantenham-se atentos a novas técnicas de ataque, atualizando regularmente as políticas de segurança para enfrentar as ameaças à segurança da blockchain em constante evolução.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
8 gostos
Recompensa
8
7
Partilhar
Comentar
0/400
StableGenius
· 9h atrás
bem bem bem... como previsto, outro protocolo aprende sobre rigor matemático da maneira difícil. empiricamente falando, isso era inevitável.
Ver originalResponder0
SelfCustodyBro
· 9h atrás
Deita-te e come o melão~
Ver originalResponder0
PoetryOnChain
· 9h atrás
Outro contrato crocante condenado
Ver originalResponder0
MevHunter
· 9h atrás
Outro vendedor de contratos puxou o tapete.
Ver originalResponder0
SorryRugPulled
· 9h atrás
Um contrato sem auditoria técnica não é também uma forma de dar dinheiro.
Ver originalResponder0
0xInsomnia
· 9h atrás
Mais uma vez, vulnerabilidades em contratos inteligentes
Ver originalResponder0
GasFeeNightmare
· 9h atrás
Acordado a noite toda a ver gás, quase fui à falência... dez transações, sete falharam e ainda tenho que pagar o imposto de inteligência aos mineiros.
Euler Finance sofreu um ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
Euler Finance sofreu um ataque de empréstimo flash, com perdas de quase 200 milhões de dólares
No dia 13 de março de 2023, o projeto Euler Finance sofreu um ataque de empréstimo flash devido a uma vulnerabilidade no contrato inteligente, resultando em uma perda significativa de cerca de 197 milhões de dólares. O atacante explorou a falha na função donateToReserves do contrato, que não tinha verificação de liquidez, e executou o ataque através de múltiplas operações.
Análise do Processo de Ataque
Os principais passos do atacante são os seguintes:
De uma plataforma de empréstimo, foi solicitado um empréstimo flash de 30 milhões DAI e foram implementados dois contratos: um para empréstimo e outro para liquidação.
Coloque 20 milhões de DAI em garantia no contrato do Euler Protocol e obtenha 19,5 milhões de eDAI.
Utilizando a funcionalidade de alavancagem de 10x do Euler Protocol, emprestar 195,6 milhões de eDAI e 200 milhões de dDAI.
Usar os restantes 10 milhões DAI para pagar parte da dívida, destruir a correspondente dDAI, e depois tomar emprestado novamente a mesma quantidade de eDAI e dDAI.
通过donateToReserves函数捐赠1亿eDAI,然后调用liquidate函数进行清算,获得3.1亿dDAI和2.5亿eDAI。
Por fim, foram retirados 38,9 milhões de DAI, devolvidos 30 milhões de Empréstimos Flash, com lucro líquido de cerca de 8,87 milhões de DAI.
Causa da Vulnerabilidade
O núcleo do ataque reside na falta de verificações de liquidez necessárias na função donateToReserves do contrato Euler Finance. Ao contrário de outras funções críticas (como mint), a função donateToReserves não chama checkLiquidity para validar a liquidez do usuário. Isso permite que um atacante, através de operações específicas, se coloque em um estado que pode ser liquidado, e então complete a liquidação para lucrar.
Em condições normais, a função checkLiquidity chamaria o módulo RiskManager, assegurando que o Etoken do usuário esteja sempre superior ao Dtoken, para manter a segurança do contrato. No entanto, a função donateToReserves pulou este passo importante, resultando em uma grave vulnerabilidade de segurança.
Lições e Recomendações
Este incidente destaca novamente a importância da auditoria de segurança de contratos inteligentes. Para projetos de empréstimo, é necessário prestar atenção especial aos seguintes aspectos-chave:
A equipe do projeto deve realizar uma auditoria de segurança completa antes do lançamento, garantindo que cada função do contrato tenha passado por verificações de segurança rigorosas. Além disso, a monitorização contínua de segurança e um programa de recompensas por vulnerabilidades também são medidas eficazes para garantir a segurança a longo prazo do projeto.
Além disso, os desenvolvedores devem prestar atenção à consistência entre as funções, garantindo que as verificações de segurança críticas (como a verificação de liquidez) sejam corretamente implementadas em todas as funções relevantes. Isso não inclui apenas as funções principais, mas também deve abranger funções auxiliares, como doações.
Por fim, recomenda-se que as partes envolvidas no projeto e os desenvolvedores mantenham-se atentos a novas técnicas de ataque, atualizando regularmente as políticas de segurança para enfrentar as ameaças à segurança da blockchain em constante evolução.