OrionProtocol a subi une attaque par réentrance, entraînant la perte de 2,9 millions de dollars en chiffrement d'actifs.

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

Le 2 février 2023, un certain plateforme DEX a subi une attaque par réinjection sur Ethereum et la Binance Smart Chain en raison d'un défaut de contrat, entraînant une perte totale d'environ 2,9 millions de dollars d'actifs cryptographiques, y compris 2 844 766 USDT sur Ethereum et 191 606 BUSD sur la Binance Smart Chain.

Aperçu du processus d'attaque

L'attaquant a d'abord déployé un contrat de jeton sur mesure et a effectué des opérations de transfert et d'autorisation connexes. Ensuite, l'attaquant a emprunté des fonds via la fonction d'échange d'un certain DEX et a appelé la méthode swapThroughOrionPool de la plateforme cible pour échanger des jetons. Le chemin d'échange contenait l'adresse du contrat de jeton créé par l'attaquant, ce qui a permis à l'attaquant d'exécuter une opération de rappel pendant le processus de transaction.

Au cours du processus d'échange, un attaquant a exploité la fonction de rappel dans le contrat de jeton qu'il a créé, appelant de manière répétée la méthode depositAsset de la plateforme cible, ce qui a entraîné une accumulation du montant déposé. Finalement, l'attaquant a réalisé un profit en effectuant une opération de retrait.

Analyse des attaques par réinsertion d'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 sont toujours dans le portefeuille de l'attaquant, tandis que le reste a été transféré via un service de mélange.

Analyse des attaques par réinsertion 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 avoir exécuté le transfert de jetons, mais ne prend pas en compte le risque potentiel d'attaque par réentrée. L'attaquant a réussi à réaliser un appel de réentrée à la fonction depositAsset en ajoutant une logique de rappel dans la fonction transfer du jeton personnalisé, ce qui a conduit à une mise à jour incorrecte de la variable curBalance.

Analyse d'attaque 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

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

Reproduction de l'attaque

Les chercheurs ont réussi à reproduire le processus d'attaque et ont fourni le code POC correspondant. Les résultats des tests montrent que les attaquants peuvent obtenir des fonds supplémentaires en exploitant les vulnérabilités des contrats.

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

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

Analyse des attaques de réentrance OrionProtocol avec PoC

Conseils de sécurité

Pour les contrats intelligents ayant une fonction d'échange de jetons, les développeurs doivent prendre en compte les points suivants :

  1. Prendre en compte les éventualités que différents types de jetons et chemins d'échange peuvent engendrer.
  2. Suivez le modèle de codage "Vérifications-Effects-Interactions" (Checks-Effects-Interactions), c'est-à-dire d'abord effectuer une vérification de l'état, puis mettre à jour l'état du contrat, et enfin interagir avec des contrats externes.
  3. Mettre en œuvre des mécanismes de sécurité tels que des verrous de réentrance pour prévenir les attaques par réentrance.
  4. Pour les appels externes, en particulier ceux impliquant des opérations de transfert de fonds, il convient d'être particulièrement prudent et de procéder à un audit de sécurité complet.

En prenant ces mesures, le risque d'attaques sur les contrats intelligents peut être considérablement réduit, augmentant ainsi la sécurité et la stabilité du projet. Dans l'écosystème Web3, garantir la sécurité des contrats est essentiel pour maintenir la confiance des utilisateurs et la sécurité des actifs.

ETH2.06%
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
  • 7
  • Reposter
  • Partager
Commentaire
0/400
NftRegretMachinevip
· 08-09 01:43
Nouvelle attaque de réentrance
Voir l'originalRépondre0
AirDropMissedvip
· 08-08 20:39
L'auditeur est abasourdi.
Voir l'originalRépondre0
TokenVelocityvip
· 08-07 01:39
Je suis sans voix, je me suis fait avoir.
Voir l'originalRépondre0
LiquidatedNotStirredvip
· 08-06 03:45
Les vulnérabilités de réentrance sont vraiment douloureuses.
Voir l'originalRépondre0
NFT_Therapyvip
· 08-06 03:36
Encore une vulnérabilité de contrat
Voir l'originalRépondre0
GateUser-40edb63bvip
· 08-06 03:29
Encore un piraté
Voir l'originalRépondre0
NotGonnaMakeItvip
· 08-06 03:24
Encore des pigeons.
Voir l'originalRépondre0
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)