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

Vidage par fausse Jar de Pickle Finance

19,76 M$ DAI drainés de Pickle Finance après que l'attaquant a créé deux faux contrats « Jar » et exploité une vérification manquante dans swapExactJarForJar.

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

Le 21 novembre 2020, le protocole d'agrégation de rendement Pickle Finance a perdu 19,76 millions de DAI (~19,76 M$ à l'époque, étant donné le peg de DAI) dans un exploit en plusieurs étapes que PeckShield a caractérisé comme l'attaque DeFi la plus complexe de 2020. Le bug : les contrats « Jar » du protocole faisaient confiance à n'importe quel appelant pour identifier ce qui était une Jar légitime et ce qui ne l'était pas.

Ce qui s'est passé

Pickle Finance utilisait une abstraction « Jar » — un coffre porteur de rendement représentant les dépôts des utilisateurs dans différentes stratégies DeFi. Le contrat intelligent ControllerV4 gérait ces Jars et exposait une fonction swapExactJarForJar() qui permettait aux utilisateurs de déplacer des fonds entre stratégies.

La vulnérabilité avait deux moitiés :

  1. swapExactJarForJar() ne validait pas si les arguments « Jar » fournis étaient sur une liste blanche de Jars Pickle légitimes. Tout contrat prétendant être une Jar était accepté.
  2. La fonction ne vérifiait également pas que la stratégie soutenant chaque Jar était authentique, permettant au code contrôlé par l'attaquant d'être invoqué dans le chemin d'appel privilégié.

L'attaque :

  1. Déploiement de deux faux contrats « Jar » qui exposaient l'interface Jar attendue mais étaient entièrement contrôlés par l'attaquant.
  2. Appel à swapExactJarForJar() avec la Jar pDAI légitime comme source et la fausse Jar comme destination.
  3. Le contrat ControllerV4 a obéissamment retiré DAI depuis le vrai StrategyCmpdDaiV2 (la stratégie Compound DAI de Pickle) et l'a déposé dans la « Jar » contrôlée par l'attaquant, qui a simplement transmis le DAI à l'attaquant.
  4. Drainage de 19,76 millions de DAI de la stratégie en une seule transaction.

Conséquences

  • Pickle Finance a mis en pause les contrats affectés et a livré des correctifs d'urgence.
  • Le jeton de gouvernance PICKLE a chuté d'environ 50% intrajournalier sur la nouvelle.
  • Le protocole a survécu mais n'est jamais revenu à sa TVL pré-incident ; Pickle a finalement intégré un partenariat avec Yearn (« coopération Pickle ↔ Yearn »).
  • Les fonds ont été blanchis via Tornado Cash ; aucune récupération.

Pourquoi c'est important

Pickle est l'une des premières études de cas pour la classe de bug d'injection de faux contrat — quand une opération privilégiée accepte des adresses de contrats comme paramètres, chacune de ces adresses doit être validée contre une liste blanche autoritative, et non supposée légitime sur la base de la conformité d'interface. La même classe de vulnérabilité s'est répétée chez des protocoles allant de Cashio (Solana, 2022) à Hedgey Finance (Ethereum, 2024).

Pickle est également remarquable pour montrer que la complexité dans les protocoles DeFi se compose en surface d'attaque. Les agrégateurs de rendement qui acheminent à travers plusieurs sous-stratégies — chacune avec sa propre interface de contrat, flux de dépôt/retrait et hypothèses de confiance — multiplient le nombre de façons dont un attaquant peut glisser un contrat malveillant dans le chemin de routage.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-defi-protocol-pickle-finance-hack-nov-2020
  2. [02]immunebytes.comhttps://immunebytes.com/blog/pickle-finance-exploit-nov-21-2020-detailed-analysis/
  3. [03]blog.peckshield.comhttps://blog.peckshield.com/2020/11/21/pickle/

Dépôts liés