Analyse de l'incident d'attaque par réentrance d'OrionProtocol
Le 2 février 2023, l'OrionProtocol sur Ethereum et Binance Smart Chain 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. L'attaquant a exploité la fonction de rappel du contrat de jeton qu'il a créé, en appelant de manière répétée la fonction de dépôt au cours de la transaction, ce qui a entraîné un retrait de fonds après une accumulation incorrecte.
Processus d'attaque
L'attaquant a d'abord créé un contrat de Token personnalisé et a effectué les opérations de transfert et d'autorisation nécessaires.
Token créé par l'attaquant
Pendant le processus d'échange, le contrat Token de l'attaquant utilise la fonction transfer pour déclencher un rappel, appelant plusieurs fois la fonction ExchangeWithAtomic.depositAsset, ce qui entraîne une accumulation incorrecte du montant du dépôt.
Enfin, l'attaquant extrait des fonds excessifs via la fonction withdraw, complétant ainsi l'attaque.
Analyse des vulnérabilités
La vulnérabilité se trouve principalement dans les fonctions doSwapThroughOrionPool et _doSwapTokens du contrat ExchangeWithAtomic. Le problème clé est le suivant :
La variable curBalance n'est mise à jour qu'après l'exécution du transfert dans le contrat.
Incapacité à prévenir efficacement les attaques par réentrance, permettant l'exécution de fonctions de rappel pendant le processus de transfert.
Cela permet aux attaquants d'appeler de manière répétée la fonction depositAsset avant que curBalance ne soit mis à jour, entraînant des erreurs de calcul des fonds.
Impact des attaques
Perte de 2 844 766 USDT sur la chaîne Ethereum
Perte de 191 606 BUSD sur la chaîne intelligente Binance
Environ 2,9 millions de dollars
Flux de fonds
Parmi les 1 651 ETH profitant à l'attaquant, 657,5 ETH sont toujours dans l'adresse du portefeuille, le reste ayant été transféré via un service de mélange. Les fonds initiaux proviennent d'un compte de portefeuille chaud d'une plateforme d'échange.
Conseils de sécurité
Rédigez des contrats intelligents en suivant strictement le modèle "Vérifications-Effects-Interactions" (Checks-Effects-Interactions).
Implémenter un verrou de réentrance pour empêcher l'appel répété d'une fonction pendant son exécution.
Lors de l'échange de tokens, envisagez les différents types de tokens et les chemins d'échange possibles, et préparez-vous à gérer les situations exceptionnelles.
Effectuer des audits de sécurité des contrats intelligents régulièrement pour détecter et corriger rapidement les vulnérabilités potentielles.
Cet événement rappelle une fois de plus aux équipes de projet qu'elles doivent accorder une grande importance à la sécurité lors du développement de contrats intelligents impliquant des interactions financières, en prenant des mesures de protection complètes pour réduire au maximum les risques liés aux contrats.
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
8
Partager
Commentaire
0/400
AirdropHustler
· 07-18 17:53
Zut, ce smart contracts est aussi fragile que du papier.
Voir l'originalRépondre0
MerkleDreamer
· 07-18 06:45
Encore volé ? Je ne suis plus surpris.
Voir l'originalRépondre0
rekt_but_resilient
· 07-16 11:57
Encore encore encore été retiré 290w
Voir l'originalRépondre0
LiquidationWatcher
· 07-15 21:48
Encore une attaque par réentrance, tu n'apprends pas bien.
Voir l'originalRépondre0
ForkTongue
· 07-15 21:48
Tous les projets fiables ont explosé. Quand cela va-t-il s'arrêter ?
Voir l'originalRépondre0
OnchainFortuneTeller
· 07-15 21:44
Ça fait tant d'années que le bug n'est toujours pas corrigé ?
Voir l'originalRépondre0
AirdropChaser
· 07-15 21:38
Encore un piège pour se faire prendre pour des cons.
OrionProtocol a subi une attaque par réentrance, entraînant une perte de 2,9 millions de dollars. Les chaînes ETH et BSC sont affectées.
Analyse de l'incident d'attaque par réentrance d'OrionProtocol
Le 2 février 2023, l'OrionProtocol sur Ethereum et Binance Smart Chain 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. L'attaquant a exploité la fonction de rappel du contrat de jeton qu'il a créé, en appelant de manière répétée la fonction de dépôt au cours de la transaction, ce qui a entraîné un retrait de fonds après une accumulation incorrecte.
Processus d'attaque
Token créé par l'attaquant
Pendant le processus d'échange, le contrat Token de l'attaquant utilise la fonction transfer pour déclencher un rappel, appelant plusieurs fois la fonction ExchangeWithAtomic.depositAsset, ce qui entraîne une accumulation incorrecte du montant du dépôt.
Enfin, l'attaquant extrait des fonds excessifs via la fonction withdraw, complétant ainsi l'attaque.
Analyse des vulnérabilités
La vulnérabilité se trouve principalement dans les fonctions doSwapThroughOrionPool et _doSwapTokens du contrat ExchangeWithAtomic. Le problème clé est le suivant :
Cela permet aux attaquants d'appeler de manière répétée la fonction depositAsset avant que curBalance ne soit mis à jour, entraînant des erreurs de calcul des fonds.
Impact des attaques
Flux de fonds
Parmi les 1 651 ETH profitant à l'attaquant, 657,5 ETH sont toujours dans l'adresse du portefeuille, le reste ayant été transféré via un service de mélange. Les fonds initiaux proviennent d'un compte de portefeuille chaud d'une plateforme d'échange.
Conseils de sécurité
Cet événement rappelle une fois de plus aux équipes de projet qu'elles doivent accorder une grande importance à la sécurité lors du développement de contrats intelligents impliquant des interactions financières, en prenant des mesures de protection complètes pour réduire au maximum les risques liés aux contrats.