Plus de 7,5 M$ perdus dans une attaque de piège à bot MEV : analyse et traçage des fonds

icon MarsBit
Partager
AI summary iconRésumé

Le 21 juin, l'un des bots MEV les plus actifs sur le réseau Ethereum, Jaredfromsubway.eth, a été victime d'une attaque de « honeypot » soigneusement conçue, perdant plus de 7,5 millions de dollars en actifs cryptographiques. Voici l'analyse et le suivi des flux de fonds volés réalisés par l'équipe de sécurité Beosin.

Analyse du processus d'attaque

Attaque de la famille de contrats

- Contrat coordinateur (0xb84db016324e8f2bfdd8dd9c260338aee0a8df52) : responsable de l'enregistrement de l'état armed du bloc courant et d'appeler en boucle les contrats enfants à la phase finale pour extraire les fonds. - Contrat déclencheur (0x4de8c729a064ff6087cc84a4152969349e4feb98) : responsable de définir, dans le même bloc, un état falsifié pour les paires de trading, rendant les chemins d'arbitrage apparemment exécutables. - Contrats enfants / contrats de jetons falsifiés : se présentent comme des jetons ERC-20 normaux pour obtenir des autorisations réelles. - Contrat Hub : responsable du paiement de petits rendements réels afin de rendre l'opération attrayante pour les MEV Bots. - Paire Ring V2 : paire Uniswap v2 falsifiée. - Contrat de jeton intermédiaire falsifié : utilisé pour construire des chemins d'arbitrage à plusieurs étapes, tels que fCAP, fUSDC.

L'élément clé de l'attaque : tromper l'autorisation

En analysant les transactions sur la chaîne, l'attaquant a créé plusieurs jeux de transactions pièges :

- Grand volume USDC : le robot a généré un profit d'environ 36,997120 USDC, mais a laissé 20 USDC autorisés. - Grand volume USDT : le robot a généré un profit d'environ 37,053440 USDT, mais a laissé 20 USDT autorisés. - Grand volume WETH : le robot a généré un profit d'environ 0,0179 WETH, mais a laissé 16 WETH autorisés. - Les petites transactions se sont déroulées normalement, avec les autorisations consommées dans la même transaction afin de réduire les soupçons.

Lors de transactions de faible montant, après que le robot ait autorisé un montant réel de jetons, le sous-contrat transfère immédiatement les jetons réels ; l'autorisation est consommée et semble tout à fait normale.

Dans les transactions de grande taille, le sous-contrat n'appelle pas transferFrom pour transférer les jetons réels, mais crée directement des jetons falsifiés en falsifiant la transaction. Le robot pense avoir accompli les étapes préalables normales du swap, mais l'autorisation des jetons réels reste en vigueur.

C'est le cœur même de l'attaque : les petites transactions consomment normalement l'autorisation, tandis que les grandes transactions conservent l'autorisation.

Processus d'attaque

Par exemple, avec une transaction d'attaque ciblant USDC :

(1) L'attaquant appelle le coordinateur pour définir le bloc courant comme armed. (2) L'attaquant appelle le déclencheur pour mettre à jour l'état de plusieurs paires Ring V2 falsifiées. (3) Le MEV Bot détecte une opportunité d'arbitrage et exécute la transaction.

Le processus interne du bot MEV est le suivant :

(1) Le contrat MEV Bot a autorisé un montant important d’USDC à un sous-contrat. (2) Le contrat MEV Bot appelle la fonction wrapTo/wrap du sous-contrat. (3) Le sous-contrat, étant dans un état armed, ne consomme pas d’USDC réel, mais émet des jetons falsifiés vers le pair ; l’autorisation d’USDC est conservée. (4) Le contrat MEV Bot continue d’appeler le swap du pair falsifié. (5) Le second pair envoie les jetons au contrat MEV Bot. (6) Le contrat hub paie au contrat MEV Bot un petit profit en USDC réel.

