O projeto Euler Finance sofreu um ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
No dia 13 de março, o projeto Euler Finance sofreu um ataque de empréstimo flash devido a uma vulnerabilidade no contrato inteligente, resultando em perdas de até 197 milhões de dólares. O atacante explorou a falta de verificação de liquidez da função donateToReserves no contrato Etoken do projeto, realizando várias operações de ataque com diferentes criptomoedas.
Análise do Processo de Ataque
O atacante primeiro obteve um Empréstimos Flash de 30 milhões de DAI de uma plataforma de empréstimos, e em seguida, implantou dois contratos, um para empréstimo e outro para liquidação. O processo de ataque é aproximadamente o seguinte:
Pledge 20 milhões de DAI ao contrato do Euler Protocol, recebendo 19,5 milhões de eDAI.
Utilizando a funcionalidade de alavancagem de 10 vezes 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 pagar parte da dívida e queimar o dDAI correspondente.
Empréstimos novamente a mesma quantidade de eDAI e dDAI.
Doar 100 milhões de eDAI através da função donateToReserves e, em seguida, chamar a função liquidate para liquidar, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, retirou 38,9 milhões de DAI, e obteve um lucro de 8,87 milhões de DAI após reembolsar o Empréstimos Flash.
Análise das causas da vulnerabilidade
O cerne deste ataque está na função donateToReserves do projeto Euler Finance, que carece de verificações de liquidez necessárias. 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. Isso permite que o atacante manipule o estado de sua conta para que atenda às condições de liquidação, resultando em lucros indevidos.
Em circunstâncias normais, a função checkLiquidity chamaria o módulo RiskManager, garantindo que a quantidade de Etokens do usuário seja sempre maior do que a quantidade de Dtokens. No entanto, como a função donateToReserves pulou essa etapa, o atacante conseguiu contornar o mecanismo de segurança.
Sugestões de Segurança
Este evento destacou mais uma vez 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 integridade do mecanismo de reembolso de fundos
Abrangência da detecção de liquidez
A segurança do processo de liquidação da dívida
Antes da implantação do contrato, a equipe do projeto deve realizar uma auditoria de segurança abrangente e detalhada, a fim de prevenir a ocorrência de vulnerabilidades semelhantes. Além disso, a monitorização contínua da segurança e a correção oportuna de vulnerabilidades também são fundamentais para garantir a operação segura a 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.
7 Curtidas
Recompensa
7
2
Compartilhar
Comentário
0/400
WhaleMinion
· 19h atrás
Aqui vem mais um a causar problemas.
Ver originalResponder0
DefiEngineerJack
· 19h atrás
*suspiro* hora de amadores no design de contratos inteligentes... mostra-me a verificação formal ou sai fora
Euler Finance sofreu ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
O projeto Euler Finance sofreu um ataque de empréstimo flash, com perdas de quase 200 milhões de dólares.
No dia 13 de março, o projeto Euler Finance sofreu um ataque de empréstimo flash devido a uma vulnerabilidade no contrato inteligente, resultando em perdas de até 197 milhões de dólares. O atacante explorou a falta de verificação de liquidez da função donateToReserves no contrato Etoken do projeto, realizando várias operações de ataque com diferentes criptomoedas.
Análise do Processo de Ataque
O atacante primeiro obteve um Empréstimos Flash de 30 milhões de DAI de uma plataforma de empréstimos, e em seguida, implantou dois contratos, um para empréstimo e outro para liquidação. O processo de ataque é aproximadamente o seguinte:
Pledge 20 milhões de DAI ao contrato do Euler Protocol, recebendo 19,5 milhões de eDAI.
Utilizando a funcionalidade de alavancagem de 10 vezes 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 pagar parte da dívida e queimar o dDAI correspondente.
Empréstimos novamente a mesma quantidade de eDAI e dDAI.
Doar 100 milhões de eDAI através da função donateToReserves e, em seguida, chamar a função liquidate para liquidar, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, retirou 38,9 milhões de DAI, e obteve um lucro de 8,87 milhões de DAI após reembolsar o Empréstimos Flash.
Análise das causas da vulnerabilidade
O cerne deste ataque está na função donateToReserves do projeto Euler Finance, que carece de verificações de liquidez necessárias. 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. Isso permite que o atacante manipule o estado de sua conta para que atenda às condições de liquidação, resultando em lucros indevidos.
Em circunstâncias normais, a função checkLiquidity chamaria o módulo RiskManager, garantindo que a quantidade de Etokens do usuário seja sempre maior do que a quantidade de Dtokens. No entanto, como a função donateToReserves pulou essa etapa, o atacante conseguiu contornar o mecanismo de segurança.
Sugestões de Segurança
Este evento destacou mais uma vez 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 da implantação do contrato, a equipe do projeto deve realizar uma auditoria de segurança abrangente e detalhada, a fim de prevenir a ocorrência de vulnerabilidades semelhantes. Além disso, a monitorização contínua da segurança e a correção oportuna de vulnerabilidades também são fundamentais para garantir a operação segura a longo prazo do projeto.