Am 23. Juli 2022 verlor die dezentrale Musik-Streaming-Plattform Audius 18,56 Millionen AUDIO-Tokens — etwa 6,05 Millionen US-Dollar wert zu der Zeit — als ein Angreifer eine Schwachstelle im Governance-Vertrags-Initialisierungscode des Protokolls ausnutzte. Der Bug war über zwei separate Audits von OpenZeppelin präsent.
Was geschah
Audius nutzte upgradefähige Governance-Verträge, die sich auf Initializer-Funktionen verließen, um ihren kritischen Zustand zum Deployment-Zeitpunkt zu setzen. Die Initialisierungsfunktionen sollten einmalig sein — genau einmal aufrufbar, vom Vertrags-Deployer, direkt nach dem Deployment.
Der Bug: Der Initializer für einen der Governance-Verträge war unter spezifischen Bedingungen wiederholbar aufrufbar. Der Angreifer rief ihn erneut auf, um die Eigentümerschaft des Vertragszustands zu übernehmen, einschließlich des Delegations- und Staking-Storage, der bestimmte, wer Governance-Stimmrecht hielt.
Mit Kontrolle über den Storage:
- Definierte der Angreifer seine Adresse als Halter von 10 Billionen AUDIO an delegierter Stimmkraft neu.
- Reichte einen bösartigen Governance-Vorschlag ein, der das gesamte Community-Treasury an ein vom Angreifer kontrolliertes Wallet abzog.
- Stimmte mit Ja auf seinen eigenen Vorschlag mit den fabrizierten 10 Billionen Stimmrecht.
- Der erste Versuch scheiterte aufgrund eines separaten Problems; der zweite Versuch gelang.
- Führte den Vorschlag aus und transferierte 18.564.497 AUDIO aus dem Treasury heraus, tauschte sie dann auf Uniswap gegen 704 ETH (~1,09 Mio. USD). Die verbleibenden Tokens verloren den meisten Wert, da der Markt die Verwässerung einpreiste.
Folgen
- Audius entdeckte den Exploit etwa 30 Minuten nach dem ersten fehlgeschlagenen Versuch und deployte einen Fix innerhalb einer Stunde.
- Das Team veröffentlichte ein Post-Mortem und entschädigte betroffene Token-Halter durch eine Kombination aus Treasury-Restrukturierung und Token-Supply-Anpassungen.
- Die Verträge waren zweimal von OpenZeppelin auditiert worden; keines der Audits fing den wiederholbaren Initializer-Bug.
Warum es wichtig ist
Audius ist der kanonische Fall dafür, warum Initializer-Funktionen gefährliche Primitive sind. Das Muster wiederholt sich im Upgradeable-Proxy-Ökosystem:
- Parity Multisig (2017) — eine wiederholbar aufrufbare
initWalletermöglichte sowohl den ursprünglichen 30-Mio.-USD-Diebstahl als auch das spätere 150-Mio.-USD-Einfrieren. - Audius (2022) — gleiche Ursache, andere Vertragsarchitektur, 6 Mio. USD Verlust.
- Das Muster erscheint immer wieder, weil die sichere Implementierung (
initializer-Modifier, explizite Ownership-Prüfungen, atomares Deployment + Initialisierung) eine zusätzliche Annotation von der unsicheren entfernt ist.
Die tiefere Audius-Lektion ist unbequemer: Zwei Audits einer Top-Firma fingen diesen Bug nicht. Audits bieten sinnvollen, aber nicht absoluten Schutz; formale Verifikation von Initialisierungsmustern und Economic-Invariant-Fuzzing von Governance-Verträgen sind die zusätzlichen defensiven Schichten, die seitdem häufiger geworden sind.
Quellen & On-Chain-Belege
- [01]decrypt.cohttps://decrypt.co/105913/how-audius-was-hacked-6m-ethereum-tokens
- [02]cryptoslate.comhttps://cryptoslate.com/attackers-stole-6-million-from-audius-by-exploiting-a-bug-in-the-contract/
- [03]bleepingcomputer.comhttps://www.bleepingcomputer.com/news/security/hackers-steal-6-million-from-blockchain-music-platform-audius/