OrionProtocol a subi une attaque par réentrance de 2,9 millions de dollars : analyse des vulnérabilités et recommandations de prévention.

robot
Création du résumé en cours

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

Vue d'ensemble de l'événement

Selon les données de surveillance en chaîne, le 2 février 2023 à 15h40:20 UTC, OrionProtocol a subi une attaque par réentrance sur Ethereum et Binance Smart Chain en raison d'une vulnérabilité de contrat. L'attaquant a réalisé un bénéfice de 2,844,766 USDT sur le réseau Ethereum et de 191,606 BUSD sur Binance Smart Chain, soit un total d'environ 2,9 millions de dollars.

Analyse des attaques de réentrées d'OrionProtocol avec PoC

Analyse du processus d'attaque

Détails de l'attaque sur la chaîne Ethereum

Token personnalisé

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

Lors du processus d'échange, en raison de la fonction de rappel incluse dans le contrat Token créé par l'attaquant, l'attaquant a pu appeler plusieurs fois la fonction ExchangeWithAtomic.depositAsset via la méthode Token.Transfer pendant l'exécution de ExchangeWithAtomic.swapThroughOrionPool. Cela a entraîné une accumulation continue du montant déposé, permettant finalement à l'attaquant de réaliser un profit par le biais d'opérations de retrait.

Analyse des attaques par réentrance de l'OrionProtocol avec PoC

Flux de fonds

Les fonds initiaux de l'attaquant proviennent d'un portefeuille chaud d'une grande plateforme d'échange. Parmi les 1 651 ETH obtenus par l'attaque, 657,5 ETH restent dans le portefeuille de l'attaquant, tandis que le reste a été transféré via un service de mixage.

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 met à jour la variable curBalance après l'exécution du transfert de jetons, sans suivre le modèle "vérification - effet - interaction" (Checks-Effects-Interactions). Un attaquant exploite le mécanisme de rappel ajouté dans la fonction transfer du Token personnalisé, en appelant de manière répétée la fonction depositAsset avant la mise à jour de curBalance, ce qui entraîne une erreur dans le calcul du solde.

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

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

Analyse des attaques par réinjection 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 des attaques par réentrance d'OrionProtocol avec PoC

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

Conseils de prévention

  1. L'équipe du projet doit prendre en compte les risques de sécurité potentiels liés à différents types de jetons et aux chemins d'échange lors de la conception des contrats impliquant des fonctionnalités d'échange de jetons.

  2. Suivre strictement les spécifications de codage "vérification - effet - interaction", c'est-à-dire d'abord effectuer la vérification des conditions, puis mettre à jour les variables d'état, et enfin exécuter les appels externes.

  3. Pour les fonctions susceptibles de présenter un risque de réentrance, utilisez des mécanismes de protection tels que des verrous de réentrance.

  4. Ajouter une vérification de solde avant et après les opérations clés pour assurer l'atome et la cohérence des transactions.

  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.

  6. Envisagez d'implémenter des limites sur le montant des transactions ou sur la fréquence des transactions pour réduire les pertes causées par une attaque unique.

En prenant ces mesures, le projet peut considérablement améliorer la sécurité des contrats et réduire le risque de subir des attaques similaires. Dans l'écosystème Web3 en pleine évolution, la sécurité devrait toujours être un facteur de préoccupation primordial.

TOKEN-0.56%
ETH2.98%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 3
  • Partager
Commentaire
0/400
Token_Sherpavip
· Il y a 8h
ugh... un autre jour, une autre attaque de réentrance. Quand les développeurs apprendront-ils à vérifier les effets et les interactions, smh
Voir l'originalRépondre0
SmartContractWorkervip
· Il y a 8h
Encore une fois, c'est bien.
Voir l'originalRépondre0
gas_fee_therapistvip
· Il y a 8h
Encore une fois, réentrer, une impasse.
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)