Euler Finance sofreu um ataque de empréstimo flash de 200 milhões de dólares, e a vulnerabilidade dos contratos inteligentes se tornou a raiz do problema.
Euler Finance foi alvo de 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 em seu contrato inteligente, resultando em uma perda colossal de cerca de 197 milhões de dólares. Este ataque envolveu 6 tipos diferentes de tokens de criptomoeda.
Análise do processo de ataque
O atacante primeiro obteve um Empréstimo Flash de 30 milhões de DAI de uma plataforma de empréstimos e implantou dois contratos-chave: um para operações de empréstimo e outro para liquidação.
Em seguida, o atacante bloqueou 20 milhões de DAI no contrato do Euler Protocol, obtendo cerca de 19,5 milhões de eDAI. Utilizando a funcionalidade de alavancagem de 10 vezes do Euler Protocol, o atacante tomou emprestado ainda 195,6 milhões de eDAI e 200 milhões de dDAI.
Em seguida, o atacante utilizou os restantes 10 milhões de DAI para pagar parte da dívida, destruindo a quantidade correspondente de dDAI. Depois, ele tomou emprestado novamente a mesma quantidade de eDAI e dDAI.
Um passo crucial é que o atacante explorou a vulnerabilidade da função donateToReserves, doando 10 vezes o montante a ser reembolsado, ou seja, 100 milhões de eDAI. Esta operação permitiu que o atacante acionasse o mecanismo de liquidação, obtendo assim 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, o atacante obteve 38,9 milhões de DAI através da função de saque, devolveu 30 milhões de DAI do Empréstimos Flash e lucrou aproximadamente 8,87 milhões de DAI.
Análise da causa da vulnerabilidade
A vulnerabilidade central deste ataque reside na função donateToReserves da Euler Finance, que carece de verificações de liquidez necessárias. Comparado a outras funções críticas (como a função mint), a função donateToReserves não chama checkLiquidity para a validação da liquidez do usuário.
Normalmente, a função checkLiquidity assegura que a quantidade de eTokens do usuário seja maior do que a quantidade de dTokens, chamando o módulo RiskManager, para manter a segurança do sistema. No entanto, devido à falta deste passo crucial na função donateToReserves, os atacantes conseguiram manipular o estado de suas contas para que estivessem em conformidade com as condições de liquidação, e então realizar a liquidação para obter lucro.
Sugestões de Segurança
Para este tipo de ataque, recomendamos que os projetos de blockchain:
Realizar uma auditoria de segurança abrangente antes do lançamento do contrato inteligente, com especial atenção a aspectos críticos como empréstimos de fundos, gestão de liquidez e liquidação de dívidas.
Implementar verificações de segurança rigorosas em todas as funções que possam afetar o estado dos ativos dos usuários, incluindo, mas não se limitando à validação de liquidez.
Realizar revisões de código e varreduras de vulnerabilidades regularmente, corrigindo prontamente potenciais riscos de segurança.
Estabelecer um mecanismo de gestão de riscos eficaz, definindo limites de empréstimo e limiares de liquidação razoáveis.
Considere introduzir medidas de segurança adicionais, como assinaturas múltiplas ou bloqueios temporais, para evitar perdas de fundos em grande escala.
Ao adotar essas medidas preventivas, é possível aumentar significativamente a segurança dos projetos DeFi e reduzir o risco de sofrer ataques semelhantes.
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.
16 Curtidas
Recompensa
16
7
Compartilhar
Comentário
0/400
ServantOfSatoshi
· 07-19 18:22
Mais um acidente, que chato.
Ver originalResponder0
MercilessHalal
· 07-19 08:53
Mais uma vez na zona cega do contrato
Ver originalResponder0
DYORMaster
· 07-17 03:24
Mais uma vez, o contrato caiu na armadilha.
Ver originalResponder0
StableNomad
· 07-17 03:24
Mais um projeto que virou tijolo
Ver originalResponder0
LightningSentry
· 07-17 03:19
Mais uma vez, foram arrancados alguns lucros.
Ver originalResponder0
just_another_fish
· 07-17 03:11
A auditoria de contratos é indispensável
Ver originalResponder0
BitcoinDaddy
· 07-17 02:56
Mais uma vez, houve um acidente com contratos inteligentes.
Euler Finance sofreu um ataque de empréstimo flash de 200 milhões de dólares, e a vulnerabilidade dos contratos inteligentes se tornou a raiz do problema.
Euler Finance foi alvo de 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 em seu contrato inteligente, resultando em uma perda colossal de cerca de 197 milhões de dólares. Este ataque envolveu 6 tipos diferentes de tokens de criptomoeda.
Análise do processo de ataque
O atacante primeiro obteve um Empréstimo Flash de 30 milhões de DAI de uma plataforma de empréstimos e implantou dois contratos-chave: um para operações de empréstimo e outro para liquidação.
Em seguida, o atacante bloqueou 20 milhões de DAI no contrato do Euler Protocol, obtendo cerca de 19,5 milhões de eDAI. Utilizando a funcionalidade de alavancagem de 10 vezes do Euler Protocol, o atacante tomou emprestado ainda 195,6 milhões de eDAI e 200 milhões de dDAI.
Em seguida, o atacante utilizou os restantes 10 milhões de DAI para pagar parte da dívida, destruindo a quantidade correspondente de dDAI. Depois, ele tomou emprestado novamente a mesma quantidade de eDAI e dDAI.
Um passo crucial é que o atacante explorou a vulnerabilidade da função donateToReserves, doando 10 vezes o montante a ser reembolsado, ou seja, 100 milhões de eDAI. Esta operação permitiu que o atacante acionasse o mecanismo de liquidação, obtendo assim 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, o atacante obteve 38,9 milhões de DAI através da função de saque, devolveu 30 milhões de DAI do Empréstimos Flash e lucrou aproximadamente 8,87 milhões de DAI.
Análise da causa da vulnerabilidade
A vulnerabilidade central deste ataque reside na função donateToReserves da Euler Finance, que carece de verificações de liquidez necessárias. Comparado a outras funções críticas (como a função mint), a função donateToReserves não chama checkLiquidity para a validação da liquidez do usuário.
Normalmente, a função checkLiquidity assegura que a quantidade de eTokens do usuário seja maior do que a quantidade de dTokens, chamando o módulo RiskManager, para manter a segurança do sistema. No entanto, devido à falta deste passo crucial na função donateToReserves, os atacantes conseguiram manipular o estado de suas contas para que estivessem em conformidade com as condições de liquidação, e então realizar a liquidação para obter lucro.
Sugestões de Segurança
Para este tipo de ataque, recomendamos que os projetos de blockchain:
Realizar uma auditoria de segurança abrangente antes do lançamento do contrato inteligente, com especial atenção a aspectos críticos como empréstimos de fundos, gestão de liquidez e liquidação de dívidas.
Implementar verificações de segurança rigorosas em todas as funções que possam afetar o estado dos ativos dos usuários, incluindo, mas não se limitando à validação de liquidez.
Realizar revisões de código e varreduras de vulnerabilidades regularmente, corrigindo prontamente potenciais riscos de segurança.
Estabelecer um mecanismo de gestão de riscos eficaz, definindo limites de empréstimo e limiares de liquidação razoáveis.
Considere introduzir medidas de segurança adicionais, como assinaturas múltiplas ou bloqueios temporais, para evitar perdas de fundos em grande escala.
Ao adotar essas medidas preventivas, é possível aumentar significativamente a segurança dos projetos DeFi e reduzir o risco de sofrer ataques semelhantes.