Tornado Cash Hack
What happened
In May 2023, an attacker took over Tornado Cash governance on Ethereum by replacing an approved proposal's code before execution. Halborn reports that 483,000 TORN, valued at about $2.17 million, was drained from governance vaults.
Approval of a proposal address did not ensure that the code executed later was the code voters reviewed. Contract replacement followed by delegatecall let the attacker modify governance storage.
How it happened
- Voters approved a proposal presented as equivalent to an earlier proposal, overlooking hidden self-destruct functionality.
- Before execution, the attacker destroyed the proposal and its deployment contract, then used
CREATE2andCREATEto deploy different code at the approved address. - Governance executed the replacement code through
delegatecall, which fabricated locked TORN balances for attacker-controlled addresses and assigned about 1.2 million votes. - The attacker used that control to withdraw TORN from the governance vaults.
Protocol details
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.