O Euler Finance sofreu um ataque de empréstimo flash de 197 milhões de dólares, com uma vulnerabilidade nos contratos inteligentes que provocou enormes perdas.
Euler Finance sofreu ataque de empréstimo flash, com perdas de até 197 milhões de dólares
No dia 13 de março de 2023, o projeto Euler Finance sofreu um grande ataque de empréstimo flash devido a uma vulnerabilidade em seu contrato inteligente. Os atacantes exploraram a falha na falta de verificação de liquidez da função donateToReserves no Etoken, obtendo enormes lucros através de várias chamadas de operações de diferentes moedas. O total de perdas causadas por este ataque atingiu 197 milhões de dólares, envolvendo 6 tipos diferentes de tokens.
Análise do processo de ataque
Os passos de operação do atacante são os seguintes:
Pedir emprestado 30 milhões de DAI de uma plataforma de empréstimos flash.
Implantar dois contratos: um para empréstimos e o outro para liquidação.
Colocar 20 milhões de DAI em staking no contrato do Euler Protocol, obtendo 195 mil eDAI.
Usando a funcionalidade de empréstimo alavancado de 10 vezes do Euler Protocol, emprestar 1,956 milhões de eDAI e 2 milhões de dDAI.
Utilizar os 10 milhões de DAI restantes para reembolsar parte da dívida e destruir a quantidade correspondente de dDAI.
Novamente, emprestar 1.956.000 eDAI e 2.000.000 dDAI.
Chame a função donateToReserves e doe 10 vezes o valor do fundo de reembolso (1 milhão de eDAI).
Acionar a função de liquidação, obter 3,1 milhões de dDAI e 2,5 milhões de eDAI.
Retirar 389 mil DAI, devolver 300 mil Empréstimos Flash, lucro final de 88,7 mil DAI.
Análise de Vulnerabilidades
A chave para o sucesso do ataque foi a falta de uma verificação de liquidez necessária na função donateToReserves da Euler Finance. Comparado a outras funções críticas (como mint), a função donateToReserves não executou o passo checkLiquidity. Esta negligência permitiu que os usuários manipulassem o estado das suas contas para que se qualificassem para serem liquidadas e, em seguida, lucrassem com a liquidação.
Em condições normais, a função checkLiquidity chamaria o módulo RiskManager, garantindo que o Etoken do usuário seja sempre maior que o Dtoken, para manter a saúde do sistema. No entanto, devido à falta dessa verificação crucial na função donateToReserves, os atacantes conseguiram contornar os mecanismos de segurança do sistema.
Recomendações de Segurança
Para este tipo de ataque, apresentamos as seguintes recomendações de segurança:
Antes de lançar o contrato inteligente, deve ser realizada uma auditoria de segurança abrangente.
Projetos de empréstimo devem prestar especial atenção a aspectos críticos como reembolso de fundos, detecção de liquidez e liquidação de dívidas.
Certifique-se de que todas as funções que possam afetar o estado dos ativos dos usuários incluam as verificações de segurança necessárias.
Realizar regularmente revisões de código para garantir que as novas funcionalidades não introduzam vulnerabilidades potenciais.
Estabelecer um mecanismo de resposta a emergências, para que se possa reagir rapidamente em caso de eventos de segurança.
Este incidente destaca novamente a importância da segurança dos contratos inteligentes. As equipes de projeto devem sempre priorizar a segurança, protegendo os ativos dos usuários através de práticas de segurança contínuas e auditorias.
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.
12 Curtidas
Recompensa
12
7
Repostar
Compartilhar
Comentário
0/400
TheMemefather
· 08-02 02:56
O contrato teve outro acidente.
Ver originalResponder0
MetaEggplant
· 07-30 18:24
Mais uma cena de roubo de moeda devido a uma falha.
O Euler Finance sofreu um ataque de empréstimo flash de 197 milhões de dólares, com uma vulnerabilidade nos contratos inteligentes que provocou enormes perdas.
Euler Finance sofreu ataque de empréstimo flash, com perdas de até 197 milhões de dólares
No dia 13 de março de 2023, o projeto Euler Finance sofreu um grande ataque de empréstimo flash devido a uma vulnerabilidade em seu contrato inteligente. Os atacantes exploraram a falha na falta de verificação de liquidez da função donateToReserves no Etoken, obtendo enormes lucros através de várias chamadas de operações de diferentes moedas. O total de perdas causadas por este ataque atingiu 197 milhões de dólares, envolvendo 6 tipos diferentes de tokens.
Análise do processo de ataque
Os passos de operação do atacante são os seguintes:
Análise de Vulnerabilidades
A chave para o sucesso do ataque foi a falta de uma verificação de liquidez necessária na função donateToReserves da Euler Finance. Comparado a outras funções críticas (como mint), a função donateToReserves não executou o passo checkLiquidity. Esta negligência permitiu que os usuários manipulassem o estado das suas contas para que se qualificassem para serem liquidadas e, em seguida, lucrassem com a liquidação.
Em condições normais, a função checkLiquidity chamaria o módulo RiskManager, garantindo que o Etoken do usuário seja sempre maior que o Dtoken, para manter a saúde do sistema. No entanto, devido à falta dessa verificação crucial na função donateToReserves, os atacantes conseguiram contornar os mecanismos de segurança do sistema.
Recomendações de Segurança
Para este tipo de ataque, apresentamos as seguintes recomendações de segurança:
Este incidente destaca novamente a importância da segurança dos contratos inteligentes. As equipes de projeto devem sempre priorizar a segurança, protegendo os ativos dos usuários através de práticas de segurança contínuas e auditorias.