Tornado Cash Hack

Reported loss $2.2M
Ethereum
Other

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.

Technical root cause

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

  1. Voters approved a proposal presented as equivalent to an earlier proposal, overlooking hidden self-destruct functionality.
  2. Before execution, the attacker destroyed the proposal and its deployment contract, then used CREATE2 and CREATE to deploy different code at the approved address.
  3. Governance executed the replacement code through delegatecall, which fabricated locked TORN balances for attacker-controlled addresses and assigned about 1.2 million votes.
  4. The attacker used that control to withdraw TORN from the governance vaults.

Protocol details

Classification Other / Governance
Protocol Type Privacy
Affected asset / contract TORN
Implementation language Solidity
Protocol links Website @TornadoCash

Build your security review skills

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.