Análise do incidente de vulnerabilidade da Euler Finance: ataque de empréstimo flash leva a uma perda de 197 milhões de dólares
Em 13 de março de 2023, o projeto Euler Finance sofreu um grande incidente de segurança. De acordo com os dados de monitoramento na blockchain, devido a uma vulnerabilidade de verificação de liquidez na função donateToReserves do Etoken, o projeto foi alvo de um ataque de empréstimo flash. O atacante, através de várias operações com diferentes moedas, causou uma perda colossal de até 197 milhões de dólares, envolvendo 6 tipos de tokens. Atualmente, esses fundos ainda permanecem na conta do atacante.
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éstimos e o outro para liquidação.
O atacante colocou 20 milhões de Dai emprestados em um 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 pediu emprestado 195,6 milhões de eDAI e 200 milhões de dDAI.
O atacante utiliza os 10 milhões de DAI restantes para pagar parte da dívida e queimar a quantidade correspondente de dDAI, em seguida, volta a emprestar 195,6 milhões de eDAI e 200 milhões de dDAI.
Passos-chave: o atacante chama a função donateToReserves, doando 10 vezes o valor do capital a ser reembolsado, ou seja, 100 milhões de eDAI. Em seguida, o atacante aciona a função de liquidação, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, o atacante extraiu 38,9 milhões de Dai, devolveu 30 milhões de Empréstimos Flash e lucrou cerca de 8,87 milhões de Dai.
Análise das causas da vulnerabilidade
O problema central deste ataque reside na função donateToReserves. Comparada a outras funções críticas (como a função mint), a função donateToReserves carece de um passo crucial: checkLiquidity.
A função checkLiquidity chama o módulo RiskManager para verificar o usuário, garantindo que o Etoken seja maior que o Dtoken, assegurando assim a situação de liquidez do usuário. Normalmente, essa verificação é necessária a cada operação. No entanto, a função donateToReserves carece deste passo, permitindo que atacantes se coloquem em um estado que pode ser liquidado e, em seguida, realizem a operação de liquidação.
Sugestões de Segurança
Para vulnerabilidades desse tipo, recomendamos que as equipes de projeto realizem uma auditoria de segurança abrangente antes do lançamento, para garantir a segurança do contrato. Para projetos de empréstimo, é especialmente importante prestar atenção aos seguintes aspectos:
A integridade do mecanismo de reembolso de fundos
Abrangência da detecção de liquidez
Segurança do processo de liquidação de dívidas
Só através de auditorias de segurança rigorosas e avaliações de risco abrangentes, é possível minimizar a probabilidade de ocorrência de eventos de segurança semelhantes, garantindo a segurança dos fundos do projeto e dos usuários.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
14 gostos
Recompensa
14
3
Partilhar
Comentar
0/400
AirdropChaser
· 12h atrás
fazer as pessoas de parvas fazer as pessoas de parvas todos os dias
Ver originalResponder0
DefiSecurityGuard
· 12h atrás
*suspiro* mais um dia, outro protocolo rekt pela vulnerabilidade básica donateToReserves... chamei isso há meses, para ser honesto. lembrete crítico: SEMPRE sanitize as verificações de liquidez, pelo amor de Deus. esses erros amadores continuam a custar 9 dígitos, que raiva.
Ver originalResponder0
GasGrillMaster
· 12h atrás
Irmão, essa defesa básica não está a par, é mesmo fraca.
Euler Finance sofreu um ataque de empréstimo flash de 197 milhões de dólares, com a vulnerabilidade da função donateToReserves como causa do desastre.
Análise do incidente de vulnerabilidade da Euler Finance: ataque de empréstimo flash leva a uma perda de 197 milhões de dólares
Em 13 de março de 2023, o projeto Euler Finance sofreu um grande incidente de segurança. De acordo com os dados de monitoramento na blockchain, devido a uma vulnerabilidade de verificação de liquidez na função donateToReserves do Etoken, o projeto foi alvo de um ataque de empréstimo flash. O atacante, através de várias operações com diferentes moedas, causou uma perda colossal de até 197 milhões de dólares, envolvendo 6 tipos de tokens. Atualmente, esses fundos ainda permanecem na conta do atacante.
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éstimos e o outro para liquidação.
O atacante colocou 20 milhões de Dai emprestados em um 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 pediu emprestado 195,6 milhões de eDAI e 200 milhões de dDAI.
O atacante utiliza os 10 milhões de DAI restantes para pagar parte da dívida e queimar a quantidade correspondente de dDAI, em seguida, volta a emprestar 195,6 milhões de eDAI e 200 milhões de dDAI.
Passos-chave: o atacante chama a função donateToReserves, doando 10 vezes o valor do capital a ser reembolsado, ou seja, 100 milhões de eDAI. Em seguida, o atacante aciona a função de liquidação, obtendo 310 milhões de dDAI e 250 milhões de eDAI.
Por fim, o atacante extraiu 38,9 milhões de Dai, devolveu 30 milhões de Empréstimos Flash e lucrou cerca de 8,87 milhões de Dai.
Análise das causas da vulnerabilidade
O problema central deste ataque reside na função donateToReserves. Comparada a outras funções críticas (como a função mint), a função donateToReserves carece de um passo crucial: checkLiquidity.
A função checkLiquidity chama o módulo RiskManager para verificar o usuário, garantindo que o Etoken seja maior que o Dtoken, assegurando assim a situação de liquidez do usuário. Normalmente, essa verificação é necessária a cada operação. No entanto, a função donateToReserves carece deste passo, permitindo que atacantes se coloquem em um estado que pode ser liquidado e, em seguida, realizem a operação de liquidação.
Sugestões de Segurança
Para vulnerabilidades desse tipo, recomendamos que as equipes de projeto realizem uma auditoria de segurança abrangente antes do lançamento, para garantir a segurança do contrato. Para projetos de empréstimo, é especialmente importante prestar atenção aos seguintes aspectos:
Só através de auditorias de segurança rigorosas e avaliações de risco abrangentes, é possível minimizar a probabilidade de ocorrência de eventos de segurança semelhantes, garantindo a segurança dos fundos do projeto e dos usuários.