Akropolis Hack

Reported loss $2.0M
Ethereum
Flashloan Reentrancy Attack

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

Classification Ecosystem / Yield Aggregator / Reentrancy
Protocol Type Yield
Affected asset / contract AKRO
Implementation language Solidity
Protocol links Website @akropolisio

Security review history

Build your security review skills

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