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. O atacante explorou a vulnerabilidade na função donateToReserves do contrato, que não tinha verificação de liquidez, obtendo lucros enormes através de múltiplas operações.
Análise do Processo de Ataque
O atacante primeiro emprestou 30 milhões de DAI através de um Empréstimos Flash de uma plataforma de empréstimos e implantou dois contratos: contrato de empréstimo e contrato de liquidação.
Pledge 20 milhões de DAI emprestados ao contrato do Euler Protocol, obtendo cerca de 19,5 milhões de eDAI.
Usando a função de alavancagem de 10x do Euler Protocol, empreste 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 queimar a correspondente dDAI, em seguida, tomar emprestado novamente a mesma quantidade de eDAI e dDAI.
Chame a função donateToReserves para doar 100 milhões de eDAI e, em seguida, liquide através da função liquidate, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, retirar 38,9 milhões de DAI, devolver 30 milhões de DAI do Empréstimos Flash, lucros líquidos de cerca de 8,87 milhões de DAI.
Causa da vulnerabilidade
A principal razão para o sucesso do ataque foi a falta de uma verificação de liquidez necessária na função donateToReserves. Comparado a outras funções críticas (como mint), donateToReserves não chamou a função checkLiquidity para validar o estado de liquidez do usuário. Isso permitiu que os atacantes manipulassem suas próprias contas para entrar em um estado que poderia ser liquidado e lucrar com isso.
Normalmente, a função checkLiquidity chama o módulo RiskManager para garantir que a quantidade de Etoken do usuário seja maior que a quantidade de Dtoken, a fim de manter a saúde da conta. No entanto, a função donateToReserves pulou esta etapa crucial, criando uma oportunidade para um ataque.
Lições e Sugestões
Este evento mais uma vez 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
Abrangência da detecção de liquidez
Segurança do processo de liquidação de dívidas
Antes do lançamento do contrato, a equipe do projeto deve realizar uma auditoria de segurança abrangente e rigorosa, a fim de garantir a segurança e estabilidade do contrato. Além disso, a monitorização contínua da segurança e a correção oportuna de vulnerabilidades também são indispensáveis.
Com o rápido desenvolvimento das finanças descentralizadas, eventos de segurança semelhantes podem continuar a surgir. Os desenvolvedores e as equipes de projeto precisam manter-se alerta, aprendendo e melhorando constantemente, para construir um ecossistema de blockchain mais seguro e confiável.
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.
5 Curtidas
Recompensa
5
6
Repostar
Compartilhar
Comentário
0/400
ChainComedian
· 9h atrás
Mais um projeto bull que virou um desastre.
Ver originalResponder0
OfflineNewbie
· 9h atrás
idiotas又被 fazer as pessoas de parvas啦~
Ver originalResponder0
SmartMoneyWallet
· 9h atrás
197 milhões de dólares? Esta técnica é muito primitiva, mas o volume de capital não é pequeno.
Ver originalResponder0
SolidityStruggler
· 9h atrás
Mais uma vez, o culpado é o contratos inteligentes.
Euler Finance sofreu um ataque de empréstimo flash de 200 milhões de dólares. A vulnerabilidade do contrato inteligente foi a causa.
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. O atacante explorou a vulnerabilidade na função donateToReserves do contrato, que não tinha verificação de liquidez, obtendo lucros enormes através de múltiplas operações.
Análise do Processo de Ataque
O atacante primeiro emprestou 30 milhões de DAI através de um Empréstimos Flash de uma plataforma de empréstimos e implantou dois contratos: contrato de empréstimo e contrato de liquidação.
Pledge 20 milhões de DAI emprestados ao contrato do Euler Protocol, obtendo cerca de 19,5 milhões de eDAI.
Usando a função de alavancagem de 10x do Euler Protocol, empreste 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 queimar a correspondente dDAI, em seguida, tomar emprestado novamente a mesma quantidade de eDAI e dDAI.
Chame a função donateToReserves para doar 100 milhões de eDAI e, em seguida, liquide através da função liquidate, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, retirar 38,9 milhões de DAI, devolver 30 milhões de DAI do Empréstimos Flash, lucros líquidos de cerca de 8,87 milhões de DAI.
Causa da vulnerabilidade
A principal razão para o sucesso do ataque foi a falta de uma verificação de liquidez necessária na função donateToReserves. Comparado a outras funções críticas (como mint), donateToReserves não chamou a função checkLiquidity para validar o estado de liquidez do usuário. Isso permitiu que os atacantes manipulassem suas próprias contas para entrar em um estado que poderia ser liquidado e lucrar com isso.
Normalmente, a função checkLiquidity chama o módulo RiskManager para garantir que a quantidade de Etoken do usuário seja maior que a quantidade de Dtoken, a fim de manter a saúde da conta. No entanto, a função donateToReserves pulou esta etapa crucial, criando uma oportunidade para um ataque.
Lições e Sugestões
Este evento mais uma vez 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:
Antes do lançamento do contrato, a equipe do projeto deve realizar uma auditoria de segurança abrangente e rigorosa, a fim de garantir a segurança e estabilidade do contrato. Além disso, a monitorização contínua da segurança e a correção oportuna de vulnerabilidades também são indispensáveis.
Com o rápido desenvolvimento das finanças descentralizadas, eventos de segurança semelhantes podem continuar a surgir. Os desenvolvedores e as equipes de projeto precisam manter-se alerta, aprendendo e melhorando constantemente, para construir um ecossistema de blockchain mais seguro e confiável.