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.
- 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
- 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
- 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.