OrionProtocol a subi une attaque par réentrance entraînant une perte de 2,9 millions de dollars. Analyse des vulnérabilités de sécurité et recommandations de prévention.

robot
Création du résumé en cours

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

Le 2 février 2023 après-midi, Orion Protocol sur Ethereum et Binance a subi une attaque par réentrance en raison d'une vulnérabilité de contrat, entraînant une perte d'environ 2,9 millions de dollars, dont 2 844 766 USDT sur Ethereum et 191 606 BUSD sur BSC.

Analyse du processus d'attaque

L'attaquant a d'abord créé un contrat de Token, puis a effectué des opérations de transfert et d'autorisation pour préparer l'attaque ultérieure. Ensuite, l'attaquant a emprunté en utilisant la méthode swap de UNI-V2 et a appelé la méthode swapThroughOrionPool du contrat ExchangeWithAtomic pour échanger des tokens. Le chemin d'échange est défini comme [USDC, le Token créé par l'attaquant, USDT].

Dans le processus d'échange, en raison de la fonction de rappel existant dans le contrat Token créé par l'attaquant, l'attaquant a pu rappeler la méthode ExchangeWithAtomic.depositAsset via Token.Transfer, réalisant ainsi une attaque par réentrées. Cela a conduit à une accumulation continue du montant déposé, et finalement, l'attaquant a réalisé un profit par le biais d'opérations de retrait.

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

Flux de capitaux

Les fonds initiaux de l'attaquant proviennent du compte de portefeuille chaud d'une plateforme de trading. Parmi les 1651 ETH de bénéfice, 657,5 ETH sont toujours dans l'adresse de portefeuille de l'attaquant, le reste ayant é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 met à jour la variable curBalance après l'exécution du transfert de jetons, ce qui crée une opportunité pour l'attaquant. L'attaquant a ajouté une fonction de rappel dans la fonction transfer de faux jetons, appelant la fonction depositAsset, ce qui entraîne une mise à jour incorrecte de curBalance. En fin de compte, après avoir remboursé le prêt éclair, l'attaquant a retiré des fonds excessifs via la fonction withdraw.

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éentrée d'OrionProtocol avec PoC

Analyse de l'attaque par réinjection OrionProtocol avec PoC

Reproduction de l'attaque

Les chercheurs ont fourni une partie du code POC, simulant le processus d'attaque. Les résultats des tests montrent que l'attaquant a réussi à exploiter la vulnérabilité du contrat pour obtenir des USDT supplémentaires.

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 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 sécurité

Pour les projets ayant une fonction d'échange de tokens, il est nécessaire de prendre en compte les risques de sécurité potentiels liés à la diversité des tokens et des chemins d'échange. Il est recommandé de suivre la norme de codage "d'abord évaluer, puis écrire dans les variables, puis effectuer les appels externes" (modèle Checks-Effects-Interactions), afin d'améliorer la sécurité et la stabilité des contrats. De plus, les équipes de projet devraient, autant que possible, éliminer les risques des contrats hors chaîne, afin d'assurer le bon fonctionnement sécurisé de l'écosystème Web3.

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
VirtualRichDreamvip
· 07-15 08:57
Eh, qui va vérifier si c'est un traître qui a fait ça.
Voir l'originalRépondre0
HallucinationGrowervip
· 07-12 12:30
Qu'est-ce que vous avez fait sans le travail de sécurité?
Voir l'originalRépondre0
degenonymousvip
· 07-12 12:23
Les contrats ont généralement de nombreuses failles.
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)