Analyse de l'incident d'attaque par réinjection d'OrionProtocol
Le 2 février 2023, l'project 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 totale d'environ 2,9 millions de dollars d'actifs cryptographiques, y compris 2 844 766 USDT (Ethereum) et 191 606 BUSD (BSC).
Analyse du processus d'attaque
L'attaquant a d'abord déployé un contrat de Token personnalisé et a effectué les opérations de transfert et d'autorisation correspondantes pour préparer l'attaque ultérieure. Ensuite, l'attaquant a emprunté des fonds via la fonction de swap d'un certain échange décentralisé, et a appelé la méthode ExchangeWithAtomic.swapThroughOrionPool d'OrionProtocol pour échanger des tokens. Le chemin d'échange est fixé à USDC → Token personnalisé de l'attaquant → USDT.
Au cours du processus d'échange, un attaquant a utilisé la fonction de rappel dans le contrat Token personnalisé pour appeler de manière répétée la méthode ExchangeWithAtomic.depositAsset, entraînant l'accumulation du montant déposé. Finalement, l'attaquant a réalisé un profit par le biais d'opérations de retrait.
Flux de fonds
Les fonds initiaux de l'attaquant proviennent d'un portefeuille chaud d'une grande plateforme d'échange. Sur les 1 651 ETH réalisés, 657,5 ETH restent dans le portefeuille de l'attaquant, tandis que le reste a été transféré via un outil de mélange.
Analyse des vulnérabilités
Le problème central réside dans la fonction doSwapThroughOrionPool du contrat ExchangeWithAtomic. Cette fonction met à jour la variable curBalance après l'exécution du 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é, appelant de manière répétée la fonction depositAsset, ce qui entraîne une mise à jour incorrecte de curBalance. Finalement, après avoir remboursé le prêt éclair, l'attaquant a extrait des fonds excédentaires via la fonction withdraw.
Conseils de prévention
Le développement de contrats devrait suivre le modèle "Checks-Effects-Interactions", évitant ainsi les appels externes avant la mise à jour de l'état.
Lors de la mise en œuvre de la fonction d'échange de tokens, il est nécessaire de prendre en compte les risques de sécurité potentiels liés aux différents types de tokens et aux chemins d'échange.
Ajouter des mécanismes de sécurité tels que des verrous de réentrance pour prévenir les attaques par réentrance.
Mettre en œuvre des contrôles d'accès et des mesures de limitation pour les opérations clés.
Effectuer un audit de sécurité complet, en mettant particulièrement l'accent sur les fonctionnalités clés liées aux opérations de fonds.
Cet événement souligne à nouveau l'importance de la sécurité des contrats intelligents. Les équipes de projet doivent continuer à se concentrer sur la sécurité des contrats, effectuer des audits de code réguliers et corriger les vulnérabilités pour garantir la sécurité des actifs des utilisateurs. En même temps, les utilisateurs doivent rester vigilants lorsqu'ils participent à de nouveaux projets, en prêtant attention à l'état de sécurité du projet et aux rapports d'audit.
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.
13 J'aime
Récompense
13
6
Reposter
Partager
Commentaire
0/400
ShamedApeSeller
· 07-24 12:02
Encore un refroidissement.
Voir l'originalRépondre0
CoffeeOnChain
· 07-24 09:46
Pas de vérification des contrats ? Ça mérite d'être exploité.
Voir l'originalRépondre0
FlippedSignal
· 07-23 09:34
Encore une fois, je me suis fait hacker.
Voir l'originalRépondre0
SchrodingersFOMO
· 07-23 09:26
Tu n'as pas encore fini de trader les jetons et ça a déjà explosé ?
Voir l'originalRépondre0
ETHReserveBank
· 07-23 09:25
Encore un expert en 0day en ligne pour des cours.
Voir l'originalRépondre0
FlatlineTrader
· 07-23 09:15
Vous ne savez toujours pas comment prévenir les attaques par réinjection ? C'est vraiment nul.
OrionProtocol a subi une attaque par réentrance, perdant 2,9 millions de dollars en chiffrement d'actifs.
Analyse de l'incident d'attaque par réinjection d'OrionProtocol
Le 2 février 2023, l'project 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 totale d'environ 2,9 millions de dollars d'actifs cryptographiques, y compris 2 844 766 USDT (Ethereum) et 191 606 BUSD (BSC).
Analyse du processus d'attaque
L'attaquant a d'abord déployé un contrat de Token personnalisé et a effectué les opérations de transfert et d'autorisation correspondantes pour préparer l'attaque ultérieure. Ensuite, l'attaquant a emprunté des fonds via la fonction de swap d'un certain échange décentralisé, et a appelé la méthode ExchangeWithAtomic.swapThroughOrionPool d'OrionProtocol pour échanger des tokens. Le chemin d'échange est fixé à USDC → Token personnalisé de l'attaquant → USDT.
Au cours du processus d'échange, un attaquant a utilisé la fonction de rappel dans le contrat Token personnalisé pour appeler de manière répétée la méthode ExchangeWithAtomic.depositAsset, entraînant l'accumulation du montant déposé. Finalement, l'attaquant a réalisé un profit par le biais d'opérations de retrait.
Flux de fonds
Les fonds initiaux de l'attaquant proviennent d'un portefeuille chaud d'une grande plateforme d'échange. Sur les 1 651 ETH réalisés, 657,5 ETH restent dans le portefeuille de l'attaquant, tandis que le reste a été transféré via un outil de mélange.
Analyse des vulnérabilités
Le problème central réside dans la fonction doSwapThroughOrionPool du contrat ExchangeWithAtomic. Cette fonction met à jour la variable curBalance après l'exécution du 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é, appelant de manière répétée la fonction depositAsset, ce qui entraîne une mise à jour incorrecte de curBalance. Finalement, après avoir remboursé le prêt éclair, l'attaquant a extrait des fonds excédentaires via la fonction withdraw.
Conseils de prévention
Le développement de contrats devrait suivre le modèle "Checks-Effects-Interactions", évitant ainsi les appels externes avant la mise à jour de l'état.
Lors de la mise en œuvre de la fonction d'échange de tokens, il est nécessaire de prendre en compte les risques de sécurité potentiels liés aux différents types de tokens et aux chemins d'échange.
Ajouter des mécanismes de sécurité tels que des verrous de réentrance pour prévenir les attaques par réentrance.
Mettre en œuvre des contrôles d'accès et des mesures de limitation pour les opérations clés.
Effectuer un audit de sécurité complet, en mettant particulièrement l'accent sur les fonctionnalités clés liées aux opérations de fonds.
Cet événement souligne à nouveau l'importance de la sécurité des contrats intelligents. Les équipes de projet doivent continuer à se concentrer sur la sécurité des contrats, effectuer des audits de code réguliers et corriger les vulnérabilités pour garantir la sécurité des actifs des utilisateurs. En même temps, les utilisateurs doivent rester vigilants lorsqu'ils participent à de nouveaux projets, en prêtant attention à l'état de sécurité du projet et aux rapports d'audit.