Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023 à tarde, os contratos do OrionProtocol na Ethereum e na Binance Smart Chain sofreram um ataque de reentrada devido a uma vulnerabilidade, resultando em perdas de aproximadamente 2,9 milhões de dólares, incluindo 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia BSC.
Análise do Processo de Ataque
O atacante primeiro criou um contrato de Token especial e realizou uma série de preparações. Em seguida, o atacante utilizou a função de swap de um DEX para contrair um empréstimo e chamou o método swapThroughOrionPool do OrionProtocol para trocar Tokens. O caminho de troca incluía o endereço do contrato de Token criado pelo atacante, o que preparou o terreno para um ataque de callback subsequente.
Durante o processo de troca, o contrato Token do atacante ativa a chamada de volta através da função Transfer, chamando repetidamente a função depositAsset do OrionProtocol, resultando na acumulação contínua do valor depositado. No final, o atacante completou o lucro através da operação de retirada.
Fluxo de Fundos
Os fundos iniciais do atacante vieram da conta da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
O núcleo da vulnerabilidade reside na implementação das funções doSwapThroughOrionPool e _doSwapTokens. O contrato atualiza a variável curBalance após a operação de transferência, o que cria condições para um ataque de reentrada. O atacante, adicionando lógica de callback na função transfer do Token personalizado, leva a uma atualização incorreta do curBalance, permitindo que o atacante retire fundos adicionais após reembolsar o empréstimo relâmpago.
Reproduzir Ataques
Os pesquisadores forneceram parte do código POC, simulando o processo de ataque. Os resultados dos testes mostraram que o atacante conseguiu explorar a vulnerabilidade para obter USDT adicional.
Sugestões de segurança
Ao projetar contratos, é necessário considerar as possíveis situações imprevistas que podem surgir devido a vários Tokens e caminhos de troca.
Seguir a norma de codificação "primeiro julgar, depois gravar na variável, e só depois fazer chamadas externas" (modelo Checks-Effects-Interactions).
Reforçar as restrições e verificações sobre chamadas externas, especialmente em operações relacionadas à transferência de fundos.
Realizar auditorias de segurança regularmente para identificar e corrigir potenciais vulnerabilidades a tempo.
Implementar medidas de segurança adicionais, como assinaturas múltiplas, para prevenir falhas de ponto único.
Este evento destaca novamente os desafios de segurança enfrentados pelos projetos DeFi. Os desenvolvedores devem permanecer sempre vigilantes e constantemente melhorar a segurança dos contratos para proteger os ativos dos usuários e a reputação 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.
13 Curtidas
Recompensa
13
4
Compartilhar
Comentário
0/400
SatoshiHeir
· 21h atrás
É necessário apontar que o risco de reentrância dos contratos inteligentes está claramente mencionado na primeira página do livro didático de Solidity, parece que mais uma equipe de projeto não fez o dever de casa...
Ver originalResponder0
SnapshotDayLaborer
· 21h atrás
fazer as pessoas de parvas fazer as pessoas de parvas~
Ver originalResponder0
ChainComedian
· 21h atrás
Outra vez 290w, fazer as pessoas de parvas, corra rápido.
Ver originalResponder0
ChainSauceMaster
· 21h atrás
Boa rapaz, fui novamente enganado com Cupões de Recorte.
OrionProtocol sofreu um ataque de reentrada com perdas de 2,9 milhões de dólares.
Análise do incidente de ataque de reentrada do OrionProtocol
No dia 2 de fevereiro de 2023 à tarde, os contratos do OrionProtocol na Ethereum e na Binance Smart Chain sofreram um ataque de reentrada devido a uma vulnerabilidade, resultando em perdas de aproximadamente 2,9 milhões de dólares, incluindo 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia BSC.
Análise do Processo de Ataque
O atacante primeiro criou um contrato de Token especial e realizou uma série de preparações. Em seguida, o atacante utilizou a função de swap de um DEX para contrair um empréstimo e chamou o método swapThroughOrionPool do OrionProtocol para trocar Tokens. O caminho de troca incluía o endereço do contrato de Token criado pelo atacante, o que preparou o terreno para um ataque de callback subsequente.
Durante o processo de troca, o contrato Token do atacante ativa a chamada de volta através da função Transfer, chamando repetidamente a função depositAsset do OrionProtocol, resultando na acumulação contínua do valor depositado. No final, o atacante completou o lucro através da operação de retirada.
Fluxo de Fundos
Os fundos iniciais do atacante vieram da conta da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ETH ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de um serviço de mistura.
Análise de Vulnerabilidades
O núcleo da vulnerabilidade reside na implementação das funções doSwapThroughOrionPool e _doSwapTokens. O contrato atualiza a variável curBalance após a operação de transferência, o que cria condições para um ataque de reentrada. O atacante, adicionando lógica de callback na função transfer do Token personalizado, leva a uma atualização incorreta do curBalance, permitindo que o atacante retire fundos adicionais após reembolsar o empréstimo relâmpago.
Reproduzir Ataques
Os pesquisadores forneceram parte do código POC, simulando o processo de ataque. Os resultados dos testes mostraram que o atacante conseguiu explorar a vulnerabilidade para obter USDT adicional.
Sugestões de segurança
Este evento destaca novamente os desafios de segurança enfrentados pelos projetos DeFi. Os desenvolvedores devem permanecer sempre vigilantes e constantemente melhorar a segurança dos contratos para proteger os ativos dos usuários e a reputação do projeto.