Punk Protocol Initialize-Hijack
9 Mio. $ aus Punk Protocol Minuten nach Start abgezogen via delegatecall auf Initialize, das Angreifer als Forge setzte; 5 Mio. von White-Hats gerettet.
- Datum
- Opfer
- Punk Protocol
- Chain(s)
- Status
- Teilweise zurückerlangt
Am 10. August 2021 wurde das frisch gestartete Punk Protocol innerhalb von Minuten nach seinem öffentlichen Start um etwa 9 Millionen $ ausgeplündert. Der Exploit war ein Lehrbuch-erneut-aufrufbarer Initializer — der Angreifer rief Initialize() per delegatecall auf, setzte sich selbst als forge-Adresse des Projekts und zog dann die Reserven des Protokolls über legitime Auszahlungsfunktionen ab, die der Forge-Rolle vertrauten. Ein White-Hat-Front-Running-Bot rettete etwa 5 Millionen $ der gestohlenen Mittel. Die Verträge waren ohne Audit gestartet worden.
Was geschah
Die Verträge von Punk Protocol folgten einem aktualisierbaren Proxy-Muster mit einer Initialize()-Funktion, die die privilegierten Rollen des Protokolls setzte — einschließlich der forge-Adresse, die Auszahlungen und andere administrative Operationen kontrollierte. Wie es Standard ist, sollte Initialize() genau einmal aufrufbar sein, vom Deployer, zum Zeitpunkt des Deployments.
Der fatale Fehler: Initialize() konnte über delegatecall neu aufgerufen werden auf eine Weise, die die beabsichtigte One-Shot-Beschränkung des Protokolls umging. Der Angreifer:
- Identifizierte den erneut-aufrufbaren Initializer durch Standard-Vertragsanalyse.
- Verwendete
delegatecall, umInitialize()in einem Kontext aufzurufen, in dem der Aufruf gelang — dieforge-Adresse auf eine von ihm kontrollierte neu setzend. - Mit der neuen
forge-Rolle etabliert rief erwithdrawTo()undwithdrawToForge()über die legitimen Auszahlungs-Flows auf — aber mit der Adresse des Angreifers nun als Forge autorisiert. - Entzog die Reserven des Protokolls innerhalb von Minuten nach dem Start.
Der gesamte extrahierbare Betrag war etwa 9 Millionen $, aber MEV-Bots front-runnten die Transaktionen des Angreifers — sie beobachteten die bösartige Abhebung in der öffentlichen Mempool und spielten ähnliche Abhebungen ab, um einen Teil der Mittel zu extrahieren, bevor der Angreifer abschließen konnte. Einer dieser Front-Runner war ein White-Hat, der etwa 5 Millionen $ erfasste und sie anschließend an Punk Protocol im Austausch gegen eine Finder-Gebühr (~1 Mio. $ als Belohnung behalten) zurückgab.
Folgen
- Punk Protocol veröffentlichte einen Kompensationsplan, finanziert aus den geretteten 5 Mio. $ und aus Projekt-Treasury-Reserven.
- Das Team erkannte an, dass die Verträge ohne Sicherheits-Audit deployt worden waren — eine Tatsache, die im Post-Mortem prominent figurierte.
- Die verbleibenden ~3 Mio. $, die der ursprüngliche Angreifer behielt, wurden über Tornado Cash gewaschen; keine weitere Wiederherstellung.
Warum es wichtig ist
Der Punk-Protocol-Vorfall ist die kanonische Launch-ohne-Audit-Fallstudie. Die Schwachstelle — ein erneut-aufrufbarer Initializer, zugänglich über delegatecall — ist dieselbe strukturelle Klasse, die Parity Multisig 2017 zerstörte und später bei Audius 2022 und anderswo auftauchen würde. Es ist eines der am besten dokumentierten Bug-Muster in der Solidity-Geschichte. Jedes Audit, das von einer seriösen Firma durchgeführt wurde, hätte es gefangen.
Die strukturellen Lehren:
-
Nicht auditierte Verträge zum Launch sind ein bekanntes Angreiferziel. Versierte Operatoren überwachen neue Vertrags-Deployments speziell auf bekannte Bug-Muster. Das Fenster zwischen Deployment und Erkennung wird oft in Minuten, nicht Tagen gemessen.
-
Der
initializer-Modifier von OpenZeppelin — und äquivalente Muster in anderen Framework-Bibliotheken — existiert speziell, um die Punk-Protocol-Klasse von Bug zu verhindern. Es ist eine einzeilige Annotation. Sie zu überspringen ist ein unerzwungener Fehler. -
White-Hat-MEV ist jetzt eine bedeutende Komponente des DeFi-Sicherheits-Ökosystems. Die Tatsache, dass etwa 56 % des Punk-Protocol-Drains durch Front-Running statt durch koordinierte Team-Reaktion zurückgewonnen wurden, ist repräsentativ dafür, wie sich die moderne Incident-Response-Landschaft entwickelt hat — der beste Verbündete von Protokollen ist oft ein externer Bot, der zufällig zusieht.
Das Muster wiederholt sich: Eminence (Sept 2020), Punk Protocol (Aug 2021) und unzählige kleinere Vorfälle sind alle Variationen von "der Vertrag startete, Beobachter fanden innerhalb von Minuten eine bekannte Bug-Klasse, und der Großteil des Wertes wurde je nach dem, wer zuerst dort ankam, entweder extrahiert oder gerettet".
Quellen & On-Chain-Belege
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-punk-protocol-hack-august-2021
- [02]medium.comhttps://medium.com/punkprotocol/punk-compensation-plan-and-the-path-forward-c86b6143c01e