Akropolis Hack
What happened
On November 12, 2020, an attacker used a malicious ERC-20 callback to re-enter Akropolis's SavingsModule deposit flow. Missing token validation and reentrancy protection caused one real DAI deposit to be credited twice, letting the attacker mint and redeem unbacked pool shares from the YCurve and sUSD pools. Losses totalled about 2.03 million DAI.
How it happened
Akropolis allowed an attacker-controlled token to be supplied to its deposit function. When SavingsModule called transferFrom on that token, its callback re-entered deposit with real DAI. Shares were calculated from the balance change before and after each deposit, so the same DAI transfer was counted in both the re-entrant and original calls.
The attacker repeatedly minted unbacked pool tokens, redeemed them from the affected pools, and used dYdX flash loans to make the sequence atomic. The flash loan funded the execution; the root causes were unsupported-token validation and missing reentrancy protection.
Protocol details
Security review history
- Extropy View report
Evidence
Understand the attack patterns
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.