Le 12 novembre 2020, le protocole d'épargne DeFi Akropolis a perdu environ 2 millions de dollars en DAI depuis ses pools d'épargne yCurve et sUSD. L'attaquant a déployé un faux token ERC-20 dont le transferFrom réentrait la logique de dépôt d'Akropolis, lui permettant de se voir créditer des parts de pool sans livrer de collatéral réel.
Ce qui s'est passé
Les pools d'épargne d'Akropolis suivaient un schéma standard : un utilisateur appelle deposit, le pool tire les tokens de l'utilisateur via transferFrom, puis crédite l'utilisateur de parts de pool proportionnelles au dépôt.
Le pool ne validait pas que le token déposé était un actif légitime attendu, et le chemin de dépôt manquait de protection contre la réentrance. L'attaquant a exploité les deux omissions ensemble :
- Déploiement d'un faux token ERC-20 dont le
transferFromcontenait un callback vers la fonctiondepositd'Akropolis. - Appel de
depositen spécifiant le faux token. - Quand le pool a invoqué le
transferFromdu faux token, le callback a réentrédeposit— et, via du DAI réel emprunté en flash et utilisé dans l'appel réentrant, a manipulé la comptabilité du pool pour que l'attaquant soit crédité de parts de pool dépassant largement sa contribution réelle. - Retrait de la position de parts gonflée contre du DAI réel depuis le pool.
- Drainage de ~2 M$ sur les pools affectés.
Conséquences
- Akropolis a suspendu les pools affectés et publié un post-mortem.
- L'équipe s'est engagée sur un plan d'indemnisation ; la récupération depuis l'attaquant fut minime.
- Le token AKRO et la réputation du protocole ont été significativement endommagés.
Pourquoi c'est important
Akropolis est l'un des premiers exploits composés « faux token + réentrance » en DeFi — précédant les instances mieux connues du schéma identique chez Grim Finance (2021), BurgerSwap (2021) et Orion Protocol (2023).
Le bug composé est toujours les deux mêmes omissions :
- Pas de validation que le token déposé/échangé est un actif légitime attendu (la classe « adresse de confiance depuis un appelant non fiable » de Pickle / Cashio).
- Pas de garde de réentrance sur le chemin de dépôt (la classe DAO).
L'un ou l'autre seul est souvent survivable ; ensemble ils forment une primitive de drainage complète. Akropolis en novembre 2020 est l'une des premières instances claires du catalogue — et le fait que le même bug composé exact ait récidivé pendant des années par la suite, à travers chaînes et équipes, est l'une des démonstrations les plus claires du catalogue que connaître une classe de vulnérabilités en tant qu'industrie n'empêche pas les équipes individuelles de la livrer. Les primitives défensives (listes d'autorisation de tokens + nonReentrant) étaient librement disponibles en 2020 et le restent ; le bug continue d'être livré quand même.
Sources & preuves on-chain
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-akropolis-hack-november-2020
- [02]decrypt.cohttps://decrypt.co/48081/defi-platform-akropolis-admits-to-being-hacked-for-2-million
- [03]rekt.newshttps://rekt.news/akropolis-rekt