Euler Finance sofreu um ataque de 200 milhões de dólares através de Empréstimos Flash, com a vulnerabilidade dos contratos inteligentes sendo a raiz do problema.
Euler Finance sofreu ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
Recentemente, o projeto Euler Finance sofreu um ataque de empréstimo flash devido a uma vulnerabilidade no contrato inteligente, resultando em grandes perdas financeiras. Este artigo fará uma análise detalhada do incidente.
Resumo do Evento
No dia 13 de março de 2023, a função donateToReserves do contrato Etoken do projeto Euler Finance carecia de uma verificação de liquidez necessária, sendo explorada por atacantes para realizar um ataque de empréstimo flash. Os atacantes, através de várias operações com diferentes moedas, causaram uma perda de aproximadamente 197 milhões de dólares, envolvendo 6 tipos de tokens. Atualmente, os fundos roubados ainda estão retidos na conta dos atacantes.
Análise do Processo de Ataque
O atacante primeiro tomou emprestado 30 milhões de DAI de uma plataforma de empréstimo flash e implantou um contrato de empréstimo e um contrato de liquidação.
Através da função deposit, deposite 20 milhões de DAI no contrato do Euler Protocol, recebendo 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 de DAI para reembolsar parte da dívida e destruir a correspondente dDAI, em seguida, emprestar novamente a mesma quantidade de eDAI e dDAI.
Chamar a função donateToReserves para doar 100 milhões de eDAI, e em seguida liquidar através da função liquidate, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, através da função withdraw, foram retirados 38,9 milhões de DAI, devolvendo 300 mil DAI de Empréstimos Flash, resultando em um lucro líquido de 8,87 milhões de DAI.
Análise das causas da vulnerabilidade
Após a revisão do código, descobriu-se que o problema está na função donateToReserves. Em comparação com outras funções-chave, como mint, a função donateToReserves carece do importante passo checkLiquidity.
A função checkLiquidity geralmente chamará o módulo RiskManager para verificar o usuário, garantindo que a quantidade de Etokens seja maior do que a quantidade de Dtokens. Como a função donateToReserves não executa essa verificação, o atacante consegue utilizar algumas funcionalidades do protocolo para se colocar primeiro em um estado que pode ser liquidado, e depois completar a liquidação para obter lucro.
Recomendações de Segurança
Em relação a este tipo de ataque, a equipe do projeto deve prestar atenção aos seguintes pontos:
Antes de o contrato ser lançado, deve ser realizada uma auditoria de segurança abrangente para garantir a segurança do contrato.
Projetos de empréstimo devem prestar especial atenção a aspectos chave como reembolso de fundos, detecção de liquidez e liquidação de dívidas.
Todas as funções que possam afetar o estado dos ativos dos usuários devem incluir os mecanismos de verificação de segurança necessários.
Realizar regularmente revisões de código e um programa de recompensas por vulnerabilidades, para identificar e corrigir rapidamente ameaças potenciais.
Estabelecer um mecanismo de resposta a emergências, para que, uma vez ocorrido um ataque, sejam rapidamente tomadas medidas de remediação.
Com o constante desenvolvimento dos projetos DeFi, as questões de segurança tornam-se cada vez mais importantes. As equipes dos projetos devem manter-se sempre alertas e adotar medidas de proteção abrangentes para garantir a segurança dos ativos dos usuários.
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.
19 Curtidas
Recompensa
19
3
Compartilhar
Comentário
0/400
BagHolderTillRetire
· 07-24 17:19
Brincar com projetos hardcore não é melhor do que comprar na baixa BTC comigo.
Euler Finance sofreu um ataque de 200 milhões de dólares através de Empréstimos Flash, com a vulnerabilidade dos contratos inteligentes sendo a raiz do problema.
Euler Finance sofreu ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
Recentemente, o projeto Euler Finance sofreu um ataque de empréstimo flash devido a uma vulnerabilidade no contrato inteligente, resultando em grandes perdas financeiras. Este artigo fará uma análise detalhada do incidente.
Resumo do Evento
No dia 13 de março de 2023, a função donateToReserves do contrato Etoken do projeto Euler Finance carecia de uma verificação de liquidez necessária, sendo explorada por atacantes para realizar um ataque de empréstimo flash. Os atacantes, através de várias operações com diferentes moedas, causaram uma perda de aproximadamente 197 milhões de dólares, envolvendo 6 tipos de tokens. Atualmente, os fundos roubados ainda estão retidos na conta dos atacantes.
Análise do Processo de Ataque
O atacante primeiro tomou emprestado 30 milhões de DAI de uma plataforma de empréstimo flash e implantou um contrato de empréstimo e um contrato de liquidação.
Através da função deposit, deposite 20 milhões de DAI no contrato do Euler Protocol, recebendo 19,5 milhões de eDAI.
Análise das causas da vulnerabilidade
Após a revisão do código, descobriu-se que o problema está na função donateToReserves. Em comparação com outras funções-chave, como mint, a função donateToReserves carece do importante passo checkLiquidity.
A função checkLiquidity geralmente chamará o módulo RiskManager para verificar o usuário, garantindo que a quantidade de Etokens seja maior do que a quantidade de Dtokens. Como a função donateToReserves não executa essa verificação, o atacante consegue utilizar algumas funcionalidades do protocolo para se colocar primeiro em um estado que pode ser liquidado, e depois completar a liquidação para obter lucro.
Recomendações de Segurança
Em relação a este tipo de ataque, a equipe do projeto deve prestar atenção aos seguintes pontos:
Antes de o contrato ser lançado, deve ser realizada uma auditoria de segurança abrangente para garantir a segurança do contrato.
Projetos de empréstimo devem prestar especial atenção a aspectos chave como reembolso de fundos, detecção de liquidez e liquidação de dívidas.
Todas as funções que possam afetar o estado dos ativos dos usuários devem incluir os mecanismos de verificação de segurança necessários.
Realizar regularmente revisões de código e um programa de recompensas por vulnerabilidades, para identificar e corrigir rapidamente ameaças potenciais.
Estabelecer um mecanismo de resposta a emergências, para que, uma vez ocorrido um ataque, sejam rapidamente tomadas medidas de remediação.
Com o constante desenvolvimento dos projetos DeFi, as questões de segurança tornam-se cada vez mais importantes. As equipes dos projetos devem manter-se sempre alertas e adotar medidas de proteção abrangentes para garantir a segurança dos ativos dos usuários.