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 ataque de empréstimo flash devido a uma vulnerabilidade no contrato, resultando em grandes perdas. O atacante explorou a falha na função donateToReserves do contrato, que não tinha verificação de liquidez, e obteve uma grande quantidade de fundos através de múltiplas operações. Este incidente envolveu 6 tipos de tokens, com uma perda total de 197 milhões de dólares.
Análise do Processo de Ataque
O atacante primeiro pegou emprestado 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.
O atacante colocou 20 milhões de DAI em garantia no contrato do Euler Protocol, obtendo 195 mil eDAI.
Utilizando a funcionalidade de alavancagem de 10x do Euler Protocol, o atacante emprestou 1.956.000 eDAI e 2.000.000 dDAI.
O atacante usa os 10 milhões de DAI restantes para pagar parte da dívida e queimar a quantidade correspondente de dDAI, em seguida, empresta novamente 1.956.000 eDAI e 2.000.000 dDAI.
Passos Chave: O atacante chama a função donateToReserves, doando 1 milhão de eDAI (que é 10 vezes o valor de reembolso). Em seguida, o atacante chama a função liquidate para liquidar, obtendo 3,1 milhões de dDAI e 2,5 milhões de eDAI.
Por fim, o atacante retirou 389 mil DAI e devolveu os 30 milhões DAI do empréstimo flash, obtendo um lucro final de 8,87 milhões DAI.
Análise da Causa da Vulnerabilidade
O problema central deste ataque reside na falta de verificações de liquidez necessárias na função donateToReserves do contrato Euler Finance. Ao contrário da função mint, a função donateToReserves não executa o passo checkLiquidity, o que permite que o atacante contorne as verificações de liquidez normais.
Normalmente, a função checkLiquidity chama o módulo RiskManager, garantindo que a quantidade de eTokens do usuário seja maior que a quantidade de dTokens. No entanto, devido à falta deste passo crucial na função donateToReserves, um atacante consegue explorar essa vulnerabilidade, colocando-se primeiro em um estado que pode ser liquidado e, em seguida, completando a operação de liquidação.
Sugestões de Segurança
Para tais ataques, recomendamos aos projetos DeFi:
Realizar uma auditoria de segurança abrangente antes do lançamento do contrato, garantindo a segurança do contrato.
Para projetos de empréstimo, é necessário prestar especial atenção aos aspectos cruciais como reembolso de fundos, detecção de liquidez e liquidação de dívidas.
Deve-se implementar verificações de liquidez rigorosas em cada função que possa afetar o estado dos fundos dos usuários.
Realizar revisões de código e atualizações regularmente, corrigindo prontamente as vulnerabilidades encontradas.
Considere a introdução de mecanismos de múltiplas assinaturas ou bloqueios temporais como medidas de segurança adicionais.
Este evento mais uma vez nos lembra que, no campo em rápida evolução do DeFi, a segurança dos contratos é sempre de extrema importância. As equipes de projeto precisam constantemente reforçar a conscientização sobre segurança e adotar múltiplas medidas de proteção para proteger a segurança dos ativos dos usuários.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
15 Curtidas
Recompensa
15
7
Compartilhar
Comentário
0/400
HodlVeteran
· 07-13 01:44
Mais uma armadilha, o motorista experiente já pisou aqui há dez anos e ainda continua.
Ver originalResponder0
DiamondHands
· 07-13 01:36
Explodiu de novo
Ver originalResponder0
GasFeeCrier
· 07-12 00:27
O contrato está muito mal feito, não acha?
Ver originalResponder0
NftMetaversePainter
· 07-10 03:38
mais uma exploração primitiva devido à verificação algorítmica inadequada...smh web3 está literalmente a chorar rn
Euler Finance sofreu ataque de empréstimo flash, com perdas de 197 milhões de dólares.
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 ataque de empréstimo flash devido a uma vulnerabilidade no contrato, resultando em grandes perdas. O atacante explorou a falha na função donateToReserves do contrato, que não tinha verificação de liquidez, e obteve uma grande quantidade de fundos através de múltiplas operações. Este incidente envolveu 6 tipos de tokens, com uma perda total de 197 milhões de dólares.
Análise do Processo de Ataque
O atacante primeiro pegou emprestado 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.
O atacante colocou 20 milhões de DAI em garantia no contrato do Euler Protocol, obtendo 195 mil eDAI.
Utilizando a funcionalidade de alavancagem de 10x do Euler Protocol, o atacante emprestou 1.956.000 eDAI e 2.000.000 dDAI.
O atacante usa os 10 milhões de DAI restantes para pagar parte da dívida e queimar a quantidade correspondente de dDAI, em seguida, empresta novamente 1.956.000 eDAI e 2.000.000 dDAI.
Passos Chave: O atacante chama a função donateToReserves, doando 1 milhão de eDAI (que é 10 vezes o valor de reembolso). Em seguida, o atacante chama a função liquidate para liquidar, obtendo 3,1 milhões de dDAI e 2,5 milhões de eDAI.
Por fim, o atacante retirou 389 mil DAI e devolveu os 30 milhões DAI do empréstimo flash, obtendo um lucro final de 8,87 milhões DAI.
Análise da Causa da Vulnerabilidade
O problema central deste ataque reside na falta de verificações de liquidez necessárias na função donateToReserves do contrato Euler Finance. Ao contrário da função mint, a função donateToReserves não executa o passo checkLiquidity, o que permite que o atacante contorne as verificações de liquidez normais.
Normalmente, a função checkLiquidity chama o módulo RiskManager, garantindo que a quantidade de eTokens do usuário seja maior que a quantidade de dTokens. No entanto, devido à falta deste passo crucial na função donateToReserves, um atacante consegue explorar essa vulnerabilidade, colocando-se primeiro em um estado que pode ser liquidado e, em seguida, completando a operação de liquidação.
Sugestões de Segurança
Para tais ataques, recomendamos aos projetos DeFi:
Realizar uma auditoria de segurança abrangente antes do lançamento do contrato, garantindo a segurança do contrato.
Para projetos de empréstimo, é necessário prestar especial atenção aos aspectos cruciais como reembolso de fundos, detecção de liquidez e liquidação de dívidas.
Deve-se implementar verificações de liquidez rigorosas em cada função que possa afetar o estado dos fundos dos usuários.
Realizar revisões de código e atualizações regularmente, corrigindo prontamente as vulnerabilidades encontradas.
Considere a introdução de mecanismos de múltiplas assinaturas ou bloqueios temporais como medidas de segurança adicionais.
Este evento mais uma vez nos lembra que, no campo em rápida evolução do DeFi, a segurança dos contratos é sempre de extrema importância. As equipes de projeto precisam constantemente reforçar a conscientização sobre segurança e adotar múltiplas medidas de proteção para proteger a segurança dos ativos dos usuários.