Aller au contenu
Dossier d'incident · · 2 min de lecture · 234 mots · Mis à jour ·Découvert ·Divulgué Résolu

Réentrance du compilateur Vyper chez Curve Finance, juillet 2023 : ce qui s’est passé et ce qu’il faut vérifier

Un bogue présent dans certaines versions de Vyper a silencieusement rendu inopérants les verrous de réentrance, exposant plusieurs pools de Curve dont le code était pourtant correct.

Partager
Schéma de l'incident Curve Finance (Vyper compiler) montrant l'étape de réentrance comme point de défaillance.
Schematic of the Curve Finance (Vyper compiler) incident showing the reentrancy stage as the failure point.

En un coup d'œil

ENTITÉ TOUCHÉE
Curve Finance (Vyper compiler)
CHAÎNE(S)
Ethereum
CLASSE D'ATTAQUE
Chaîne d'outils, Réentrance
PERTES DÉCLARÉES
env. 70 millions de dollars américains sur l'ensemble des pools touchés(Curve Finance, 31 Juil 2023)
RÉPONSE OFFICIELLE
x.com

Code source correct, bytecode incorrect

Les pools de Curve touchés déclaraient une protection contre la réentrance. Leur code source était juste. Le compilateur a produit un bytecode dans lequel la protection ne fonctionnait pas comme déclaré, et la réentrance — la plus ancienne catégorie de vulnérabilité bien comprise des contrats intelligents — est devenue exploitable dans des contrats qui s’en étaient explicitement prémunis.

Pourquoi ce cas diffère par nature

Presque tous les incidents de ce registre portent sur un défaut qu’un relecteur aurait en principe pu trouver en lisant le code. Celui-ci ne pouvait pas l’être. Un relecteur lisant le code source Vyper aurait confirmé que le verrou était présent et correctement appliqué, et se serait trompé sur le comportement déployé, sans que ce soit sa faute.

Cela déplace la frontière de confiance. Le compilateur, et sa version précise, font partie de ce qui doit être digne de confiance. Tout projet qui livre des contrats compilés hérite de la correction de sa chaîne d’outils, que quelqu’un y ait pensé ou non.

La vérification qui vaut la peine

Pour tout contrat Vyper auquel vous êtes exposé, la question est de savoir quelle version du compilateur a produit le bytecode déployé, et si cette version figure sur la liste des versions touchées publiée par le projet Vyper. Les métadonnées de version sont enregistrées au moment du déploiement et sont vérifiables indépendamment de toute affirmation du projet.

Chronologie

Ajout seulement. Les corrections sont ajoutées sous la forme d'une entrée datée distincte ; les entrées antérieures ne sont jamais réécrites.

  1. Plusieurs pools de Curve sont exploités par réentrance. Curve confirme l'incident et identifie les versions du compilateur Vyper en cause. Curve Finance
  2. Curve et Vyper publient la liste des versions du compilateur touchées afin que d'autres projets puissent vérifier leurs propres déploiements. Curve Finance

Ce qu'il faut vérifier

Le projet Vyper et Curve ont tous deux publié la liste des versions du compilateur touchées. La vérification qui compte pour tout contrat Vyper est de déterminer quelle version du compilateur a produit le bytecode déployé.

Conisec n'héberge ni ne relaie d'outils de récupération, de révocation ou de « vérification ». Après un incident public, les attaquants diffusent systématiquement ce type de liens en utilisant les noms des publications qui couvrent l'affaire. Utilisez le canal officiel du projet concerné, indiqué ci-dessus, et rien d'autre.

Sources

  1. Curve Finance, Incident statement and affected Vyper versions (30 Juil 2023)

Pas un conseil. Ceci est un résumé de faits publiés, et non un conseil juridique, fiscal ou de sécurité. Vérifiez auprès des sources primaires indiquées ci-dessus.

Dernière vérification par Conisec Staff.

Pour aller plus loin