OrionProtocol subit une attaque par réentrée, perte de 2,9 millions de dollars, analyse des conseils de sécurité

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 sur Ethereum et Binance Smart Chain a subi une attaque par réentrance en raison d'une vulnérabilité dans le contrat, avec une perte totale d'environ 2,9 millions de dollars, y compris 2 844 766 USDT sur Ethereum et 191 606 BUSD sur BSC.

Analyse du processus d'attaque

L'attaquant a d'abord déployé un contrat Token sur mesure et a effectué des opérations de transfert et d'autorisation pour préparer l'attaque ultérieure. Ensuite, l'attaquant a réalisé un emprunt via la méthode swap d'un certain DEX et a appelé la méthode ExchangeWithAtomic.swapThroughOrionPool pour l'échange de tokens. Le chemin d'échange a été défini comme USDC → Token de l'attaquant → USDT.

Lors de l'exécution de la méthode ExchangeWithAtomic.swapThroughOrionPool, en raison de la présence d'une fonction de rappel dans le contrat Token de l'attaquant, la méthode ExchangeWithAtomic.depositAsset a été rappelée pendant le processus de Token.Transfer, ce qui a permis une attaque par réentrance. Cela a entraîné une accumulation répétée du montant du dépôt, permettant finalement à l'attaquant de réaliser un profit excessif grâce à des opérations de retrait.

Analyse des attaques par réentrée d'OrionProtocol avec PoC

Flux de fonds

Les fonds initiaux de l'attaquant proviennent du portefeuille chaud d'une certaine plateforme de trading. Parmi les 1 651 ETH de gains de l'attaque, 657,5 ETH sont toujours dans l'adresse du portefeuille de l'attaquant, le reste ayant été transféré via un service de mixage.

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

Analyse des vulnérabilités

La vulnérabilité principale réside dans les fonctions doSwapThroughOrionPool et _doSwapTokens. Le problème clé est que le contrat met à jour la variable curBalance uniquement après un transfert de jetons, ce qui crée des conditions propices à une attaque par réentrance. L'attaquant ajoute une logique de rappel dans la fonction transfer du Token personnalisé, ce qui entraîne un nouvel appel à la fonction depositAsset pendant le processus de transfert, entraînant une mise à jour incorrecte de curBalance.

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 la vulnérabilité

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é 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 de l'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

Conseils de sécurité

  1. Lors du développement d'un contrat, il convient de suivre strictement le modèle "Vérifications-Effects-Interactions" (Checks-Effects-Interactions), c'est-à-dire d'effectuer d'abord des vérifications d'état, puis de mettre à jour l'état du contrat, et enfin d'interagir avec des contrats externes.

  2. Lors de la mise en œuvre de la fonctionnalité d'échange de jetons, il est nécessaire de prendre en compte les risques de sécurité que peuvent entraîner les multiples jetons et chemins d'échange.

  3. Pour les fonctions clés impliquant des opérations financières, il convient d'implémenter un verrou de réentrance ou d'utiliser des bibliothèques de sécurité telles que ReentrancyGuard d'OpenZeppelin.

  4. Effectuer régulièrement des audits de code et des évaluations de sécurité pour détecter et corriger rapidement les vulnérabilités potentielles.

  5. Envisagez d'introduire des mécanismes tels que des limites de montant de transaction ou des verrous temporels pour réduire les pertes potentielles causées par une attaque unique.

En prenant ces mesures, l'équipe du projet peut efficacement améliorer la sécurité des contrats intelligents et réduire le risque d'être victime d'attaques similaires.

TOKEN17.65%
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
ContractFreelancervip
· 07-29 23:53
C'est encore une attaque de réentrance, ça m'énerve.
Voir l'originalRépondre0
GasFeeCryvip
· 07-29 23:52
Encore donner de l'argent aux hackers.
Voir l'originalRépondre0
JustHereForAirdropsvip
· 07-29 23:40
Encore 290w de perdu, triste
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)