L'OrionProtocol a subi une attaque par réinjection de 2,9 millions de dollars. Analyse du processus d'attaque et recommandations de prévention.

robot
Création du résumé en cours

Analyse de l'incident d'attaque par réinjection d'OrionProtocol

Le 2 février 2023, OrionProtocol a subi une attaque par réentrance sur Ethereum et la Binance Smart Chain, entraînant une perte d'environ 2,9 millions de dollars. Les attaquants ont exploité une vulnérabilité du contrat pour voler 2 844 766 USDT sur la chaîne Ethereum et 191 606 BUSD sur la Binance Smart Chain.

Processus d'attaque

L'attaquant a d'abord créé un contrat de token personnalisé et a effectué les opérations de transfert et d'autorisation correspondantes. Ensuite, l'attaquant a emprunté via la méthode swap d'un certain DEX et a appelé la méthode ExchangeWithAtomic.swapThroughOrionPool pour échanger des tokens. Le chemin d'échange comprend l'adresse du contrat de token créé par l'attaquant.

Lors du processus d'échange, en raison de la présence d'un mécanisme de rappel dans le contrat Token de l'attaquant, l'attaquant a pu rappeler la méthode ExchangeWithAtomic.depositAsset via Token.Transfer, permettant ainsi une attaque par réentrance. Cela a entraîné une accumulation répétée du montant déposé, et finalement, l'attaquant a réalisé un profit en effectuant une opération de retrait.

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Flux de fonds

Les fonds initiaux de l'attaquant proviennent du compte de portefeuille chaud d'une plateforme d'échange. Parmi les 1 651 ETH réalisés, 657,5 ETH restent dans l'adresse du portefeuille de l'attaquant, tandis que le reste a été transféré via un service de mélange.

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Analyse des vulnérabilités

Le problème central de la vulnérabilité se situe dans la fonction doSwapThroughOrionPool. Cette fonction appelle la fonction _doSwapTokens, qui met à jour la variable curBalance après l'opération de transfert. L'attaquant a exploité la fonction de rappel ajoutée dans la fonction transfer du Token personnalisé, appelant à nouveau la fonction depositAsset avant la mise à jour de curBalance, ce qui a conduit à une mise à jour incorrecte de curBalance. Finalement, après avoir remboursé le prêt éclair, l'attaquant a pu retirer des fonds supplémentaires via la fonction withdraw.

Analyse des attaques par réentrance de OrionProtocol avec PoC

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Analyse d'attaque par réinjection OrionProtocol avec PoC

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Analyse d'attaque par réentrance d'OrionProtocol avec PoC

Analyse des attaques par réentrance d'OrionProtocol avec PoC

Conseils de prévention

Pour prévenir des attaques similaires, il est conseillé aux équipes de projet de prêter attention aux points suivants lors de la conception des contrats :

  1. Prenez en compte les situations imprévues qui peuvent découler de divers tokens et de multiples chemins d'échange.
  2. Suivre le modèle de codage "Vérifications-Effects-Interactions" (Checks-Effects-Interactions), c'est-à-dire d'abord effectuer les vérifications de conditions, puis mettre à jour les variables d'état, et enfin exécuter les appels externes.
  3. Utilisez des verrous de réentrance avant et après les opérations critiques pour prévenir les attaques par réentrance.
  4. Vérifier la sécurité des contrats Token appelés par des tiers.
  5. Effectuer régulièrement des audits de code et des tests de sécurité pour détecter et corriger rapidement les vulnérabilités potentielles.

En prenant ces mesures, le projet peut considérablement améliorer la sécurité et la stabilité des contrats, tout en minimisant le risque d'attaques.

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 7
  • Partager
Commentaire
0/400
AirdropHunterXiaovip
· Il y a 12h
Le projet Blockchain a encore été exploité.
Voir l'originalRépondre0
MemecoinResearchervip
· Il y a 12h
ngmi... semble que la malédiction de la réentrance frappe encore fr fr
Voir l'originalRépondre0
NightAirdroppervip
· Il y a 12h
C'est vraiment triste d'être harcelé tous les jours.
Voir l'originalRépondre0
rugpull_survivorvip
· Il y a 12h
prendre les gens pour des idiots encore une fois
Voir l'originalRépondre0
LightningLadyvip
· Il y a 12h
Les compétences en codage sont plutôt bonnes.
Voir l'originalRépondre0
PrivacyMaximalistvip
· Il y a 12h
Un autre projet de Rug Pull.
Voir l'originalRépondre0
NotFinancialAdviservip
· Il y a 12h
Un autre projet a été arnaqué.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)