CertiK : explication détaillée de la perte de 52 millions de dollars de Vyper

Des vulnérabilités dans les versions 0.2.15, 0.2.16 et 0.3.0 de Vyper ont été signalées, exposant de nombreux pools sur Curve à des risques d'attaques par réentrance. Cette vulnérabilité permet à un attaquant d'appeler la fonction d'ajout de liquidité pendant le processus de suppression de liquidité.

Un total de 69,3 millions de dollars a été affecté jusqu'à présent, dont 16,7 millions de dollars ont été récupérés par des pirates informatiques. Cela signifie également que 52 millions de dollars ont été volés lors de cet incident, ce qui en fait la plus grande attaque de réentrance à ce jour en 2023.

exsGmBiwYOSh5Seu3C6zysCmJcCD64sdWTvG5w0M.jpeg

Analyse des incidents Vyper

Résumé de l'événement

Le 30 juillet 2023, les versions 0.2.15, 0.2.16 et 0.3.0 du compilateur Vyper, un langage de programmation orienté contrat conçu pour la machine virtuelle Ethereum (EVM), ont été annoncées comme présentant des vulnérabilités d'échec de verrouillage de réentrance. Plusieurs projets DeFi ont été affectés par le bogue, avec des pertes totalisant 52 millions de dollars.

CertiK a identifié six adresses impliquées dans l'incident. Le premier (0x172) n'a pas réussi à exploiter la vulnérabilité du bloc 17806056. L'exploiteur d'origine a retiré 0,1 ETH de Tornado Cash et a procédé à la création du contrat d'attaque. Cependant, un portefeuille leader (0x6Ec21) a payé plus de frais d'essence et a exécuté la transaction en premier, gagnant environ 6 100 WETH (11,4 millions de dollars).

YLsgfOUBbfcQ6Pgy77tT2prtmsSHe2U4s7HpuCV3.png

Vulnérabilité de défaillance pré-transaction par robot MEV Source : Etherscan Etherscan

La violation a entraîné de nouvelles pertes : EOA 0xDCe5d a acquis des actifs d'une valeur d'environ 21 millions de dollars. Les détails du portefeuille concerné sont les suivants :

BQybD6x7JDeb56tNYa5gp3antJdgtukOJp5C71Gw.png

Au total, six projets ont été touchés, avec environ 69,3 millions de dollars volés, dont 16,7 millions de dollars ont été restitués, pour une perte totale d'environ 52 millions de dollars.

Qu'est-ce que Vyper

Vyper est un langage de programmation pythonique orienté contrat pour la machine virtuelle Ethereum (EVM). Vyper est en version bêta depuis 2017, mais sa première version non bêta était la version 0.2.1 en juillet 2020.

Solidity, le langage dominant de l'écosystème Ethereum, existe depuis bien plus longtemps que Vyper, de sorte que de nombreux membres de la communauté ont créé des outils qui fonctionnent exclusivement avec Solidity. Selon les données de DeFiLlama, sur la valeur totale verrouillée (TVL) d'environ 70 milliards de dollars américains dans les protocoles DeFi, les contrats intelligents Vyper représentaient 2,17 milliards de dollars américains, tandis que Solidity représentait la grande majorité, jusqu'à 67,49 milliards de dollars américains.

KjMot1urT10BOZJi8lgltDDN62IMhxVncPFncjoP.png

616cb7f4-e84a-479f-bd50-73e2adaec534 Valeur verrouillée totale par source de langue : DeFiLlama

Au 10 mai 2023, la domination de Vyper est passée d'un sommet de 30 % en août 2020 à 6,27 %. Même si la domination TVL de Vyper était nettement inférieure à celle de Solidity, l'événement a tout de même entraîné un succès de 62 millions de dollars.

8G03pLGwavL4LcDkdTQS5EVlIywScZBcpTb4Fzeb.png

b89a9653-a2d4-4e89-9042-24e06ed1590a (1) Dominance des différents langages de programmation en TVL Source : DeFiLlama

Version du compilateur

Une version du compilateur fait référence à une version spécifique d'un compilateur de langage de programmation qui convertit le code source lisible par l'homme en code lisible par la machine.

Les versions du compilateur sont régulièrement mises à jour pour introduire des fonctionnalités, corriger des bogues et améliorer la sécurité. Vyper Language n'offre actuellement pas de programme de prime de bogue de pirate informatique.

Version 0.2.15 - 0.3.0

Comme mentionné ci-dessus, des vulnérabilités ont été trouvées dans les versions 0.2.15, 0.2.16 et 0.3.0 de Vyper, ce qui a entraîné la réentrée de plusieurs projets DeFi.

La première version 0.2.15 de l'exploit Vyper a été publiée le 23 juillet 2021. Au moment où la version 0.3.1 est sortie en décembre de la même année, la vulnérabilité précédente avait cessé d'exister.

calendrier

L'incident a commencé à 21 h 10, heure de Pékin, le 30 juillet. La transaction de l'attaquant pour le pool JPEG sur Curve a échoué en raison de transactions en cours d'exécution.

Capture d'écran 2023-07-31 à 21.08.31

À 22h00 le 30 juillet, heure de Pékin, JPEG'd a confirmé que le pool de courbes pETH-ETH avait été utilisé de manière malveillante.

