Analyse complète de l'attaque sandwich MEV : de l'ordonnancement à la chaîne mortelle des échanges instantanés

Auteur : Daii Source : miroir

Mercredi dernier (12 mars), un trader en cryptomonnaie a perdu 215 000 dollars en raison d'une attaque MEV.

d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png

En termes simples, cet utilisateur souhaitait échanger des stablecoins USDC d'une valeur de 220 800 dollars contre des USDT équivalents dans la piscine de trading Uniswap v3, mais il n'a obtenu que 5 272 USDT, et en quelques secondes, 215 700 dollars d'actifs ont disparu, voir l'image ci-dessous.

yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png

L'image ci-dessus est une capture d'écran des enregistrements de cette transaction sur la chaîne. La raison fondamentale de ce tragique événement est l'attaque de sandwich, tristement célèbre dans le monde de la blockchain.

kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png

La première personne à révéler cette attaque MEV est Michael (voir l'image ci-dessus), qui a expliqué que :

Un bot MEV a anticipé la transaction en échappant toute la liquidité USDC. Après l'exécution de la transaction, ils ont remis la liquidité. L'attaquant a donné un pourboire à un constructeur de blocs (bobTheBuilder) 200k $ et a réalisé un profit de 8k $ grâce à cette transaction.

Traduction : Le robot MEV devance les transactions en échangeant toute la liquidité USDC. Après l'exécution de la transaction, ils remettent la liquidité. L'attaquant a fait un pourboire de 200 000 dollars au constructeur de blocs (bobTheBuilder) et a réalisé un bénéfice de 8 000 dollars sur cette transaction.

Le contenu ci-dessus contient une erreur typographique, le robot d'attaque MEV échange une grande quantité de USDT, et non USDC.

Cependant, après avoir lu ses explications et les reportages, vous pourriez être encore dans le flou, car il y a trop de nouveaux termes, comme l'attaque par sandwich (Sandwich Attack), le front-running (front-ran the tx), la remise de liquidités (put back the liquidity), et le pourboire aux bâtisseurs de blocs (tipped a block builder), etc.

Aujourd'hui, nous allons prendre cet exemple d'attaque MEV pour décomposer tout le processus et vous faire découvrir ce monde sombre qu'est le MEV.

Tout d'abord, nous devons expliquer ce qu'est le MEV.

1. Qu'est-ce que l'MEV ?

La valeur extractible par les mineurs (MEV), initialement appelée valeur extractible par les mineurs, fait référence aux profits supplémentaires que les mineurs peuvent obtenir en réorganisant, en insérant ou en excluant des transactions dans les blocs de la blockchain. Ces opérations peuvent entraîner des coûts plus élevés pour les utilisateurs ordinaires ou des prix de transaction moins favorables.

Avec le passage des réseaux blockchain tels qu'Ethereum du mécanisme de consensus par preuve de travail (Proof-of-Work, PoW) au mécanisme de consensus par preuve d'enjeu (Proof-of-Stake, PoS), le pouvoir de contrôler l'ordre des transactions a été transféré des mineurs aux validateurs. Par conséquent, le terme a également évolué de "valeur extractible par les mineurs" (Miner Extractable Value) à "valeur extractible maximale" (Maximal Extractable Value).

Bien que le nom ait changé, le concept fondamental de l'extraction de valeur en manipulant l'ordre des transactions reste le même.

Le contenu ci-dessus est encore un peu technique, vous devez simplement retenir que : l'MEV existe parce que les anciens mineurs et les validateurs d'aujourd'hui ont le droit de trier les transactions dans le mempool. Ce tri se produit dans un bloc, et actuellement, Ethereum produit un bloc environ toutes les 11 secondes, ce qui signifie qu'il y a un exercice de ce pouvoir toutes les 11 secondes. De même, cette attaque MEV a également été réalisée par le tri des validateurs.

Cliquez sur ce lien, vous verrez le contenu des transactions incluses dans le bloc numéro 22029771 lié à cette attaque, comme le montre l'image ci-dessous.

gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png

Veuillez noter que les transactions sur les images 1, 2 et 3 correspondent à l'attaque MEV mentionnée au début de cet article, et cet ordre a été organisé par le validateur (bobTheBuilder). Pourquoi est-ce possible ?

2. Le principe de l'MEV

Pour comprendre le fonctionnement de l'MEV, nous devons d'abord comprendre comment la blockchain enregistre et met à jour les informations.

Mécanisme de mise à jour de l'état de la blockchain 2.1

La blockchain peut être considérée comme un livre de comptes en constante expansion, qui enregistre toutes les transactions effectuées. L'état de ce livre de comptes, par exemple le solde de chaque compte, la quantité de réserves de différents tokens dans le pool de transactions Uniswap, etc., est déterminé par les transactions précédentes.

Lorsqu'un nouveau bloc est ajouté à la blockchain, toutes les transactions contenues dans ce bloc sont exécutées une par une selon l'ordre dans lequel elles apparaissent dans le bloc. À chaque exécution d'une transaction, l'état global de la blockchain change en conséquence.

C'est-à-dire que non seulement l'ordre des blocs est important, mais l'ordre des transactions dans les blocs l'est également. Alors, comment l'ordre des transactions dans un bloc est-il déterminé ?

2.2 Les validateurs décident de l'ordre des transactions

Lorsque l'utilisateur initie une transaction sur un réseau blockchain, par exemple cette transaction qui convertit USDC en USDT via Uniswap, elle est d'abord diffusée aux nœuds du réseau. Après une validation préliminaire, la transaction entre dans une zone appelée "mempool". Le mempool est comme une zone d'attente, où les transactions n'ont pas encore été confirmées et ajoutées au prochain bloc de la blockchain.

Les anciens mineurs (dans un système PoW), maintenant des validateurs (dans un système PoS), ont le droit de sélectionner des transactions dans le pool de mémoire et de décider de l'ordre dans lequel ces transactions apparaîtront dans le prochain bloc.

L'ordre des transactions dans un bloc est crucial. Avant qu'un bloc ne soit définitivement confirmé et ajouté à la blockchain, les transactions dans ce bloc sont exécutées dans l'ordre déterminé par le validateur (comme bobTheBuilder). Cela signifie que si un bloc contient plusieurs transactions interagissant avec le même pool de transactions, l'ordre d'exécution de ces transactions influencera directement le résultat de chacune d'elles.

Cette capacité permet aux validateurs de traiter en priorité certaines transactions, de retarder ou d'exclure d'autres transactions, voire d'insérer leurs propres transactions pour maximiser les profits.

L'ordre de cette transaction est tout aussi important, toute petite erreur pourrait rendre l'attaque impossible.

2.3 Séquençage des transactions dans cette attaque MEV

Nous allons d'abord avoir un aperçu des 3 transactions liées à cette attaque MEV :

dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png

  • Transaction 1 (première transaction de l'attaquant) : effectuée avant la transaction de la victime. L'objectif de cette transaction est généralement de faire monter le prix du jeton que la victime souhaite échanger.
  • Transaction 2 (Transaction de la victime) : Exécutée après la première transaction de l’attaquant. En raison des actions précédentes de l’attaquant, le prix dans le pool de trading à ce moment-là est défavorable à la victime, et il doit payer plus d’USDC pour l’échanger contre l’équivalent d’USDT, ou seulement pour moins d’USDT.
  • Transaction 3 (Deuxième transaction de l'attaquant) : Exécutée après la transaction de la victime. L'objectif de cette transaction est généralement de tirer profit des nouveaux mouvements de prix causés par la transaction de la victime.

Cette fois, le validateur de l’attaque MEV était bob-The-Builder.eth, qui était responsable de placer les transactions dans l’ordre de 1, 2 et 3. Bien sûr, bobTheBuilder ne l’a pas fait pour rien, il a participé au tri et a gagné plus de 100 ETH, tandis que l’initiateur de l’attaque MEV n’a gagné que 8 000 $. Leur source de revenus n’est autre que la deuxième transaction de la victime.

En un mot, l’attaquant (bot MEV) a conspiré avec le validateur (bobTheBuilder) pour perdre 215 000 $ à la victime de la deuxième transaction, dont l’attaquant a obtenu 8 000 $ et le validateur a obtenu 200 000 $ (plus de 100 ETH).

Ils utilisent une méthode d'attaque qui a un nom évocateur : l'attaque sandwich. Ci-dessous, nous allons expliquer cela transaction par transaction, afin que vous compreniez parfaitement comment fonctionne l'attaque sandwich, qui est relativement complexe en ce qui concerne le MEV.

3. Analyse complète des attaques par sandwich

C'est pourquoi on l'appelle attaque sandwich (Sandwich Attack), car les deux transactions de l'attaquant (transaction 1 et transaction 3) sont respectivement placées avant et après la transaction de la victime (transaction 2), rendant l'ordre des transactions semblable à la structure d'un sandwich (voir l'image ci-dessus).

Les transactions 1 et 3 ont des fonctions différentes. En résumé, la transaction 1 est responsable de la commission du délit, tandis que la transaction 3 est responsable du partage du butin. Plus précisément, le processus est le suivant :

3.1 Transaction 1, responsable de l'augmentation du prix de USDT

Cliquez sur le lien de la transaction numéro 1 dans l'image ci-dessus, vous verrez les détails de la transaction numéro 1. L'attaquant a également directement augmenté le prix du USDT, en échangeant 17,58 millions de USDT contre 18,65 millions de USDC, voir l'image ci-dessous.

! [vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png](https ://img.gateio.im/social/moments-e7c72d47bc43222d558fddb6f32879b0 « 7357324")

À ce moment-là, il reste dans le pool de liquidités une grande quantité de USDC et une petite quantité de USDT. Si l'on en croit les rapports d'actualité, avant l'attaque, la liquidité de Uniswap contenait environ 19,8 millions de USDC et USDT. Après l'exécution de la transaction 1, il ne reste plus que 2,22 millions de USDT (=1980-1758), tandis que le solde de USDC augmente à environ 38,45 millions (=1980+1865).

À ce moment-là, le ratio d'échange entre USDC et USDT dans ce pool n'est plus de 1:1, mais de 1:17. En d'autres termes, il faut 17 USDC pour obtenir 1 USDT. Cependant, ce ratio est approximatif, car ce pool est de type V3, et la liquidité à l'intérieur n'est pas uniformément répartie.

Il y a encore un point que je veux te dire. En réalité, l'attaquant n'a pas utilisé 18,65 millions de USDC d'un coup, le montant réel utilisé en USDC était de 1,09 million, ce qui est même pas 6 %. Comment a-t-il fait cela ? Nous en discuterons plus en détail après avoir terminé notre explication de l'attaque.

3.2 transaction 2, exécution 22 000 USDC échangé contre USDT

En cliquant sur le lien de la transaction 2 dans l'image ci-dessus, vous pouvez voir l'image ci-dessous.

x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png

Comme le montre la figure ci-dessus, la transaction 2 de la victime n’a reçu que 5 272 USDT pour 220 000 USDC en raison de l’impact de la transaction 1, et a perdu 170 000 USDT sans le savoir. Pourquoi dites-vous inconsciemment ? En effet, si la victime négocie via Uniswap, lorsqu’elle soumettra la transaction, elle verra l’interface suivante.

rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png

En regardant l'image ci-dessus, vous constaterez que la victime devrait recevoir au moins 220 000 de manière sécurisée. La raison pour laquelle la victime n'a finalement reçu que plus de 5000 USDT est due à un glissement énorme, atteignant plus de 90 %. Cependant, Uniswap a une limite de glissement maximale par défaut de 5,5 %, comme indiqué dans l'image ci-dessous.

Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png

C'est-à-dire que si la victime a effectué la transaction via l'interface d'Uniswap, elle devrait recevoir au moins 208381 USDT (= 220510 * 94.5%). Vous vous demandez peut-être pourquoi l'enregistrement de la blockchain ci-dessus indique que cette transaction a eu lieu sur « Uniswap V3 ».

Parce que l'interface et le backend des transactions sur la blockchain sont séparés. Ce qui est mentionné ci-dessus comme « Uniswap V3 » fait référence à la piscine de liquidités USDC-USDT d'Uniswap, qui est publique, et toute interface de transaction peut trader via cette piscine.

C'est aussi pour cette raison que certaines personnes doutent que la victime soit ordinaire, sinon elle ne subirait pas un slippage aussi important, et il est possible qu'elle utilise une attaque MEV pour blanchir de l'argent. Nous en parlerons plus tard.

3.3 Transaction 3, récolte + partage

hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png

Cliquez sur le lien pour voir les détails de la transaction 3, comme sur l'image ci-dessus. Nous allons parler des trois transactions A, B et C.

Transaction A, a rétabli la liquidité dans le pool, a échangé 17,32 millions de USDT contre 18,60 millions de USDC.

Transaction B, préparation du partage des gains, échange d'une partie des bénéfices — 204 000 USDC contre 105 ETH ;

Transaction C, partage des gains, payer 100,558 ETH au validateur bob-The-Builder.eth.

Ainsi, l'attaque par sandwich est terminée.

Maintenant, répondons à une question très importante mentionnée ci-dessus : comment un attaquant a-t-il utilisé 1,09 million de USDC pour réaliser une attaque de 18 millions.

4. Comment l'attaquant a-t-il mis en œuvre l'attaque de la piscine de 18 millions de USDC

La raison pour laquelle l'attaquant a pu réaliser une attaque d'un niveau de 18 millions de dollars avec seulement 1,09 million de dollars de capital est qu'il existe un mécanisme magique et spécial dans le monde de la blockchain : l'échange instantané (Flash Swap) d'Uniswap V3.

4.1 Qu'est-ce que l'échange éclair (Flash Swap) ?

En termes simples :

L'échange instantané permet aux utilisateurs de retirer des actifs d'un pool Uniswap dans la même transaction, puis de rembourser avec un autre actif (ou le même actif plus des frais).

Uniswap permet ce comportement de « prendre d'abord, payer ensuite » tant que l'ensemble de l'opération est effectué dans la même transaction. Veuillez noter que cela doit être effectué dans la même transaction. Ce design vise à garantir la sécurité de la plateforme Uniswap elle-même :

  • Prêt sans risque : Uniswap permet aux utilisateurs de retirer temporairement des fonds de la piscine sans garantie (similaire à un prêt), mais doit être remboursé immédiatement à la fin de la transaction.
  • Atomicité : L'ensemble de l'opération doit être atomique, soit complètement réussi (remboursement des fonds), soit complètement échoué (annulation de la transaction).

Le design de l'échange instantané a été conçu pour permettre un arbitrage en chaîne plus efficace, mais a malheureusement été exploité par des attaquants MEV, devenant ainsi un outil de manipulation du marché.

4.2 Échange instantané, comment ça fonctionne ?

Voyons maintenant le graphique pour expliquer étape par étape comment l'échange éclair de cette attaque a été réalisé, voir l'image ci-dessous.

S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png

  • L'attaquant F1 emprunte 1,09 million de USDC à AAVE en utilisant ses propres 701 WETH ;
  • L'attaquant F2 a lancé une demande d'échange éclair, retirant d'abord 17,58 millions de USDT du pool Uniswap (sans avoir besoin de payer au préalable) ; le compte de l'attaquant a temporairement augmenté de 17,58 millions de USDT.
  • L'attaquant a rapidement injecté 17,58 millions de USDT dans la piscine Curve, échangeant contre 17,55 millions de USDC. Le compte de l'attaquant a vu ses USDT diminuer de 17,58 millions et ses USDC augmenter de 17,55 millions. Comme vous pouvez le constater sur le graphique ci-dessous, l'attaquant a choisi Curve en raison de sa liquidité abondante, avec plus de 70,54 millions de USDT et 50,71 millions de USDC, ce qui entraîne un slippage relativement bas.

o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png

  • Les attaquants de F4 ont ensuite remboursé à Uniswap un total de 18,64 millions de USDC, en combinant les 17,55 millions de USDC échangés via Curve avec les 1,09 million de USDC qu'ils avaient initialement préparés (obtenu par le prêt Aave), complétant ainsi l'échange flash.

Après cette transaction (transaction 1), le solde du compte de l'attaquant a diminué de 1,09 million USDC, car sur les 18,64 millions USDC retournés à Uniswap, seuls 17,55 millions USDC provenaient de Curve, les 1,09 million USDC restants étant des fonds propres de l'attaquant.

Vous devriez avoir remarqué que cette transaction a en réalité coûté 1,09 million à l'attaquant. Cependant, la transaction 3 suivante, également réalisée par le biais de l'échange éclair, a non seulement récupéré 1,09 million USDC, mais a également gagné plus de 200 000.

oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png

Analysons étape par étape les données de la transaction 3.

  • K1 Attaquant, a retiré 18,6 millions de USDC sur Uniswap par échange éclair ;
  • K2 attaquant, a échangé 17,32 millions d'USDT en utilisant une partie des 17,3 millions d'USDC retirés récemment d'Uniswap.
  • L'attaquant K1 a rendu les 17,32 millions de USDT échangés depuis Curve à Uniswap. L'échange éclair est terminé. Il est important de noter que l'attaquant a obtenu 17,32 millions de USDT en ne dépensant que 17,30 millions de USDC via K2. Parmi les 1,30 million (= 1,860-1,730) de USDC restants, 1,09 million proviennent de ses propres fonds, et les 210 000 USDC restants constituent le bénéfice de cette attaque.
  • K3 l'attaquant a remboursé le capital à AAVE, a pris ses 701 WETH, a échangé 200 000 USDC contre 105 ETH, et a envoyé 100.558 ETH aux validateurs comme pourboire (environ 200 000 dollars), ne gardant pour lui-même qu'un bénéfice de moins de 10 000 dollars.

Vous serez peut-être surpris de savoir pourquoi les attaquants sont prêts à céder jusqu'à 200 000 dollars de bénéfices aux validateurs ?

4.3 Pourquoi donner un « pourboire » de 200 000 dollars ?

En fait, il ne s’agit pas de générosité, mais d’une condition nécessaire à la réussite d’une attaque MEV comme une attaque sandwich :

  • Le cœur du succès de l'attaque réside dans le contrôle précis de l'ordre des transactions, et c'est le vérificateur (bobTheBuilder) qui contrôle cet ordre.
  • Les validateurs aident non seulement les attaquants à s'assurer que les transactions des victimes se trouvent entre les transactions d'attaque, mais plus important encore, les validateurs peuvent garantir qu'aucun autre robot MEV concurrent ne peut se faufiler ou interférer avec le bon déroulement de l'attaque.

Ainsi, l'attaquant préfère sacrifier la grande majorité de ses profits pour garantir le succès de l'attaque, tout en conservant une certaine part de profit pour lui-même.

Il convient de noter que les attaques MEV ont également un coût. Il y a un coût lors des échanges éclair sur Uniswap et un coût lors des transactions sur Curve. Cependant, comme les frais sont relativement bas, environ 0,01 à 0,05 %, ils peuvent sembler négligeables par rapport aux gains des attaques.

Pour finir, je tiens à rappeler que la défense contre les attaques MEV est en réalité très simple, il vous suffit de : définir une tolérance au slippage ne dépassant pas 1 % ; exécuter les grosses transactions en plusieurs petites. Donc, vous n'avez pas à vous inquiéter au point de ne plus oser trader sur un DEX (échange décentralisé).

Conclusion : Avertissements et enseignements de la forêt sombre

Cet incident d'attaque MEV de 215 000 dollars est sans aucun doute une nouvelle manifestation brutale de la loi de la "forêt sombre" dans le monde de la blockchain. Il révèle de manière vivante les jeux complexes qui se cachent derrière l'exploitation des failles mécaniques pour en tirer profit dans un environnement décentralisé et sans autorisation.

D'un point de vue plus élevé, l'émergence de l'MEV est le reflet de l'effet d'épée à double tranchant de la transparence et de la programmabilité de la blockchain.

  • D'une part, tous les enregistrements de transactions sont publics et vérifiables, ce qui permet de suivre et d'analyser les comportements d'attaque ;
  • D'autre part, la logique complexe des contrats intelligents et la détermination de l'exécution des transactions offrent également des opportunités aux participants astucieux.

Ce n'est pas un simple acte de piratage, mais une compréhension et une utilisation profondes des mécanismes sous-jacents de la blockchain, mettant à l'épreuve la robustesse de la conception des protocoles et défiant la conscience des risques des participants.

Comprendre le MEV et reconnaître ses risques est essentiel pour naviguer dans ce monde numérique rempli d'opportunités mais aussi de dangers. Rappelez-vous que dans la "forêt sombre" de la blockchain, seule la crainte des règles et l'amélioration de la compréhension peuvent vous éviter de devenir la prochaine proie dévorée.

C'est aussi l'effet que je souhaite atteindre à travers cet article.

Voir l'original
Le contenu est fourni à titre de référence uniquement, il ne s'agit pas d'une sollicitation ou d'une offre. Aucun conseil en investissement, fiscalité ou juridique n'est fourni. Consultez l'Avertissement pour plus de détails sur les risques.
  • Récompense
  • Commentaire
  • Partager
Commentaire
0/400
Aucun commentaire
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate.io app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • ไทย
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)