Euler Finance sofreu 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 de cerca de 197 milhões de dólares. Este ataque envolveu 6 tipos de tokens, e o atacante explorou uma falha em uma função do contrato do projeto para realizar o ataque.
Análise do processo de ataque
O atacante primeiro obteve um empréstimo flash de 30 milhões de DAI de uma plataforma de empréstimos, e em seguida, implementou dois contratos para operações de empréstimo e liquidação. O ataque é dividido nos seguintes passos:
Depositar 20 milhões de DAI no contrato do Euler Protocol, obtendo 19,5 milhões de eDAI.
Utilizando a funcionalidade de 10x de alavancagem do Euler Protocol, emprestar 195,6 milhões de eDAI e 200 milhões de dDAI.
Usar os restantes 10 milhões de DAI para reembolsar parte da dívida, destruir o dDAI correspondente e continuar a emprestar mais eDAI e dDAI.
Doar 100 milhões de eDAI através da função donateToReserves, seguido de operações de liquidação, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, retirei 38,9 milhões de DAI e, após reembolsar o empréstimo flash, obtive um lucro de cerca de 8,87 milhões de DAI.
Causa da vulnerabilidade
A principal razão pela qual o ataque teve sucesso foi a falta de uma verificação de liquidez necessária na função donateToReserves do contrato Euler Finance. Ao contrário de outras funções-chave, como mint, a função donateToReserves não chama checkLiquidity para validar a liquidez do usuário.
Normalmente, a função checkLiquidity chama o módulo RiskManager para garantir que a quantidade de eTokens do usuário seja maior do que a quantidade de dTokens. Devido à falta desse passo crítico, o atacante conseguiu manipular o estado da sua conta, colocando-a em um estado que poderia ser liquidado, obtendo assim ganhos indevidos.
Sugestões de Segurança
Este incidente destaca novamente a importância da auditoria de segurança de contratos inteligentes. Para projetos de finanças descentralizadas (DeFi), especialmente plataformas que envolvem funcionalidades de empréstimo, é necessário prestar especial atenção aos seguintes aspectos:
A integralidade 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 abrangente antes da implementação do contrato, garantindo a segurança e a interoperabilidade de cada módulo funcional. Ao mesmo tempo, a monitorização contínua da segurança e a correção rápida de vulnerabilidades também são fundamentais para garantir a operação estável do projeto a longo prazo.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
22 Curtidas
Recompensa
22
7
Compartilhar
Comentário
0/400
WagmiWarrior
· 07-22 11:52
Ser enganado por idiotas手法越来越高级了
Ver originalResponder0
CountdownToBroke
· 07-22 02:14
Mais um colapso. Vá se formando na fila lentamente.
Ver originalResponder0
MEVHunterX
· 07-21 21:20
Mais um problema de auditoria? Que piada.
Ver originalResponder0
defi_detective
· 07-20 16:03
Mais um projeto falhou e foi encerrado.
Ver originalResponder0
DegenDreamer
· 07-20 15:55
Mais uma falha de segurança. Não dá para jogar neste meio.
Ver originalResponder0
GhostInTheChain
· 07-20 15:53
Triste~~mais uma máquina de fazer as pessoas de parvas nova
Euler Finance sofreu ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
Euler Finance sofreu 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 de cerca de 197 milhões de dólares. Este ataque envolveu 6 tipos de tokens, e o atacante explorou uma falha em uma função do contrato do projeto para realizar o ataque.
Análise do processo de ataque
O atacante primeiro obteve um empréstimo flash de 30 milhões de DAI de uma plataforma de empréstimos, e em seguida, implementou dois contratos para operações de empréstimo e liquidação. O ataque é dividido nos seguintes passos:
Depositar 20 milhões de DAI no contrato do Euler Protocol, obtendo 19,5 milhões de eDAI.
Utilizando a funcionalidade de 10x de alavancagem do Euler Protocol, emprestar 195,6 milhões de eDAI e 200 milhões de dDAI.
Usar os restantes 10 milhões de DAI para reembolsar parte da dívida, destruir o dDAI correspondente e continuar a emprestar mais eDAI e dDAI.
Doar 100 milhões de eDAI através da função donateToReserves, seguido de operações de liquidação, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, retirei 38,9 milhões de DAI e, após reembolsar o empréstimo flash, obtive um lucro de cerca de 8,87 milhões de DAI.
Causa da vulnerabilidade
A principal razão pela qual o ataque teve sucesso foi a falta de uma verificação de liquidez necessária na função donateToReserves do contrato Euler Finance. Ao contrário de outras funções-chave, como mint, a função donateToReserves não chama checkLiquidity para validar a liquidez do usuário.
Normalmente, a função checkLiquidity chama o módulo RiskManager para garantir que a quantidade de eTokens do usuário seja maior do que a quantidade de dTokens. Devido à falta desse passo crítico, o atacante conseguiu manipular o estado da sua conta, colocando-a em um estado que poderia ser liquidado, obtendo assim ganhos indevidos.
Sugestões de Segurança
Este incidente destaca novamente a importância da auditoria de segurança de contratos inteligentes. Para projetos de finanças descentralizadas (DeFi), especialmente plataformas que envolvem funcionalidades de empréstimo, é necessário prestar especial atenção aos seguintes aspectos:
A equipe do projeto deve realizar uma auditoria de segurança abrangente antes da implementação do contrato, garantindo a segurança e a interoperabilidade de cada módulo funcional. Ao mesmo tempo, a monitorização contínua da segurança e a correção rápida de vulnerabilidades também são fundamentais para garantir a operação estável do projeto a longo prazo.