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 № 087Réentrance

Réentrance ERC-677 Voltage Finance

Voltage Finance a perdu 4 M$ sur Fuse : le hook transferAndCall des ERC-677 a permis une réentrance dans borrow avant que la dette ne soit enregistrée.

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

Le 31 mars 2022, Voltage Finance — une suite DeFi sur le Fuse Network — a perdu environ 4 millions de dollars depuis son marché de prêt via une réentrance ERC-677. Le fork Voltage d'un contrat de prêt style Compound supportait les jetons ERC-677, dont le callback transferAndCall laissait un attaquant rentrer dans la fonction borrow avant que sa dette ne soit enregistrée.

Ce qui s'est passé

Le marché de prêt de Voltage acceptait divers jetons comme collatéral, y compris des jetons ERC-677. ERC-677 étend ERC-20 avec une fonction transferAndCall — quand les jetons sont transférés, le hook onTokenTransfer du contrat destinataire est invoqué, lui permettant d'exécuter du code arbitraire durant le transfert.

Le contrat de prêt suivait le pattern standard (vulnérable) : envoyer les jetons empruntés à l'emprunteur, puis mettre à jour la comptabilité de dette de l'emprunteur. Avec un jeton ERC-677, l'étape « envoyer les jetons empruntés » déclenchait le callback onTokenTransfer de l'emprunteur avant que la dette ne soit enregistrée.

L'attaque :

  1. A utilisé un jeton ERC-677 dans le chemin d'emprunt.
  2. A appelé borrow — le contrat a envoyé les jetons empruntés, déclenchant le callback onTokenTransfer de l'attaquant.
  3. Depuis l'intérieur du callback — avant que la dette du premier emprunt ne soit enregistrée — l'attaquant a rentré dans borrow à nouveau, contre une collatéral que le contrat voyait toujours comme non grevée.
  4. A bouclé la réentrance, accumulant des fonds empruntés sans dette enregistrée correspondante.
  5. Est parti avec ~4 M$.

Conséquences

  • Voltage Finance a mis en pause le marché de prêt et publié un post-mortem identifiant la réentrance ERC-677 comme cause racine.
  • Un plan de compensation a été déployé ; la récupération depuis l'attaquant a été minimale.

Pourquoi c'est important

Voltage Finance fait partie de la lignée de réentrance de jetons à callback — la même classe structurelle que l'exploit AMP de Cream Finance (ERC-777 tokensReceived). La leçon récurrente :

Les standards de jetons avec callbacks de transfert (ERC-777, ERC-677, ERC-1363 et autres) cassent les hypothèses de réentrance qui tiennent pour l'ERC-20 simple. Un contrat de prêt ou de coffre qui est sûr face à la réentrance pour des jetons ERC-20 peut être complètement exploitable dès qu'il accepte un jeton à callback, parce que l'étape de « transfert » exécute maintenant du code contrôlé par l'attaquant en milieu d'opération.

Les réponses défensives :

  1. Appliquer des gardes de réentrance sur chaque chemin mutant l'état qui fait des transferts de jetons — pas sélectivement, et pas sous l'hypothèse que « les transferts ERC-20 ne rappellent pas » (vrai pour ERC-20 simple, faux pour les extensions à callback).
  2. Auditer le standard réel de chaque jeton listé, pas seulement « est-ce une interface ERC-20 ». Beaucoup de jetons implémentent ERC-20 plus une extension à callback ; l'extension est la surface d'attaque.
  3. Suivre checks-effects-interactions rigoureusement — enregistrer la dette avant d'envoyer les jetons empruntés, pour qu'un appel réentrant voie l'état mis à jour.

Voltage est l'une des entrées à plus faible perte du catalogue, mais c'est une instance nette d'une leçon que l'écosystème continue de réapprendre à travers les années et les chaînes : le jeton que vous listez détermine votre surface de réentrance, et les jetons à callback sont un modèle de menace différent de l'ERC-20 simple.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-voltage-finance-hack-march-2022
  2. [02]voltage-finance.medium.comhttps://voltage-finance.medium.com/voltage-finance-incident-post-mortem-1f9d0b8c4a9e
  3. [03]rekt.newshttps://rekt.news/voltage-finance-rekt

Dépôts liés