OrionProtocol sofreu um ataque de reentrada, com perdas de cerca de 2,9 milhões de dólares.

robot
Geração do resumo em andamento

Análise do incidente de ataque de reentrada do OrionProtocol

No dia 2 de fevereiro de 2023 à tarde, o projeto OrionProtocol nas redes Ethereum e Binance Smart Chain sofreu um ataque de reentrada devido a uma vulnerabilidade no contrato. O atacante obteve um lucro total de cerca de 2,9 milhões de dólares, o que inclui 2.844.766 USDT na rede Ethereum e 191.606 BUSD na Binance Smart Chain.

Análise do Processo de Ataque

O atacante primeiro implantou um contrato de Token personalizado e realizou uma série de operações de transferência e autorização para se preparar para o ataque subsequente. Em seguida, o atacante tomou emprestado através da funcionalidade de swap de um DEX e chamou o método ExchangeWithAtomic.swapThroughOrionPool do OrionProtocol para a troca de tokens. O caminho de troca foi definido como [USDC, Token do atacante, USDT].

Ao executar o método swapThroughOrionPool, devido à funcionalidade de callback incluída no contrato Token do atacante, ocorreu um ataque de reentrada durante o processo de transferência. O atacante utilizou o método Token.Transfer para chamar repetidamente a função ExchangeWithAtomic.depositAsset, fazendo com que o montante do depósito se acumulasse continuamente. No final, o atacante completou o lucro através da operação de retirada.

Análise de ataque de reentrada do OrionProtocol com PoC

Fluxo de Capital

De acordo com os dados on-chain, o capital inicial do atacante veio da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos, 657,5 ainda permanecem no endereço da carteira do atacante, enquanto o restante foi transferido através de serviços de mistura.

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de Vulnerabilidades

O núcleo da vulnerabilidade está na função doSwapThroughOrionPool do contrato ExchangeWithAtomic. Esta função apresenta uma falha lógica ao executar a operação _doSwapTokens. Especificamente, o código atualiza a variável curBalance apenas após a execução da transferência, criando condições para um ataque de reentrada.

Os atacantes adicionaram lógica de callback na função transfer do Token personalizado, chamando repetidamente a função depositAsset, o que levou a uma atualização incorreta do curBalance. No final, após reembolsar o empréstimo relâmpago, os atacantes chamaram a função withdraw para retirar fundos em excesso.

Análise de Ataques de Reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Análise de ataque Reentrante do OrionProtocol com PoC

Sugestões de prevenção

Para evitar ataques semelhantes, a equipe do projeto deve ter em atenção os seguintes pontos:

  1. Ao implementar a funcionalidade de troca de tokens, é necessário considerar abrangentemente os riscos de segurança que podem advir de vários tipos de Token e caminhos de troca.

  2. Seguir rigorosamente o padrão de codificação "Checks-Effects-Interactions"(, ou seja, primeiro realizar a verificação de condições, depois atualizar as variáveis de estado e, por último, executar chamadas externas.

  3. Reforçar o controle de segurança sobre chamadas externas, especialmente ao lidar com Tokens personalizados dos usuários.

  4. Realizar auditorias de código e testes de segurança regularmente, para identificar e corrigir rapidamente vulnerabilidades potenciais.

  5. Use bibliotecas de segurança maduras e melhores práticas, como o SafeERC20 da OpenZeppelin.

Ao adotar essas medidas, é possível reduzir significativamente o risco de ataques a contratos inteligentes e aumentar a segurança geral do projeto.

TOKEN1.09%
Ver original
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.
  • Recompensa
  • 6
  • Repostar
  • Compartilhar
Comentário
0/400
ser_ngmivip
· 21h atrás
Já não tenho dinheiro.
Ver originalResponder0
PretendingToReadDocsvip
· 21h atrás
Acontece alguma coisa todos os dias, para que fazer mais?
Ver originalResponder0
LiquidityWizardvip
· 21h atrás
Puxar o tapete pré-definido~
Ver originalResponder0
degenonymousvip
· 21h atrás
idiotas novamente foram feitos de parvas
Ver originalResponder0
CountdownToBrokevip
· 21h atrás
Mais um que quebrou.
Ver originalResponder0
BoredApeResistancevip
· 21h atrás
Mais uma falha de contrato. Comi demais.
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)