Drainage par approbation obsolète d'une Safe Avalanche
Une approbation de jetons obsolète et jamais révoquée a permis de drainer ~7,45 M$ d'un multisig Safe 2 sur 7 sur Avalanche, mais un bot MEV a devancé le vol et restitué l'essentiel.
- Date
- Victime
- Avalanche Safe multisig
- Chaîne(s)
- Statut
- Partiellement récupéré
Le 26 octobre 2026, un multisig Safe Avalanche a été drainé d'environ 7,45 millions de dollars après qu'un attaquant a détourné une approbation de jetons que le portefeuille avait accordée — et jamais révoquée — sept mois plus tôt, même si un bot MEV a devancé le vol et a finalement restitué la majeure partie des actifs.
Ce qui s'est passé
La victime était une Safe 2 sur 7 (0x631fca…b9b8) sur la C-Chain d'Avalanche. Le 7 mars 2026, la Safe avait accordé des approbations ERC-20 permanentes et illimitées pour WAVAX, USDC, WETH.e et BTC.b à l'adresse dépensière 0x3725bd4d175283108156c3f15f86e1c51266155d. Cette adresse hébergeait le contrat de pool d'un opérateur sur Ethereum, Base et Arbitrum, mais sur Avalanche elle était vide. Comme l'approbation n'a jamais été révoquée, quiconque pouvait placer du code à cette adresse pouvait dépenser les jetons de la Safe.
Le 26 octobre, l'attaquant a fait exactement cela, en utilisant l'assistant CreateCall propre à Safe pour déployer de manière déterministe un contrat sweeper à l'adresse approuvée, puis en appelant transferFrom pour extraire les soldes. Aucune clé de signature n'a été compromise et aucun contrat Safe n'a mal fonctionné — le portefeuille s'est comporté exactement comme configuré. Le panier dérobé s'élevait à environ 3,08 millions d'USDC, près de 350 000 WAVAX, ~182 WETH.e et 10,8 BTC.b, soit un total d'environ 7,45 millions de dollars. Coup de théâtre : la transaction de l'attaquant initial (0xf1f8…1289) a échoué parce qu'un bot MEV a copié le drainage identique et s'est exécuté en premier dans le même bloc (0xf88a…7ed5), capturant les fonds à sa place.
Conséquences
L'opérateur du bot MEV a agi de facto en white hat, signalant qu'il restituerait les actifs contre une récompense. Le 27 octobre, un propriétaire de la Safe a accepté on-chain de laisser le bot conserver 42 500 WAVAX (environ 371 000 dollars) ; à ce moment-là, tous les USDC, WETH.e et BTC.b ainsi qu'environ 307 800 WAVAX avaient déjà été renvoyés, seule la récompense restant retenue. L'épisode rappelle Transit Swap, où l'essentiel d'un drainage par approbation de 21 millions de dollars avait été restitué après des négociations on-chain.
Pourquoi c'est important
Les approbations obsolètes et illimitées sont un passif à combustion lente : le danger a été créé ici en mars et a explosé en octobre, bien après que plus personne ne surveillait. La même classe de faille a vidé les utilisateurs de LI.FI et de Socket, où des approbations infinies ont transformé un simple bug de contrat en drainage de masse. Ce cas ajoute une leçon plus tranchante : une approbation pointant vers une adresse qui est un contrat actif sur une chaîne mais vide sur une autre est une porte dérobée latente, car le déploiement déterministe de Safe a permis à un attaquant de simplement placer du code là où l'approbation l'attendait. Révoquez les approbations que vous n'utilisez plus, et ne supposez jamais qu'une adresse dépensière inutilisée est sûre simplement parce qu'elle n'a pas de code aujourd'hui.
Sources & preuves on-chain
- [01]dev.tohttps://dev.to/pandasecurity/avalanche-safe-a-stale-approval-to-an-empty-address-3kda
- [02]github.comhttps://github.com/SunWeb3Sec/DeFiHackLabs/pull/1313
- [03]cryptotimes.iohttps://www.cryptotimes.io/2026/10/27/avalanche-safe-loses-7-45m-to-misconfigured-approvals-mev-bot-front-runs-exploit/
- 0xf88a7960a07832e1bf5be64edbd12a9e615b4f63959a4b87a147f0c63c007ed5
- 0xf1f87d370290afe269ae8eb30fe8e5e4694ad153914a2de6d980641f4a331289