Balancer V1, le bug de 2020 qui refuse de mourir vide un pool de 234 000 $
Le passé n’est jamais mort. Il n’est même pas passé. Ce lundi, un hackeur a siphonné 234 000 $ sur un pool Balancer V1, la toute première version du protocole, écrite en 2020 et jamais mise à jour depuis. La somme paraît presque anecdotique face aux 128 millions dérobés sur la V2 en novembre dernier. Le vrai problème n’est pas le montant, c’est l’endroit. Ce code tourne encore, personne ne peut plus le corriger, et l’entreprise qui l’a écrit n’existe même plus.
- Un hackeur a exploité une faille sur Balancer V1, un code jamais mis à jour depuis 2020, pour siphonner 234 000 $.
- Le code de Balancer V1, non modifiable, tourne encore, posant un risque constant pour les protocoles qui l’ont copié.
Balancer V1, comment un simple arrondi a fait sauter la banque
La faille loge dans joinswapPoolAmountOut, une fonction qui laisse l’utilisateur choisir combien de jetons de pool (BPT, la part de liquidité qu’il reçoit) il veut recevoir plutôt que combien il doit déposer. Le contrat calcule ensuite le dépôt requis via une autre fonction qui travaille en virgule fixe sur 18 décimales. Problème : le WBTC n’en a que huit. Tant que les réserves du pool restent conséquentes, l’écart ne se voit pas. Une fois les réserves compressées vers zéro, le calcul arrondit vers le bas jusqu’à la plus petite unité possible, un satoshi.
C’est exactement ce qu’a fait l’attaquant, selon l’alerte de la société de sécurité SlowMist publiée lundi. Des prêts éclair imbriqués (des emprunts remboursés dans la même transaction, sans collatéral) sur Aave, Spark, Morpho et Uniswap V3 ont écrasé les réserves de WBTC du pool jusqu’à la poussière. Le contrat a alors accepté un dépôt d’un satoshi pour frapper 4 408,8 BPT en retour. L’attaquant a ensuite retiré sa part proportionnelle en DPI, USDC, WETH et WBTC, pour un butin d’environ 234 000 $.
Balancer Labs a disparu, le code V1, lui, reste bien vivant
Vous vous souvenez de ce qui a précédé ce dénouement ? En novembre 2025, un exploit voisin, une faille d’arrondi dans une autre fonction, avait coûté 128 millions de dollars à la V2 sur six réseaux. Balancer Labs avait alors annoncé sa dissolution en mars, le cofondateur Fernando Martinelli jugeant l’entité corporate devenue un boulet juridique. La TVL du protocole, qui culminait à 3,5 milliards de dollars en 2021, plafonne aujourd’hui à 157 millions. Le protocole survit sous une structure décentralisée, Balancer OpCo, mais personne dans cette structure ne peut toucher au code V1. Il n’est pas mis à niveau (upgradable), au sens technique du terme. Ce qui est déployé tourne, point final.
Deux failles différentes, donc, mais un seul et même vice de fabrication. Un arrondi qui favorise systématiquement celui qui l’exploite plutôt que le pool. Le développement, lui, a filé vers la V3, qui impose désormais un contrôle explicite du sens de l’arrondi sur chaque opération.
Le vrai risque, ce sont tous les forks qui tournent avec le même code que Balancer
Le contrat BPool de Balancer V1 a été l’un des morceaux de code les plus copiés de toute la DeFi à son époque. La même mécanique de jointure et de sortie tourne aujourd’hui dans des protocoles qui n’ont plus aucun lien avec Balancer, ni le moindre processus de sécurité partagé. En juin déjà, un clone d’Ocean Protocol sur Polygon était tombé pour une logique similaire, empruntant du mOCEAN pour le faire circuler dans huit pools d’affilée.
Deux critères suffisent à savoir si un pool est exposé. Détient-il un jeton à moins de 18 décimales, comme le WBTC ou l’USDC ? Et la fonction de dépôt à sens unique reste-t-elle appelable publiquement ? Si les deux réponses sont oui, avec des réserves qu’on peut pousser vers zéro par de simples échanges, les conditions de l’attaque sont réunies. Aucun correctif n’arrivera. Seul un retrait manuel des fournisseurs de liquidité met leurs fonds à l’abri.
Personne ne mettra plus jamais à jour Balancer V1. Le code de 2020 tourne en pilote automatique, sans patch, sans pause, sans personne au bout du fil. C’est la même mécanique héritée qui a permis de vider un pool par un simple prêt éclair en quelques minutes, une autre fois. Tout protocole qui a un jour copié ce code porte le même risque, parfois sans même le savoir. Le passé n’est jamais mort. Il n’est même pas passé, disait Faulkner. Le code non plus.