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 № 238Bug de smart contract

Attaque par donation ERC-4626 de Resupply

9,8 M$ drainés de Resupply en moins de 90 minutes quand un prêt flash de 4 000 $ a exploité un coffre wstUSR de 2 heures via une attaque par donation ERC-4626.

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

Le 26 juin 2025, le protocole de prêt DeFi Resupply — intégré aux écosystèmes Convex et Yearn — a été drainé d'environ 9,8 millions de dollars en moins de 90 minutes. L'attaquant a exploité une attaque par donation ERC-4626 classique combinée à une implémentation de coffre défaillante. Le coffre cible avait été déployé seulement 2 heures auparavant et détenait une valeur négligeable — exactement les conditions que l'attaque par donation nécessite. Un prêt flash de 4 000 $ s'est transformé en un casse de plusieurs millions de dollars.

Ce qui s'est passé

Resupply permettait aux utilisateurs d'emprunter son stablecoin reUSD contre divers actifs déposés. Le protocole utilisait des jetons de coffre ERC-4626 pour représenter les dépôts des utilisateurs — un schéma standard où le prix des parts du coffre est calculé comme totalAssets / totalSupply.

L'attaque par donation ERC-4626 est une classe de vulnérabilité bien documentée qui exploite un cas limite critique :

  • Lorsqu'un coffre a une offre totale très faible ou nulle de parts, donner des jetons directement au contrat du coffre (en contournant la fonction de dépôt) peut gonfler massivement le prix des parts.
  • Un attaquant peut ensuite déposer un montant minuscule, recevoir des parts minimales en raison du prix gonflé, et manipuler le taux de change à zéro via la division entière — contournant les vérifications de solvabilité qui dépendent des calculs de prix par part.

L'attaque :

  1. Ciblage du coffre wstUSR — un coffre Resupply nouvellement déployé qui était en service depuis seulement 2 heures et ne détenait essentiellement aucune valeur.
  2. Prise d'un prêt flash de 4 000 $ pour le capital opérationnel.
  3. Don de jetons directement au coffre wstUSR, gonflant ses totalAssets sans créer de nouvelles parts.
  4. Le calcul de prix par part du coffre est passé à des valeurs extrêmes — et via des erreurs de division entière dans les mathématiques Solidity, finalement à zéro.
  5. Avec le taux de change à zéro, les vérifications de solvabilité de Resupply passaient toute opération d'emprunt — le protocole croyait que la garantie de l'attaquant valait infiniment plus que la dette créée.
  6. Emprunt de millions en reUSD contre essentiellement un wei de garantie, puis échange du reUSD contre crvUSD et ETH via des agrégateurs DEX.

Vol net : environ 9,6-9,8 millions de dollars. 2 280 ETH ont été pontés vers Tornado Cash dans les heures suivant le drain.

Conséquences

  • Resupply a mis en pause les opérations du coffre affecté dès la détection de l'exploit.
  • L'équipe a publié un post-mortem identifiant le coffre wstUSR fraîchement déployé comme point d'entrée.
  • Aucune récupération publique — les fonds ont été blanchis via Tornado Cash dans la journée.

Pourquoi c'est important

L'incident Resupply est l'un des cas les plus nets pour pourquoi les coffres ERC-4626 nouvellement déployés sont catégoriquement dangereux. La vulnérabilité d'attaque par donation est documentée depuis au moins 2021 — OpenZeppelin a publié des avertissements explicites, les entreprises d'audit l'incluent sur des listes de contrôle standard, et les atténuations canoniques (mint initial de dead-shares, décalage de parts virtuelles) sont bien connues.

Les conditions qui ont rendu Resupply vulnérable :

  1. Coffre déployé sans dépôt initial protecteur — l'attaquant a trouvé le coffre dans son état « vide » où la manipulation par donation est mathématiquement dévastatrice.
  2. Aucun décalage de parts virtuelles — le schéma « parts virtuelles » d'Uniswap V4 / Solady qui durcit contre les attaques par donation n'était pas implémenté.
  3. Aucune vérification d'invariant au déploiement — le script de déploiement du protocole n'ensemençait pas chaque nouveau coffre avec le petit dépôt de dead-share qui aurait neutralisé l'attaque.

La leçon structurelle est opérationnellement simple : chaque nouveau déploiement de coffre ERC-4626 doit inclure un dépôt initial protecteur, idéalement verrouillé en permanence à une adresse de brûlage ou à un multi-sig DAO. La correction est une transaction au moment du déploiement. L'omettre a coûté à Resupply 9,8 M$.

Le schéma se répète à travers l'histoire de la DeFi — Hundred Finance, Sonne Finance, Onyx Protocol — et continue à produire des pertes pour les protocoles qui livrent des forks de Compound v2 ou des implémentations ERC-4626 sans les atténuations bien documentées. Le coût cumulé de l'omission du schéma de dépôt initial est, à présent, bien dans les centaines de millions.

Sources & preuves on-chain

  1. [01]nabilech.comhttps://nabilech.com/resupplyfi-rekt-how-a-4k-flash-loan-led-to-a-9-8m-erc-4626-donation-attack/
  2. [02]halborn.comhttps://www.halborn.com/blog/post/explained-the-resupply-hack-june-2025
  3. [03]decrypt.cohttps://decrypt.co/327148/hacker-drained-9-6-million-from-defi-stablecoin-protocol-resupply

Dépôts liés