OrionProtocol sofreu um ataque de reentrada, 2,9 milhões de dólares foram roubados.

robot
Geração do resumo em andamento

A vulnerabilidade do contrato OrionProtocol resulta em perdas de 2,9 milhões de dólares

No dia 2 de fevereiro de 2023, os contratos do Orion Protocol na Ethereum e na Binance Smart Chain sofreram um ataque de reentrada, resultando em perdas de cerca de 2,9 milhões de dólares. As perdas específicas incluem 2.844.766 USDT na cadeia Ethereum e 191.606 BUSD na cadeia Binance Smart.

Análise do Processo de Ataque

Os atacantes primeiro implantaram um contrato de Token personalizado e realizaram as operações de transferência e autorização relacionadas. Em seguida, os atacantes emprestaram fundos através do método swap de um DEX e chamaram o método swapThroughOrionPool do OrionProtocol para trocar tokens. O caminho de troca incluía o endereço do contrato de Token criado pelos atacantes.

Ao executar o método swapThroughOrionPool, devido à funcionalidade de callback incluída no contrato de Token do atacante, foi possível chamar repetidamente o método depositAsset durante o processo de transferência. Isso resultou na contagem duplicada do valor depositado, permitindo que o atacante obtivesse lucros excessivos através da operação de retirada.

Análise de ataque de reentrada do OrionProtocol com PoC

Fluxo de Capital

O capital inicial do atacante veio da carteira quente de uma plataforma de negociação. Dos 1.651 ETH obtidos com o ataque, 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 ataque de reentrada do OrionProtocol com PoC

Núcleo da Vulnerabilidade

O problema está na função doSwapThroughOrionPool. Esta função executa a operação _doSwapTokens, primeiro realizando a operação de transferência, e só depois atualiza a variável curBalance. O atacante aproveitou o callback do método transfer do Token personalizado para chamar o método depositAsset, resultando na atualização incorreta de curBalance. Isso permitiu que o atacante, após reembolsar o empréstimo relâmpago, pudesse retirar fundos em excesso através da função withdraw.

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 de reentrada do OrionProtocol com PoC

Análise de ataque de reentrada do OrionProtocol com PoC

Sugestões de segurança

Para contratos inteligentes com funcionalidade de troca de tokens, os desenvolvedores precisam considerar os seguintes pontos:

  1. Considere as situações imprevistas que podem surgir devido a vários Tokens e caminhos de troca.
  2. Seguir o padrão de codificação "Checks-Effects-Interactions", ou seja, primeiro realizar a verificação de estado, em seguida atualizar o estado do contrato e, por último, interagir com contratos externos.
  3. Atualizar as variáveis de estado chave antes de realizar chamadas externas.
  4. Implementar mecanismos de segurança, como bloqueios de reentrância.
  5. Realizar uma auditoria de segurança abrangente do contrato.

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

TOKEN4.95%
ETH2.6%
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
  • 1
  • Compartilhar
Comentário
0/400
BoredStakervip
· 16h atrás
Mais um ataque de reentrada
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)