2g2jUlVcktQTJmqFFZUPSVONMA6O9Jbp7HcbQEKd.png

Vyper a ensuite annoncé que les versions 0.2.15, 0.2.16 et 0.3.0 incluaient un verrou de réentrance cassé. Metronome et Alchemix ont également été affectés après le tweet de Vyper.

mRZI1JtH7Qv7Mvk09k7ex0chKgffsFir98ebzqtD.png

Annonce métronome DAO :

FTzOyIh9Z8Opc6soNd4zLzAcKQGuLxWY2QEefPPV.png

F9Dh7bMfVanq8deivVbWwhF24E3gbbIpThEq0t5l.png

8MYwVijoFiaJPL32YVTK6AOQHeHsZvZXyxIfmF9h.png

Aux premières heures du deuxième jour, heure de Pékin, Curve Finance a annoncé sur Discord que le pool de fonds restant n'était pas affecté par le bogue Vyper et qu'il était sûr.

PsdIMHoBSb8vtyuFjjlO4ZsCrmKfIC6IY6I40DkB.png

aLVrLdFyKeWEz7Jd1sqydWD4dTUWmpGw8Oj7PY0W.png

Curve Finance a annoncé sur Twitter qu'un pool sur Arbitrum était potentiellement compromis, mais qu'il n'y avait aucun exploit rentable à exécuter par des acteurs malveillants, ce qui signifie que le pool était peu susceptible d'être compromis. CertiK n'a également détecté aucune autre attaque exploitant la vulnérabilité Vyper.

iqFUjHgxsKZF0Hw4cIndWFLBVQBC8VyjPCrNnDNk.png

Processus d'attaque

Voici un exemple d'accord ciblant le format JPEG :

Attaquant : 0x6ec21d1868743a44318c3c259a6d4953f9978538

Contrat d'attaque : 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code

1 L'attaquant emprunte d'abord 80 000 WETH (environ 149 371 300 $) à Balancer: Vault

2 Ensuite, l'attaquant échange WETH contre ETH, appelle pETH-ETH-f.add_liquidity() et ajoute 40 000 ETH (environ 74 685 650 $) au pool pETH-ETH-f. En retour, l'attaquant a reçu 32 431 pETH (pETH-ETH-f).

3 L'attaquant appelle remove_liquidity() pour supprimer la liquidité ajoutée à l'étape 2. 3 740 pETH et 34 316 ETH ont été transférés au contrat d'attaque, et la fonction fallbak() du contrat d'attaque a été déclenchée, donnant le contrôle à l'attaquant. Dans la fonction fallback(), l'attaquant a ajouté 40 000 ETH supplémentaires de liquidité au pool pETH-ETH-f et a reçu 82 182 pETH.

4 L'attaquant appelle à nouveau remove_liquidity(), retire 10 272 pETH et reçoit 47 506 ETH et 1 184 pETH. L'attaquant a ensuite échangé 4 924 pETH contre 4 285 ETH dans le pool pETH-ETH-f.

Au total, l'attaquant a obtenu 34 316 ETH à l'étape 3, 47 506 et 4 285 ETH à l'étape 4, pour un total de 86 107 ETH. Après avoir remboursé le prêt flash de 80 000 ETH, l'attaquant s'est retrouvé avec 6 107 ETH (~ 11 395 506 $).

Vulnérabilités

Cette vulnérabilité permet à un attaquant d'appeler la fonction d'ajout de liquidité pendant le processus de suppression de liquidité. Alors que ces fonctions sont supposées être protégées par @nonreentrant('lock'), des tests sur les fonctions add_liquidty() et remove_liquidity() ont prouvé qu'elles n'empêchaient pas les attaques par réentrance.

HIhD33yKE94EHwUa7xkQhAzQRF4nscaJOwAPTOmK.png

Vyper_contract for Curve.fi Factory Pool Source de données : Etherscan

Les versions Vyper v0.2.15, v0.2.16 et v0.3.0 ont une vulnérabilité d'échec de protection de réentrance suite aux exploits de JPEG'd, Metronome et Alchemix.

Mr3KDb2SKoLhF770OEWBAtdTuOYZ88tchEodweuv.png

solution

Les projets utilisant des versions vulnérables de Vyper doivent contacter Vyper pour obtenir de l'aide en matière d'atténuation. Les projets doivent également essayer de mettre à niveau vers la dernière version de Vyper qui ne contient pas cette vulnérabilité.

Résumer

L'attaque sur Vyper est la plus grande vulnérabilité de réentrance détectée par CertiK en 2023. En termes de pertes financières, cette attaque représente 78,6 % de ces incidents.

Les deux plus grandes vulnérabilités de réentrance de l'année exploitaient toutes deux des contrats écrits dans Vyper, bien que les vulnérabilités ne soient pas identiques.

Actuellement, les pertes dues aux attaques de réentrance dans toutes les chaînes en 2023 ont dépassé 66 millions de dollars. C'est environ 4 millions de dollars de plus que pour l'ensemble de 2020 et seulement 1 million de dollars de moins que la perte de 2021. Notamment, le total de 2023 représente également une augmentation de 259,45 % des pertes dues aux attaques de reciblage en 2022.

Voir l'original
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.
  • Récompense
  • Commentaire
  • Reposter
  • Partager
Commentaire
0/400
Aucun commentaire
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)