Zum Inhalt springen
Gegr. MMXXVIBd. VI · № 273RSS
Blockchain Breaches

Ein Archiv von Sicherheitsvorfällen im Kryptobereich — Hacks, Exploits, Bridge-Ausfälle und Rug Pulls, dokumentiert mit On-Chain-Belegen.

Dossier № 015Smart-Contract-Bug

Pickle Finance Fake-Jar-Drain

19,76 Mio. DAI aus Pickle Finance abgezogen, nachdem der Angreifer zwei gefälschte 'Jar'-Verträge erstellte und eine fehlende Whitelist-Prüfung ausnutzte.

Datum
Chain(s)
Status
Mittel entwendet

Am 21. November 2020 verlor das Yield-Aggregator-Protokoll Pickle Finance 19,76 Millionen DAI (~19,76 Mio. $ zur damaligen Zeit angesichts des DAI-Pegs) in einem mehrstufigen Exploit, den PeckShield als den komplexesten DeFi-Angriff von 2020 charakterisierte. Der Bug: Die "Jar"-Verträge des Protokolls vertrauten jedem Aufrufer dabei zu identifizieren, was ein legitimer Jar war und was nicht.

Was geschah

Pickle Finance verwendete eine "Jar"-Abstraktion — ein renditebringender Vault, der Nutzer-Einzahlungen in verschiedenen DeFi-Strategien repräsentierte. Der ControllerV4 Smart Contract verwaltete diese Jars und stellte eine Funktion swapExactJarForJar() bereit, die es Nutzern erlaubte, Mittel zwischen Strategien zu bewegen.

Die Schwachstelle hatte zwei Hälften:

  1. swapExactJarForJar() validierte nicht, ob die bereitgestellten "Jar"-Argumente auf einer Whitelist legitimer Pickle-Jars standen. Jeder Vertrag, der behauptete, ein Jar zu sein, wurde akzeptiert.
  2. Die Funktion verifizierte auch nicht, dass die Strategie hinter jedem Jar authentisch war, was es erlaubte, dass angreiferkontrollierter Code im privilegierten Aufrufpfad aufgerufen wurde.

Der Angriff:

  1. Deployte zwei gefälschte "Jar"-Verträge, die die erwartete Jar-Schnittstelle bereitstellten, aber vollständig angreiferkontrolliert waren.
  2. Rief swapExactJarForJar() mit dem legitimen pDAI-Jar als Quelle und dem gefälschten Jar als Ziel auf.
  3. Der ControllerV4-Vertrag hob brav DAI aus dem echten StrategyCmpdDaiV2 (Pickles Compound-DAI-Strategie) ab und legte sie in den angreiferkontrollierten "Jar", der die DAI einfach an den Angreifer weiterleitete.
  4. Zog 19,76 Millionen DAI aus der Strategie in einer einzigen Transaktion ab.

Folgen

  • Pickle Finance pausierte betroffene Verträge und lieferte Notfall-Patches.
  • Der PICKLE-Governance-Token fiel ~50 % intraday auf die Nachricht.
  • Das Protokoll überlebte, kehrte aber nie zu seinem Vorfall-TVL zurück; Pickle ging schließlich in eine Partnerschaft mit Yearn ("Pickle ↔ Yearn Cooperation").
  • Die Mittel wurden über Tornado Cash gewaschen; keine Wiederherstellung.

Warum es wichtig ist

Pickle ist eine der frühesten Fallstudien für die Fake-Vertrags-Injection-Klasse von Bug — wenn eine privilegierte Operation Vertragsadressen als Parameter akzeptiert, muss jede dieser Adressen gegen eine autoritative Whitelist validiert werden, nicht basierend auf Interface-Konformität als legitim angenommen. Dieselbe Klasse von Schwachstelle ist bei Protokollen wiederholt aufgetreten, von Cashio (Solana, 2022) bis Hedgey Finance (Ethereum, 2024).

Pickle ist auch bemerkenswert, weil es zeigt, dass Komplexität in DeFi-Protokollen sich in Angriffsfläche aufaddiert. Yield-Aggregatoren, die über mehrere Sub-Strategien routen — jede mit eigener Vertragsschnittstelle, Einzahlungs-/Auszahlungsfluss und Vertrauensannahmen — multiplizieren die Anzahl der Wege, wie ein Angreifer einen bösartigen Vertrag in den Routing-Pfad einschleusen kann.

Quellen & On-Chain-Belege

  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/

Verwandte Einträge