Aller au contenu
Fondé MMXXVIVol. VI · № 273RSS
Blockchain Breaches

Archive des incidents de sécurité dans les cryptomonnaies — piratages, exploits, défaillances de ponts et rug pulls, documentés avec des preuves on-chain.

Dossier № 220Bug de smart contract

Arrondi de précision zkLend

9,5 M$ drainés de zkLend sur Starknet via un bug d'arrondi dans sa lib safeMath ; des arrondis répétés ont gonflé raw_balance jusqu'à vider les pools.

Date
Victime
zkLend
Chaîne(s)
Statut
Fonds dérobés

Le 12 février 2025, le protocole de prêt basé sur Starknet zkLend a été drainé d'environ 9,5 millions de dollars via un bug de précision/arrondi dans sa bibliothèque safeMath. L'attaquant a itéré un petit biais d'arrondi jusqu'à ce qu'il se compose en un solde entièrement synthétique assez grand pour drainer chaque pool. zkLend ne s'est jamais remis et a fermé ses opérations en juin 2025.

Ce qui s'est passé

Le langage Cairo de Starknet n'exprime pas nativement l'arithmétique flottante ; les protocoles implémentent leurs propres bibliothèques de math à virgule fixe. La safeMath de zkLend effectuait des divisions directes qui arrondissaient vers le bas à chaque opération. Utilisée une fois, la perte d'arrondi est invisible. Répétée des milliers de fois contre le bon pattern de mise à jour d'état, elle devenait composable en un exploit utilisable.

L'attaque a itéré un calcul touchant un champ raw_balance utilisé en interne pour la comptabilité. L'arrondi de chaque itération faisait dériver le champ vers le haut par minuscules incréments. Après suffisamment d'itérations, le raw_balance de l'attaquant avait été artificiellement gonflé à 1724 — bien au-dessus de tout dépôt légitime.

La fonction de rédemption convertissait ensuite le raw_balance gonflé en une réclamation de retrait contre les pools de zkLend. Chaque pool a été drainé par la rédemption.

Conséquences

  • zkLend a offert à l'attaquant une prime de 10 % et libération de responsabilité si les 3 300 ETH restants étaient retournés dans les 48 heures. La deadline est passée.
  • L'attaquant a bridgé les fonds volés vers Ethereum et tenté de blanchir via Railgun — les politiques de protocole de Railgun ont automatiquement retourné les fonds à l'adresse d'origine, piégeant brièvement l'attaquant. Ils ont finalement déplacé les fonds via Tornado Cash et d'autres routes.
  • zkLend n'a jamais rouvert les opérations de prêt. Le protocole a formellement fermé en juin 2025, quatre mois après l'exploit.

Pourquoi c'est important

zkLend a renforcé deux leçons qui récidivent dans l'histoire des exploits DeFi :

  1. Les bibliothèques de math à virgule fixe écrites de zéro pour de nouvelles VM sont une surface de vulnérabilité de frontière. La même classe de bug est apparue chez Cetus sur Sui plus tard en 2025, et chez KyberSwap sur EVM en 2023. Les nouvelles chaînes tendent à livrer de nouvelles bibliothèques de math qui n'ont pas été durcies contre la pleine surface d'attaque de leurs prédécesseurs EVM.

  2. Un seul exploit de taille moyenne peut être terminal pour un protocole. Là où les plus grands protocoles absorbent des pertes de 10-20 M$ via un remboursement médié par la gouvernance et continuent d'opérer, les protocoles de taille moyenne ne le peuvent souvent pas. Le coût d'un seul bug n'est pas seulement la perte — c'est l'existence continue du protocole.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-zklend-hack-february-2025
  2. [02]decrypt.cohttps://decrypt.co/305590/defi-lending-platform-zklend-9-million-exploit
  3. [03]thedefiant.iohttps://thedefiant.io/news/defi/starknet-based-zklend-shuts-down-amid-fallout-from-usd10-million-exploit

Dépôts liés