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.
Case & protocol details
Attack Timeline
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.
Security review history
- Extropy Report
Evidence & learning
Attack pattern
Compare incidents →Sources and on-chain records
- report Post-mortem rekt.news
- report Post-mortem rekt.news
- transaction Transaction etherscan.io
- analysis Website reference theblockcrypto.com
- analysis PeckShield: Akropolis Incident Root Cause Analysis peckshield.medium.com
Practice this exploit pattern safely
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.