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 № 008Attaque par flash loan

Attaques par prêt flash sur bZx

La première attaque par prêt flash connue a drainé ~954 K$ de bZx deux fois en quatre jours, via des prêts Aave manipulant les oracles Uniswap.

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

Les 14 et 18 février 2020, le protocole de prêt bZx a subi les deux premières attaques par prêt flash jamais enregistrées sur le mainnet Ethereum. Les pertes combinées étaient modestes — environ 954 000 dollars — mais les attaques ont introduit une nouvelle classe d'exploit qui a depuis représenté des milliards en pertes.

Ce qui s'est passé

Les prêts flash avaient été lancés par Aave environ un mois plus tôt. Ils permettent à un utilisateur d'emprunter n'importe quel montant d'un token sans collatéral, à condition qu'il soit remboursé dans la même transaction. L'attaquant de bZx a réalisé que cette primitive pouvait financer le capital temporaire requis pour manipuler les prix on-chain.

Attaque 1 — 14 février (~350 K$ / 1 193 ETH)

L'équipe bZx était sur scène à ETHDenver quand le premier exploit a été déclenché :

  1. Emprunt flash d'ETH depuis un contrat de marge sur la plateforme Fulcrum de bZx.
  2. Emprunt de WBTC sur bZx contre une position délibérément sous-collatéralisée (un bug séparé de bZx l'a permis).
  3. Vente du WBTC emprunté sur le pool Uniswap WBTC/ETH, poussant le prix du WBTC fortement à la baisse.
  4. Rachat du WBTC au prix déprimé sur Kyber (qui lisait le prix Uniswap manipulé comme son oracle).
  5. Remboursement du prêt flash, partant avec le profit du différentiel de prix.

Attaque 2 — 18 février (~600 K$ / 2 378 ETH)

Quatre jours plus tard, un attaquant séparé a exploité le même schéma d'oracle en utilisant sUSD comme levier de manipulation — pompant le prix reporté de sUSD contre ETH via des achats financés par prêt flash, puis empruntant massivement contre le collatéral gonflé.

Conséquences

  • bZx a mis en pause les deux contrats attaqués et corrigé les bugs spécifiques de dépendance à l'oracle et de sous-collatéralisation.
  • Les deux pertes ont finalement été absorbées par le protocole depuis les réserves.
  • bZx a subi un troisième incident majeur en novembre 2021 — une compromission de clé privée qui a drainé environ 55 M$ — et a effectivement fermé son produit de prêt après.

Pourquoi c'est important

bZx est l'incident fondateur de la catégorie attaque par prêt flash. Chaque exploit par prêt flash depuis — Beanstalk, Cream Finance, Cetus, d'innombrables incidents plus petits — est un descendant du même schéma : acquérir temporairement du capital massif → manipuler un oracle de prix on-chain → extraire de la valeur contre la lecture manipulée → rembourser le prêt.

Les réponses défensives — oracles pondérés dans le temps, flux de prix découplés, maintenance d'invariant résistante aux prêts flash — sont toutes des conséquences de la paire bZx.

Sources & preuves on-chain

  1. [01]coindesk.comhttps://www.coindesk.com/tech/2020/02/19/everything-you-ever-wanted-to-know-about-the-defi-flash-loan-attack
  2. [02]coindesk.comhttps://www.coindesk.com/markets/2020/02/18/defi-project-bzx-exploited-for-second-time-in-a-week-loses-630k-in-ether
  3. [03]quantstamp.comhttps://quantstamp.com/blog/market-dynamics-of-the-1st-bzx-hack-part-1

Dépôts liés