Tornado Cash Governance-Übernahme
Tornado Cash DAO wurde gekapert: Angreifer selfdestructte einen Vorschlag und redeployte Schadcode an derselben Adresse — 1,2M Stimmen vs ~70K legitime.
- Datum
- Opfer
- Tornado Cash
- Chain(s)
- Status
- Zurückerlangt
Am 20. Mai 2023 wurde die Tornado Cash DAO von einem Angreifer übernommen, der eine subtile Eigenschaft des Vertrags-Redeployments ausnutzte. Der bösartige Vorschlag behauptete, byte-identisch mit einem früheren, community-genehmigten Vorschlag zu sein — also stimmten die Wähler zu. Nachdem er passierte, selfdestructte der Angreifer die Vorschlagslogik und redeployte vollständig anderen bösartigen Code an derselben Adresse und ergriff 1,2 Millionen Stimmen gegen ~70.000 legitime, um die DAO zu leeren. Netto-Diebstahl: rund 2,17 Millionen Dollar (Rekts Leaderboard listet 750.000 $, was eine andere Buchhaltung realisierten Werts widerspiegelt). Der Angreifer gab später die Governance-Kontrolle zurück.
Was geschah
Tornado Cashs DAO führte genehmigte Vorschläge per delegatecall in einen Vorschlagsvertrag aus. Der Angriff missbrauchte die Differenz zwischen dem Zeitpunkt, an dem Wähler einen Vorschlag prüfen, und dem Zeitpunkt, an dem sein Code tatsächlich ausgeführt wird:
- Der Angreifer reichte einen Vorschlag mit Logik ein, die identisch mit einem zuvor genehmigten, vertrauenswürdigen Vorschlag erschien. Wähler erkannten den „selben" Code und stimmten zu.
- Der Vorschlagsvertrag enthielt eine versteckte
emergencyStop()-Funktion mitselfdestruct. - Nachdem der Vorschlag passierte, aber vor/bei Ausführung, rief der Angreifer
emergencyStop()auf, zerstörte den Code des Vorschlagsvertrags und — entscheidend — setzte die Deployment-Nonce zurück / gab die Adresse frei. - Der Angreifer redeployte komplett anderen bösartigen Code an dieselbe Adresse (mit der
CREATE2-artigen Adresswiederverwendungs-Eigenschaft, dieselfdestructdamals ermöglichte). - Als die DAO den „genehmigten" Vorschlag per
delegatecallausführte, lief nun der substituierte bösartige Code des Angreifers — der 10.000 Governance-Stimmen an jede von vielen vom Angreifer kontrollierten Adressen mintete, insgesamt 1,2 Millionen Stimmen gegen die ~70.000 legitimen vorhandenen Stimmen. - Mit Supermajoritätskontrolle entzog der Angreifer die TORN-Bestände der DAO und gesperrte Router-Gebühren.
Nachwirkungen
- TORN-Token fiel ~40-50 % auf die Nachricht.
- In einer ungewöhnlichen Wendung — nachdem der Angreifer totale Kontrolle demonstriert hatte — reichte er einen Vorschlag zur Wiederherstellung legitimer Governance ein und gab die Kontrolle ab, gab die DAO an ihre Community zurück. Er behielt die realisierten Token-Erlöse.
- Der Vorfall wurde zu einer kanonischen Fallstudie über die Gefahr der
selfdestruct-ermöglichten Adresswiederverwendung und die Lücke zwischen Vorschlagsprüfung und Vorschlagsausführung.
Warum es zählt
Der Tornado-Cash-Governance-Angriff ist einer der technisch elegantesten Exploits im Katalog, und er lehrt zwei verschiedene Lektionen:
-
„Der Code, den du geprüft hast, ist nicht notwendigerweise der Code, der ausgeführt wird." Governance-Wähler prüften Code zum Zeitpunkt der Vorschlagseinreichung; der Code, der zum Zeitpunkt der Ausführung lief, war anders, weil
selfdestruct+ Redeployment dem Angreifer erlaubten, den Bytecode des Vertrags an einer festen Adresse zu tauschen. Dies ist dieselbe strukturelle Lehre wie Swaprum und Hope Finance (deployt ≠ auditiert), verallgemeinert auf Governance. -
selfdestruct-ermöglichte Adresswiederverwendung ist eine grundlegende Gefahr. Der Angriff hing von der EVM-Eigenschaft ab (seit EIP-6780 eingeschränkt), dassselfdestructeine Adresse für Redeployment mit anderem Code freigab. Der Exploit ist einer der prominentesten Gründe, warum dieselfdestruct-Semantik der EVM später verschärft wurde.
Die Entscheidung des Angreifers, die Governance-Kontrolle zurückzugeben, ist auch bemerkenswert — einer von mehreren Katalogfällen (Mango Markets, die DODO-Whitehats, dieser), in denen die Beziehung des Täters zu den Mitteln zwischen „Dieb" und „aggressivem Demonstrant" mehrdeutig war. Die rechtliche und ethische Linie — stellt das Ausführen von Logik, die der Vertrag erlaubt, ein Verbrechen dar? — bleibt die ungelöste Frage, die sich durch die gesamte DeFi-Exploit-Ära zieht.
Quellen & On-Chain-Belege
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-tornado-cash-hack-may-2023
- [02]coindesk.comhttps://www.coindesk.com/tech/2023/05/21/attacker-takes-over-tornado-cash-dao-with-vote-fraud-token-slumps-40
- [03]medium.comhttps://medium.com/@zan.top/unpacking-the-tornado-cash-governance-attack-15b40691ca2e