[Long thread en anglais] Analyse approfondie de l’attaque contre Balancer V2 : mécanisme de la faille, étapes de l’attaque et leçons à retenir
Chainfeeds Guide :
L'attaquant a intentionnellement défini des paramètres, y compris le nombre d'itérations et le montant d'entrée, afin de maximiser l'effet de la perte de précision.
Source de l'article :
Auteur de l'article :
BlockSec
Opinion :
BlockSec : Le 3 novembre 2025, le Composable Stable Pool de Balancer V2, ainsi que plusieurs projets on-chain basés sur son fork, ont subi une attaque coordonnée cross-chain, entraînant une perte totale de plus de 125 millions de dollars. BlockSec a émis une alerte dès la première heure, puis publié une analyse préliminaire. Il s'agit d'une attaque hautement complexe. Notre enquête montre que la cause fondamentale provient d'une perte de précision dans le calcul de l'invariant, qui a permis de déclencher une manipulation de prix via cette perte de précision, affectant ainsi le prix du BPT (Balancer Pool Token). L'attaquant a profité d'une opération batchSwap unique pour tirer profit d'un pool stable spécifique. Le composant affecté est le Composable Stable Pool de Balancer V2. Ce type de pool est conçu pour des actifs censés maintenir un ratio d'échange proche de 1:1, permettant des transactions importantes avec un slippage minimal, augmentant considérablement l'efficacité du capital pour des actifs similaires ou corrélés. Chaque pool possède son propre BPT, dont le prix peut être approximativement exprimé comme suit : Prix du BPT = D / totalSupply, où D est l'invariant dans la mathématique stable, représentant la valeur totale virtuelle du pool. D'après la formule, si D est mathématiquement réduit (même si les fonds réels ne sont pas perdus), le prix du BPT apparaîtra plus bas. Balancer V2 propose la fonction batchSwap(), permettant des swaps multi-sauts dans le Vault, avec deux modes dans SwapRequest : GIVEN_IN et GIVEN_OUT. En mode GIVEN_OUT, l'appelant spécifie le montant de sortie souhaité, et le pool calcule le montant d'entrée requis. Dans un pool Stable, lors du calcul du montant d'entrée amountIn, il faut résoudre une équation polynomiale basée sur la formule de l'invariant, ces calculs étant uniformément soumis à des opérations d'Upscaling et de Downscaling. Théoriquement, ces deux opérations sont opposées, mais dans la pratique, leur implémentation diffère dans la direction de l'arrondi : l'upscaling utilise uniquement l'arrondi inférieur (mulDown), tandis que le downscaling peut arrondir vers le haut ou vers le bas (divUp / divDown). Cette incohérence a laissé une faille exploitable. La racine du bug réside dans le fait que, dans BaseGeneralPool._swapGivenOut(), l'upscaling de swapRequest.amount utilise un arrondi inférieur. La valeur ainsi arrondie est utilisée comme amountOut pour l'entrée de _onSwapGivenOut(), ce qui fait que le amountIn calculé est inférieur au besoin réel, violant ainsi le principe selon lequel l'arrondi devrait toujours favoriser le protocole. Pour des pools comme (wstETH / rETH / cbETH), l'attaquant peut échanger une quantité moindre d'un actif contre une quantité supérieure d'un autre, réduisant l'invariant D et donc le prix du BPT. L'attaquant a exécuté une attaque en deux phases. La première phase réalise la logique principale de l'attaque en une seule transaction, sans profit immédiat ; la seconde phase consiste à retirer le profit via une transaction séparée. La première phase se divise en deux étapes : calcul des paramètres et batch swap. Prenons l'exemple d'une transaction d'attaque sur la chaîne Arbitrum (TX : 0x7da32e…55773), l'attaquant commence par récupérer les paramètres du pool, y compris les scaling factors, A (coefficient d'amplification), le taux du BPT, les frais de swap, etc., puis calcule trickAmt et simule via un contrat auxiliaire déployé. L'attaquant combine calcul hors chaîne et simulation on-chain pour ajuster précisément les paramètres du swap suivant, y compris le nombre d'itérations et les valeurs d'entrée/sortie à chaque fois. L'itération comprend trois swaps : dans la première étape, la quantité de token cible est poussée à trickAmt + 1 ; la seconde étape continue à swapper le token cible, déclenchant alors l'arrondi inférieur de _upscale() ; la troisième étape effectue un swap inverse, ramenant le solde du pool à une valeur tronquée à deux décimales inférieures, puis l'échange à nouveau. Par exemple, 324 816 → 320 000. Dans certains cas, la résolution mathématique StableSwap utilisant la méthode de Newton–Raphson échoue, l'attaquant prévoit alors deux fallback, réessayant avec 9/10 de la valeur initiale. Après l'attaque, Balancer, en raison de mécanismes partiellement impossibles à suspendre, a vu l'impact de l'attaque amplifié, suivi de copies et d'attaques similaires sur plusieurs chaînes, pour une perte totale dépassant 125 millions de dollars. Cet incident met en lumière quatre problèmes clés pour les protocoles décentralisés : mécanismes d'arrondi incohérents, évolution constante des techniques d'attaque, incapacité à suspendre le protocole amplifiant les pertes, absence de surveillance en temps réel des états d'initialisation et d'exploitation. L'upscaling n'autorise que l'arrondi inférieur, alors que le downscaling autorise l'arrondi dans les deux sens ; cette asymétrie, sous des paramètres extrêmes, s'accumule en une perte de précision exploitable. L'arrondi, censé toujours favoriser le protocole, nuit ici à ses intérêts. L'attaquant a utilisé une méthode en deux phases : la première exécute l'attaque sans profit apparent, la seconde retire les fonds, contournant les modèles de surveillance on-chain. Chaque étape combine simulation off-chain et on-chain, le contrat auxiliaire réutilisant même l'implémentation StableMath de Balancer, avec des messages d'erreur identiques. Après l'attaque, d'autres chaînes et de nombreux projets forkés ont été affectés, prouvant que tant que la logique mathématique stable et d'arrondi est identique, la faille peut se propager à travers l'écosystème. Cet événement démontre que les protocoles DeFi nécessitent des calculs mathématiques de plus grande précision, une vérification d'arrondi plus stricte, des mécanismes de simulation anti-paths suspects, ainsi qu'une capacité d'arrêt d'urgence en cas d'anomalie. [Texte original en anglais]
Avertissement : le contenu de cet article reflète uniquement le point de vue de l'auteur et ne représente en aucun cas la plateforme. Cet article n'est pas destiné à servir de référence pour prendre des décisions d'investissement.
Vous pourriez également aimer
La vague d’IA pourrait suivre le destin de la bulle ferroviaire du XIXe siècle : les bâtisseurs ne seront pas forcément les gagnants finaux.
L'analyste de Goldman Sachs, Bobby Molavi, prend comme exemple la folie ferroviaire du 19e siècle au Royaume-Uni : 500 entreprises ont dépensé plus que le revenu national annuel pour construire 8 000 miles de voies ferrées, et les premiers investisseurs ont presque tous perdu, alors que les véritables bénéficiaires ont été les « passagers » ultérieurs. Il souligne que la vague actuelle d’IA est alimentée à la fois par la dette et par la dynamique, et que le ratio cours/bénéfices prévisionnel du S&P 500 à 18 fois n’est « qu’un peu moins cher ». Quant à savoir si les constructeurs peuvent conserver la valeur, l’histoire donne une réponse peu encourageante.

Si l’introduction en bourse d’Anthropic la semaine prochaine se déroule bien et que le cours de l’action augmente, alors l’IA “restera stable”, sinon “certaines entreprises feront faillite”.
La réduction de la valorisation des deux géants a déjà déclenché une réaction en chaîne : les investisseurs adoptent désormais des multiples de revenus plus prudents pour les startups d’IA et mettent directement fin aux financements à valorisations élevées pour les entreprises sans revenus. Plusieurs fonds de capital-risque ont déjà conseillé à leurs sociétés en portefeuille de revoir à la baisse leurs attentes de valorisation et de constituer rapidement des réserves de liquidités. Les acteurs du marché avertissent que le résultat de l’introduction en bourse d’Anthropic servira de baromètre pour le secteur : en cas de succès, la prospérité se poursuivra ; en cas d’échec, certaines entreprises pourraient être éliminées du marché.
Après les élections au Brésil, la décote politique s’intensifie, mais Morgan Stanley reste optimiste sur Petrobras (PBR.US), se concentrant sur la tarification du carburant et les dividendes
Morgan Stanley maintient toujours sa recommandation la plus optimiste, "surpondérer", mais a abaissé son objectif de cours pour fin 2027 de 31 dollars à 25 dollars.

Corning (GLW.US) reçoit la première recommandation "acheter" de Jefferies ! Les usines d’IA s’arrachent la fibre optique, le déficit mondial d’approvisionnement pourrait atteindre 30%
Pour Corning, l'augmentation récente des bénéfices provient principalement de l'expansion des clusters d'IA. Avec la multiplication des liaisons optiques entre armoires et entre sites, les clients doivent installer plus de fibres optiques dans des espaces de conduits et d’armoires limités, ce qui stimule la demande pour des câbles optiques à haute densité et des systèmes de connexion.