Image

exemple d'approbation

tx hash : 0x0121e07a916c06eea3e7daf11893f3f0b95b9e1684124545ae14c32aee6029bb

Résultat vu par le MEV Bot : une opération d'arbitrage réussie générant un profit réel en USDC. Toutefois, l'autorisation USDC a été conservée par le sous-contrat. Ce processus est répété séparément pour USDC, USDT et WETH, aboutissant à un grand nombre d'autorisations.

L'hash de la transaction attaquée est :

0x2be8704f5a59b69e0b71f64aefdb99eb0e8ae9fb3926147c581910d71bcf3e65

L'attaquant appelle la boucle drain du contrat coordinateur, avec dans les données d'appel 66 adresses de contrats enfants ainsi que l'adresse du contrat MEV Bot. Dès lors que le contrat MEV Bot a précédemment accordé un quota d'autorisation aux contrats enfants, ceux-ci peuvent transférer directement les jetons réels correspondants à l'attaquant.

Résultat final :

- 20 autorisations de gros montants USDC ont été entièrement utilisées - 16 autorisations de gros montants WETH ont été entièrement utilisées - Une autorisation partielle de USDT reste en vigueur, mais le solde USDT est insuffisant

Analyse des flux de fonds

Après l'attaque réussie, l'adresse de l'attaquant (0x3e37f4A10d771Ba9dE44b6d301410b1BEdeA65d0) a reçu 2,87 M $USDC, 2,04 M $USDT et 1 474 WETH. Ensuite, l'attaquant a échangé les stablecoins contre de l'ETH et les a transférés vers les 4 adresses suivantes :

- 0xe3Da36E4bd1a5738fa5D6Ef4F0e4dF40bDeB5f17 (environ 1 000 ETH) - 0x74Dc5b93586D248D5Aec64b3586736FF0A0D0e65 (1 001 ETH) - 0xd8C125efCBc99408eC8723E9BBd81d1E8D39D845 (1 001 ETH) - 0x71d4416A7A85e08a5Fe7227Ca3B44Fc639e94e97 (1 423 ETH)

Parmi ceux-ci, 0xe3Da3 a transféré 1 000 ETH vers Tornado Cash, tandis que les trois autres adresses n'ont effectué aucun autre transfert d'ETH. Le flux de fonds est illustré ci-dessous :

Image

Conclusion

Cet attaque démontre une méthode d'attaque hautement sophistiquée : l'attaquant ne cible pas directement le code du contrat, mais exploite la logique métier du MEV Bot en créant des scénarios d'arbitrage spécifiques, ce qui induit en erreur le MEV Bot pour qu'il accorde une autorisation apparemment sans problème, permettant ainsi le transfert de ses actifs. Pour les robots d'arbitrage et les MEV Bots, il ne suffit pas de s'appuyer uniquement sur la simulation des gains pour évaluer la sécurité d'une route ; en particulier lorsque des contrats inconnus, des tokens falsifiés ou des wrappers personnalisés sont impliqués dans la route d'arbitrage, une prudence accrue est nécessaire, et il est recommandé d'effectuer une vérification obligatoire des changements d'autorisation après la transaction.

Voir l'article original

Clause de non-responsabilité : les informations sur cette page peuvent avoir été obtenues auprès de tiers et ne reflètent pas nécessairement les points de vue ou opinions de KuCoin. Ce contenu est fourni à titre informatif uniquement, sans aucune représentation ou garantie d’aucune sorte, et ne doit pas être interprété comme un conseil en investissement. KuCoin ne sera pas responsable des erreurs ou omissions, ni des résultats résultant de l’utilisation de ces informations. Les investissements dans les actifs numériques peuvent être risqués. Veuillez évaluer soigneusement les risques d’un produit et votre tolérance au risque en fonction de votre propre situation financière. Pour plus d’informations, veuillez consulter nos conditions d’utilisation et divulgation des risques.