Prix virtuel MetaSwap de Saddle Finance
Le metapool sUSDv2 de Saddle a perdu 11,9 M$ : un bug connu de MetaSwapUtils a été redéployé par erreur ; les bots BlockSec ont sauvé 3,97 M$.
- Date
- Victime
- Saddle Finance
- Chaîne(s)
- Statut
- Partiellement récupéré
Le 30 avril 2022 à 07h40 UTC, l'AMM d'actifs stables Saddle Finance a perdu environ 11,9 millions de dollars lorsqu'un attaquant a exploité le metapool sUSDv2 via une vulnérabilité qui avait été corrigée dans le code canonique Saddle des mois plus tôt — mais qu'une ancienne version vulnérable de la bibliothèque MetaSwapUtils avait été redéployée par erreur aux côtés du metapool.
Ce qui s'est passé
Les metapools de Saddle utilisaient une bibliothèque MetaSwapUtils partagée pour calculer le prix virtuel des jetons LP pendant les swaps inter-pools. Une ancienne version de cette bibliothèque contenait un bug qui l'empêchait d'utiliser correctement la valorisation basée sur le prix virtuel pendant les swaps de metapool — un attaquant pouvait manipuler le prix du jeton LP en acheminant des swaps financés par prêt flash à travers le pool.
L'équipe Saddle avait corrigé le bug et livré un MetaSwapUtils corrigé dans le dépôt Saddle canonique. Pour des raisons que le post-mortem de l'équipe décrit comme « une erreur de déploiement inconnue », le metapool sUSDv2 sur le mainnet Ethereum a été déployé avec l'ANCIENNE bibliothèque vulnérable même après que le correctif était disponible.
L'attaque :
- Emprunt flash de fonds et exécution d'une séquence de swaps via le metapool sUSDv2.
- Manipulation du prix virtuel du jeton LP du metapool via la bibliothèque buggée.
- Échange des jetons LP à prix artificiel contre sUSD et autres actifs sous-jacents, partant avec la valeur.
Drain initial : ~14,8 M$ en actifs mixtes.
Conséquences
- Les bots whitehat de BlockSec ont détecté le schéma d'exploit on-chain et, utilisant un service interne « front-run-the-exploit », ont sauvé 3,97 M$ en rejouant le même exploit et en acheminant les recettes vers une adresse de récupération.
- Saddle a mis en pause les swaps metapool et migré vers un déploiement vérifié-correct de
MetaSwapUtils. - Perte nette après le sauvetage de BlockSec : ~11,9 M$, jamais récupérés auprès de l'attaquant original.
Pourquoi c'est important
Saddle est le cas d'école pour pourquoi la provenance du déploiement doit correspondre au dépôt de code, de bout en bout. Un bug corrigé dans le code source n'est corrigé pour les utilisateurs que lorsque le contrat on-chain reflète la version corrigée. Le pipeline de déploiement de chaque équipe de protocole doit vérifier, automatiquement, que le bytecode de chaque contrat en service correspond au bytecode produit par la source auditée — et que les bibliothèques dont il dépend sont les versions auditées, pas des copies obsolètes.
Le sauvetage BlockSec est également l'un des exemples les plus nets de MEV white-hat faisant un vrai travail — correspondance de schéma sur la forme de transaction malveillante et front-running des victimes supplémentaires du même exploit avant qu'elles ne puissent être drainées. La pratique est maintenant significativement institutionnalisée ; des entreprises comme BlockSec, HYDN, et certains opérateurs Flashbots exploitent une infrastructure de surveillance qui a sauvé des centaines de millions en capital DeFi depuis.
Sources & preuves on-chain
- [01]blog.saddle.financehttps://blog.saddle.finance/4-30-2022-post-mortem-of-mainnet-susdv2-metapool-exploit/
- [02]medium.comhttps://medium.com/immunefi/hack-analysis-saddle-finance-april-2022-f2bcb119f38
- [03]blocksecteam.medium.comhttps://blocksecteam.medium.com/how-to-exploit-the-same-vulnerability-of-metapool-in-two-different-ways-nerve-bridge-saddle-774c271c8243