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.
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 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.
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.
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 :
Prendre en compte les éventualités que différents types de jetons et chemins d'échange peuvent engendrer.
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.
Mettre en œuvre des mécanismes de sécurité tels que des verrous de réentrance pour prévenir les attaques par réentrance.
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.
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.
20 J'aime
Récompense
20
7
Reposter
Partager
Commentaire
0/400
NftRegretMachine
· 08-09 01:43
Nouvelle attaque de réentrance
Voir l'originalRépondre0
AirDropMissed
· 08-08 20:39
L'auditeur est abasourdi.
Voir l'originalRépondre0
TokenVelocity
· 08-07 01:39
Je suis sans voix, je me suis fait avoir.
Voir l'originalRépondre0
LiquidatedNotStirred
· 08-06 03:45
Les vulnérabilités de réentrance sont vraiment douloureuses.
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.
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 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.
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.
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 :
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.