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, resultando em perdas de aproximadamente 197 milhões de dólares. O atacante explorou a falta de verificação de liquidez na função donateToReserves do Etoken no projeto, obtendo lucros enormes através de várias operações com diferentes moedas.
Análise do Processo de Ataque
O atacante primeiro emprestou 30 milhões de DAI de uma plataforma de empréstimos flash e implantou dois contratos: contrato de empréstimo e contrato de liquidação.
Em seguida, foram depositados 20 milhões de DAI no contrato do Euler Protocol, obtendo 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 reembolsar parte da dívida e destruir a quantidade correspondente de dDAI, e depois emprestar novamente a mesma quantidade de eDAI e dDAI.
Doar 100 milhões de eDAI através da função donateToReserves (10 vezes o valor a ser reembolsado) e executar imediatamente a operação de liquidação, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, foram retirados 38,9 milhões de DAI, devolvendo 30 milhões de DAI do Empréstimos Flash, com um lucro líquido de cerca de 8,87 milhões de DAI.
Causa da vulnerabilidade
A chave para o sucesso do ataque foi a ausência de verificações de liquidez necessárias na função donateToReserves da Euler Finance. Ao contrário de outras funções como mint, donateToReserves não chama a função checkLiquidity para validar a situação financeira do usuário. Isso permitiu que o atacante manipulasse sua própria conta para entrar em um estado que poderia ser liquidado e, em seguida, executasse a liquidação para obter lucro.
Normalmente, a função checkLiquidity chamaria o módulo RiskManager, garantindo que a quantidade de Etoken do usuário seja maior que a quantidade de Dtoken, para manter a saúde da conta. No entanto, a função donateToReserves pulou esse passo crucial, oferecendo uma oportunidade para os atacantes.
Sugestões de Segurança
Este evento destaca a importância da auditoria de segurança de contratos inteligentes. Para projetos de empréstimo, é especialmente necessário prestar atenção aos seguintes aspectos:
Integridade do mecanismo de reembolso de fundos
A abrangência da detecção de liquidez
A rigorosidade do processo de liquidação de dívidas
A equipe do projeto deve realizar uma auditoria de segurança abrangente e aprofundada antes da implementação do contrato, para garantir a segurança e a estabilidade das várias funcionalidades. Ao mesmo tempo, a monitorização contínua de segurança e a correção oportuna de vulnerabilidades também são medidas necessárias para garantir a operação segura e de longo prazo do projeto.
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.
16 Curtidas
Recompensa
16
7
Repostar
Compartilhar
Comentário
0/400
Ser_Liquidated
· 07-14 00:49
Mais um projeto a ser sacrificado tks
Ver originalResponder0
mev_me_maybe
· 07-14 00:03
又又又被descartar了
Ver originalResponder0
0xSoulless
· 07-13 14:42
idiotas ano após ano fazem as pessoas de parvas, após fazer as pessoas de parvas, continuam a fazer as pessoas de parvas.
Ver originalResponder0
RugpullSurvivor
· 07-11 02:50
Outra vez a grande panela! Não tem um pingo de culpa no coração?
Ver originalResponder0
GasFeeCrier
· 07-11 02:46
sentado a esperar que a equipa do projeto perca o contacto e puxe o tapete
Ver originalResponder0
GasFeeCrybaby
· 07-11 02:39
Outra vez foi roubado. Tsk tsk.
Ver originalResponder0
GasWaster
· 07-11 02:35
rip... mais uma lição cara em otimização de gás smh
Euler Finance sofreu um ataque de empréstimo flash de 200 milhões de dólares devido a uma vulnerabilidade no contrato.
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, resultando em perdas de aproximadamente 197 milhões de dólares. O atacante explorou a falta de verificação de liquidez na função donateToReserves do Etoken no projeto, obtendo lucros enormes através de várias operações com diferentes moedas.
Análise do Processo de Ataque
O atacante primeiro emprestou 30 milhões de DAI de uma plataforma de empréstimos flash e implantou dois contratos: contrato de empréstimo e contrato de liquidação.
Em seguida, foram depositados 20 milhões de DAI no contrato do Euler Protocol, obtendo 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 reembolsar parte da dívida e destruir a quantidade correspondente de dDAI, e depois emprestar novamente a mesma quantidade de eDAI e dDAI.
Doar 100 milhões de eDAI através da função donateToReserves (10 vezes o valor a ser reembolsado) e executar imediatamente a operação de liquidação, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, foram retirados 38,9 milhões de DAI, devolvendo 30 milhões de DAI do Empréstimos Flash, com um lucro líquido de cerca de 8,87 milhões de DAI.
Causa da vulnerabilidade
A chave para o sucesso do ataque foi a ausência de verificações de liquidez necessárias na função donateToReserves da Euler Finance. Ao contrário de outras funções como mint, donateToReserves não chama a função checkLiquidity para validar a situação financeira do usuário. Isso permitiu que o atacante manipulasse sua própria conta para entrar em um estado que poderia ser liquidado e, em seguida, executasse a liquidação para obter lucro.
Normalmente, a função checkLiquidity chamaria o módulo RiskManager, garantindo que a quantidade de Etoken do usuário seja maior que a quantidade de Dtoken, para manter a saúde da conta. No entanto, a função donateToReserves pulou esse passo crucial, oferecendo uma oportunidade para os atacantes.
Sugestões de Segurança
Este evento destaca a importância da auditoria de segurança de contratos inteligentes. Para projetos de empréstimo, é especialmente necessário prestar atenção aos seguintes aspectos:
A equipe do projeto deve realizar uma auditoria de segurança abrangente e aprofundada antes da implementação do contrato, para garantir a segurança e a estabilidade das várias funcionalidades. Ao mesmo tempo, a monitorização contínua de segurança e a correção oportuna de vulnerabilidades também são medidas necessárias para garantir a operação segura e de longo prazo do projeto.