Entre le 20 et le 27 février, deux exploits de code faible (exploits) se sont produits dans des preuves à connaissance nulle (ZK Proofs). Le premier impliquait le drainage de 5 pièces Ethereum de Veil Cash, un projet qui propose des pools de liquidités sur le réseau Base, tandis que le second concernait 1,5 million de dollars dans les contrats Foom. Cette exploitation des vulnérabilités du code a surpris la communauté des développeurs, qui considérait le code implémenté par ZK Proofs comme dur, mathématiquement solide et sans vulnérabilités sérieuses connues.
Selon un rapport du hacker éthique Beacon302, la vulnérabilité du code a permis à l’attaquant de Veil Cash de « falsifier des preuves valides de connaissance nulle pour des entrées publiques arbitraires et d’épuiser l’intégralité du pool de confidentialité de 0,1 ETH avec 29 retraits frauduleux en une seule transaction, sans jamais avoir déposé ».
Veil est un protocole qui génère, grâce à zk-SNARK, des preuves de dépôt valides sans révéler vos données, ce qui préserve la confidentialité des transactions. Pour le hacker mentionné, l’exécution de cet exploit “brise complètement la robustesse du système de test.”
Le même hacker rapporte que le protocole Foom, une dApp de loterie et de jeux qui utilise des preuves ZK pour retirer des fonds déposés de manière privée, a été vidé. sur le réseau de base et sur le réseau principal Ethereum en raison d’un bug dans le contrat du vérificateur ZKbien que cette attaque ait été menée par un pirate informatique éthique dans le cadre d’une manœuvre de sécurité et de testabilité du code. La raison de cet exploit était de sécuriser les fonds de Foom avant qu’un attaquant malveillant ne puisse les obtenir.
Les preuves à connaissance nulle sont des méthodes de cryptographie qui permettent à une partie de prouver à une autre qu’une transaction est valide sans révéler les informations confidentielles de la partie qui l’exécute.
Ces tests sont considérés comme importants pour l’avenir des crypto-actifs puisque, selon des chiffres comme Vitalik Buterin ou auparavant Hal Finney, Les archives publiques totalement transparentes ont porté atteinte à la confidentialité financière.
Deux hacks, deux motivations, une cause profonde
Un résumé ultérieur des événements précise que les deux exploits proviennent de la même cause profonde. «Il ne s’agissait pas de bugs subtils et sans restriction, mais de vérificateurs Groth16 (générés par snarkjs) avec une configuration incorrecte (il manque juste la dernière étape). L’un a été exploité par des pirates informatiques pour environ 1,5 million de dollars, l’autre a été drainé pour 5 ETH », ont commenté Stefanos Chaliasos et Hao Pham, chercheurs de zksecurity.xyz, laissant entendre que l’un des « drains » était un vol.
En bref, de nombreuses primes de bogues ont été versées à des pirates informatiques pour les bogues ZK, de nombreux protocoles sont en production avec beaucoup de valeur totale verrouillée (TVL), mais aucun exploit n’a été signalé dans les protocoles ZK à ce jour. Cela aurait pu nous mettre un peu plus à l’aise par rapport au secteur des contrats intelligents, où nous avons des exploits catastrophiques tous les quelques mois. Peut-être avons-nous simplement eu de la chance ? Peut-être qu’il n’y a pas assez de retour sur investissement pour les pirates ?
Stefanos Chaliasos et Hao Pham, chercheurs sur zksecurity.xyz
En réponse à Charles Guillemet, directeur technologique de Ledger, plusieurs utilisateurs soulignent que les récents exploits sont des erreurs humaines dans la construction et l’exécution du code, pas des défauts intrinsèques de la cryptographie à connaissance nulle.
Les chercheurs de zksecurity.xyz sont du même avis lorsqu’ils affirment qu’ils insisteront toujours pour que les développeurs examinent le code de déploiement et les instructions du langage de programmation (scripts).
De plus, ils affirment qu’ils ajoutent la détection de cette classe précise de vulnérabilité à ZKAO, un scanner de sécurité continu alimenté par l’IA.