DODO AMM Hack

Reported loss $3.8M
Ethereum
Unprotected reinitialization

What happened

On 8 March 2021 UTC, a flaw in DODO V2 Crowdpooling let an attacker reconfigure affected pools during a flash-loan-funded transaction. The WSZO, WCRES, ETHA, and FUSI Crowdpools were affected; DODO's trading module, V1 pools, and other V2 pools were not. DODO estimated the gross loss at about $3.8 million in USDT, ETH, and project tokens.

The root cause was an authorization and repeated-initialization defect, not a failure of flash lending itself. DODO later reported $3.1 million returned within 24 hours; that is separate from the gross-loss figure.

Technical root cause

DODO V2 Crowdpool init() did not enforce a one-time, authorized initialization invariant. Reinitialization during the flash-loan path let attacker-controlled counterfeit tokens replace the tracked pair and defeat the repayment check.

How it happened

  1. The attacker prepared counterfeit tokens and used flash-borrowed assets to interact with a vulnerable V2 Crowdpool.
  2. Its init() path could be called more than once, allowing the pool's tracked token pair to be replaced during the transaction.
  3. The attacker then used sync() and the reinitialized state so the repayment check no longer reflected the genuine assets that had been borrowed.
  4. That let real pool assets leave while the counterfeit-token state made the loan path appear settled.
  5. Mempool bots copied and front-ran parts of the sequence; their later returns helped recover much of the value but did not remove the original authorization flaw.

Protocol details

Classification Protocol Logic / Exchange (DEX) / Access Control
Protocol Type DEX
Affected asset / contract DODO
Implementation language Solidity
Protocol links Website @BreederDodo

Security review history

Funds Recovery

81.6%

Recovered

$3.1M

Net Loss

$699,200

Understand the attack patterns

Build your security review skills

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