OrionProtocol a subi une attaque par réentrance entraînant des pertes de près de 3 millions de dollars
Le 2 février 2023, le contrat Orion Protocol sur Ethereum et la chaîne Binance a subi une attaque par réentrance en raison d'une vulnérabilité de sécurité. Les attaquants ont réussi à voler environ 2,9 millions de dollars d'actifs cryptographiques, dont 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 de Token personnalisé et a effectué les préparatifs nécessaires. Ensuite, l'attaquant a emprunté des fonds via 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 incluait l'adresse du contrat Token créé par l'attaquant, ce qui a ouvert la voie à l'attaque de rappel ultérieure.
Lors du processus d'échange, en raison de la logique de rappel contenue dans le contrat Token de l'attaquant, chaque opération de transfert déclenche un appel de réentrée à la méthode depositAsset du contrat ExchangeWithAtomic. Cela entraîne une addition incorrecte du montant déposé, permettant finalement à l'attaquant de retirer des fonds supérieurs à son montant de dépôt réel.
Origine de la vulnérabilité
Le problème central réside dans les fonctions doSwapThroughOrionPool et _doSwapTokens du contrat ExchangeWithAtomic. Ces fonctions mettent à jour la variable curBalance après avoir exécuté le transfert de jetons, mais n'ont pas de mesures pour prévenir les attaques par réentrance. Un attaquant exploite la fonction de rappel transfer du Token personnalisé pour appeler la méthode depositAsset, ce qui entraîne une mise à jour incorrecte de curBalance, permettant ainsi le retrait de fonds excessifs après le remboursement d'un prêt flash.
Flux de fonds
Les fonds initiaux de l'attaquant proviennent d'un portefeuille chaud d'une plateforme d'échange. Sur les 1 651 ETH de bénéfices de l'attaque, 657,5 ETH restent dans l'adresse de portefeuille de l'attaquant, le reste ayant été transféré via un service de mélange.
Conseils de sécurité
Pour prévenir des attaques similaires, l'équipe du projet doit prêter attention aux points suivants :
Lors de la mise en œuvre de la fonction d'échange de monnaie numérique, il est nécessaire de prendre en compte les risques de sécurité potentiels liés aux différents types de Token et aux chemins d'échange.
Suivez le modèle "Vérifications-Effets-Interactions" (Checks-Effects-Interactions) lors de la rédaction du code de contrat, c'est-à-dire effectuer d'abord les vérifications des conditions, puis mettre à jour les variables d'état, et enfin interagir avec des contrats externes.
Utiliser des verrous de réentrées ou des mécanismes similaires dans les fonctions clés pour prévenir les attaques par réentrées.
Pour les appels externes, en particulier ceux impliquant des transferts de fonds, il convient d'être particulièrement prudent et d'envisager d'utiliser le mode de paiement pull au lieu du paiement push.
Effectuer des audits de sécurité réguliers pour détecter et corriger rapidement les vulnérabilités potentielles.
En prenant ces mesures, il est possible d'améliorer considérablement la sécurité des contrats intelligents et de réduire le risque d'attaques. Dans l'écosystème Web3, la sécurité doit toujours être une priorité.
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.
11 J'aime
Récompense
11
4
Partager
Commentaire
0/400
TokenTherapist
· Il y a 17h
Quelqu'un a encore des idées noires ?
Voir l'originalRépondre0
LiquidatorFlash
· Il y a 17h
La vulnérabilité de réentrance est vraiment le premier tueur des pertes Defi...
Voir l'originalRépondre0
0xLuckbox
· Il y a 17h
Pourquoi cela a-t-il encore été volé cette année ?
Voir l'originalRépondre0
TokenSherpa
· Il y a 17h
*sigh* encore un protocole échouant aux vérifications de réentrance de base... historiquement parlant, cela était évitable
OrionProtocol a subi une attaque par réentrance, près de 3 millions de dollars d'actifs ont été volés.
OrionProtocol a subi une attaque par réentrance entraînant des pertes de près de 3 millions de dollars
Le 2 février 2023, le contrat Orion Protocol sur Ethereum et la chaîne Binance a subi une attaque par réentrance en raison d'une vulnérabilité de sécurité. Les attaquants ont réussi à voler environ 2,9 millions de dollars d'actifs cryptographiques, dont 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 de Token personnalisé et a effectué les préparatifs nécessaires. Ensuite, l'attaquant a emprunté des fonds via 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 incluait l'adresse du contrat Token créé par l'attaquant, ce qui a ouvert la voie à l'attaque de rappel ultérieure.
Lors du processus d'échange, en raison de la logique de rappel contenue dans le contrat Token de l'attaquant, chaque opération de transfert déclenche un appel de réentrée à la méthode depositAsset du contrat ExchangeWithAtomic. Cela entraîne une addition incorrecte du montant déposé, permettant finalement à l'attaquant de retirer des fonds supérieurs à son montant de dépôt réel.
Origine de la vulnérabilité
Le problème central réside dans les fonctions doSwapThroughOrionPool et _doSwapTokens du contrat ExchangeWithAtomic. Ces fonctions mettent à jour la variable curBalance après avoir exécuté le transfert de jetons, mais n'ont pas de mesures pour prévenir les attaques par réentrance. Un attaquant exploite la fonction de rappel transfer du Token personnalisé pour appeler la méthode depositAsset, ce qui entraîne une mise à jour incorrecte de curBalance, permettant ainsi le retrait de fonds excessifs après le remboursement d'un prêt flash.
Flux de fonds
Les fonds initiaux de l'attaquant proviennent d'un portefeuille chaud d'une plateforme d'échange. Sur les 1 651 ETH de bénéfices de l'attaque, 657,5 ETH restent dans l'adresse de portefeuille de l'attaquant, le reste ayant été transféré via un service de mélange.
Conseils de sécurité
Pour prévenir des attaques similaires, l'équipe du projet doit prêter attention aux points suivants :
Lors de la mise en œuvre de la fonction d'échange de monnaie numérique, il est nécessaire de prendre en compte les risques de sécurité potentiels liés aux différents types de Token et aux chemins d'échange.
Suivez le modèle "Vérifications-Effets-Interactions" (Checks-Effects-Interactions) lors de la rédaction du code de contrat, c'est-à-dire effectuer d'abord les vérifications des conditions, puis mettre à jour les variables d'état, et enfin interagir avec des contrats externes.
Utiliser des verrous de réentrées ou des mécanismes similaires dans les fonctions clés pour prévenir les attaques par réentrées.
Pour les appels externes, en particulier ceux impliquant des transferts de fonds, il convient d'être particulièrement prudent et d'envisager d'utiliser le mode de paiement pull au lieu du paiement push.
Effectuer des audits de sécurité réguliers pour détecter et corriger rapidement les vulnérabilités potentielles.
En prenant ces mesures, il est possible d'améliorer considérablement la sécurité des contrats intelligents et de réduire le risque d'attaques. Dans l'écosystème Web3, la sécurité doit toujours être une priorité.