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.
Analyse de l'incident d'attaque par réentrées d'OrionProtocol
Le 2 février 2023 après-midi, OrionProtocol sur Ethereum et Binance Smart Chain a été victime d'une attaque par réinjection en raison d'une vulnérabilité dans le contrat, entraînant des pertes d'environ 2,9 millions de dollars. L'attaquant a exploité la vulnérabilité du contrat en créant un contrat Token spécial pour effectuer des opérations de rappel, réalisant ainsi l'attaque par réinjection.
Analyse du processus d'attaque
L'attaquant a d'abord créé un contrat de Token spécial et a effectué des opérations de transfert et d'autorisation connexes. Ensuite, l'attaquant a emprunté via la méthode swap d'un certain DEX et a appelé la méthode swapThroughOrionPool d'OrionProtocol pour échanger des tokens. Au cours du processus d'échange, l'attaquant a utilisé le contrat de Token qu'il avait créé pour effectuer des rappels, appelant de manière répétée la méthode depositAsset, ce qui a entraîné une accumulation du montant déposé. Finalement, l'attaquant a réalisé des bénéfices grâce à une opération de retrait.
Flux de fonds
Les fonds initiaux de l'attaquant proviennent du compte de portefeuille chaud d'une plateforme d'échange. Parmi les 1651 ETH de bénéfice, 657,5 sont toujours dans l'adresse du portefeuille de l'attaquant, le reste ayant été transféré via un outil de mélange.
Analyse des vulnérabilités
Le problème central réside dans la fonction doSwapThroughOrionPool. Cette fonction met à jour la variable curBalance après l'exécution du transfert de jetons, mais elle ne prend pas en compte le risque potentiel d'attaques par réentrance. Un attaquant peut ajouter une logique de rappel dans la fonction transfer du Token personnalisé, ce qui entraîne une mise à jour incorrecte de curBalance et permet ainsi l'attaque.
Reproduction de l'attaque
Les chercheurs ont fourni une partie du code POC, simulant le processus d'attaque. Les résultats des tests montrent qu'en exploitant les vulnérabilités dans le contrat, ils ont réussi à réaliser des flux de fonds similaires à ceux d'une attaque réelle.
Conseils de sécurité
Lors du développement de contrats, il convient de prendre en compte les risques potentiels pouvant découler de la diversité des tokens et des chemins d'échange.
Suivez la norme de codage "Vérifications-Effects-Interactions" (Checks-Effects-Interactions) : commencez par effectuer des vérifications, puis mettez à jour les variables d'état, et enfin exécutez les appels externes.
Renforcez les mesures de protection contre les attaques par réentrance, telles que l'utilisation de verrouillages de réentrance.
Effectuer un audit de sécurité complet, en prêtant une attention particulière aux fonctions qui pourraient être exploitées pour des attaques par réentrance.
Mettre à jour et optimiser régulièrement le code des contrats, corriger rapidement les vulnérabilités détectées.
Cet événement rappelle une fois de plus aux équipes de projets Web3 l'importance cruciale de la sécurité des contrats intelligents. Les développeurs de contrats doivent être plus prudents dans le traitement des logiques impliquant le transfert de fonds et tenir compte de divers scénarios d'attaque possibles. En outre, la réalisation d'audits de sécurité réguliers et de programmes de récompense pour la découverte de vulnérabilités est également un moyen efficace de garantir la sécurité des projets.
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.
18 J'aime
Récompense
18
7
Partager
Commentaire
0/400
MevTears
· 07-23 02:41
Incapable ! Encore une vieille histoire de réentrance.
Voir l'originalRépondre0
MetaMisery
· 07-21 02:18
Encore une fois, Se faire prendre pour des cons, c'est tragique.
Voir l'originalRépondre0
RetailTherapist
· 07-20 20:40
Il y a encore qui est piégé.
Voir l'originalRépondre0
PositionPhobia
· 07-20 03:55
Encore un échec des smart contracts.
Voir l'originalRépondre0
CryptoTherapist
· 07-20 03:55
pratiquons quelques exercices de respiration consciente avant de déballer ce traumatisme de réentrée
Voir l'originalRépondre0
RektCoaster
· 07-20 03:45
Le classique schéma de réinsertion récursive, un vieux sujet de conversation.
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.
Analyse de l'incident d'attaque par réentrées d'OrionProtocol
Le 2 février 2023 après-midi, OrionProtocol sur Ethereum et Binance Smart Chain a été victime d'une attaque par réinjection en raison d'une vulnérabilité dans le contrat, entraînant des pertes d'environ 2,9 millions de dollars. L'attaquant a exploité la vulnérabilité du contrat en créant un contrat Token spécial pour effectuer des opérations de rappel, réalisant ainsi l'attaque par réinjection.
Analyse du processus d'attaque
L'attaquant a d'abord créé un contrat de Token spécial et a effectué des opérations de transfert et d'autorisation connexes. Ensuite, l'attaquant a emprunté via la méthode swap d'un certain DEX et a appelé la méthode swapThroughOrionPool d'OrionProtocol pour échanger des tokens. Au cours du processus d'échange, l'attaquant a utilisé le contrat de Token qu'il avait créé pour effectuer des rappels, appelant de manière répétée la méthode depositAsset, ce qui a entraîné une accumulation du montant déposé. Finalement, l'attaquant a réalisé des bénéfices grâce à une opération de retrait.
Flux de fonds
Les fonds initiaux de l'attaquant proviennent du compte de portefeuille chaud d'une plateforme d'échange. Parmi les 1651 ETH de bénéfice, 657,5 sont toujours dans l'adresse du portefeuille de l'attaquant, le reste ayant été transféré via un outil de mélange.
Analyse des vulnérabilités
Le problème central réside dans la fonction doSwapThroughOrionPool. Cette fonction met à jour la variable curBalance après l'exécution du transfert de jetons, mais elle ne prend pas en compte le risque potentiel d'attaques par réentrance. Un attaquant peut ajouter une logique de rappel dans la fonction transfer du Token personnalisé, ce qui entraîne une mise à jour incorrecte de curBalance et permet ainsi l'attaque.
Reproduction de l'attaque
Les chercheurs ont fourni une partie du code POC, simulant le processus d'attaque. Les résultats des tests montrent qu'en exploitant les vulnérabilités dans le contrat, ils ont réussi à réaliser des flux de fonds similaires à ceux d'une attaque réelle.
Conseils de sécurité
Cet événement rappelle une fois de plus aux équipes de projets Web3 l'importance cruciale de la sécurité des contrats intelligents. Les développeurs de contrats doivent être plus prudents dans le traitement des logiques impliquant le transfert de fonds et tenir compte de divers scénarios d'attaque possibles. En outre, la réalisation d'audits de sécurité réguliers et de programmes de récompense pour la découverte de vulnérabilités est également un moyen efficace de garantir la sécurité des projets.