Aller au contenu
Fondé MMXXVIVol. VI · № 273RSS
Blockchain Breaches

Archive des incidents de sécurité dans les cryptomonnaies — piratages, exploits, défaillances de ponts et rug pulls, documentés avec des preuves on-chain.

Dossier № 110Bug de smart contract

Drainage de migration Team Finance

Team Finance a perdu 15,8 M$ lors d'une migration Uniswap v2→v3 : jetons verrouillés vers paire v3 biaisée puis remboursés comme 'reste' pour 2 700 $ de gaz.

Date
Chaîne(s)
Statut
Partiellement récupéré

Le 27 octobre 2022, le protocole de verrouillage de liquidité Team Finance — utilisé par des centaines de projets de jetons small-cap pour démontrer la crédibilité « liquidité verrouillée » — a été exploité pour 15,8 millions de dollars durant une migration Uniswap v2 → v3. L'attaquant a dépensé 2 700 $ en gaz pour exécuter le drainage. 7 millions de dollars ont été rendus après négociation on-chain.

Ce qui s'est passé

Le produit de Team Finance était un verrouilleur de liquidité : les projets de jetons verrouillaient leurs jetons LP Uniswap dans des contrats Team Finance comme engagement public que la liquidité sous-jacente ne serait pas ruggée. Le protocole offrait un helper de migration permettant aux projets de déplacer leur liquidité verrouillée de Uniswap v2 vers v3 de manière atomique.

Le helper de migration avait une faille dans sa logique de validation de prix. Lors de la migration de jetons LP de v2 vers v3, le helper :

  1. Retirait les jetons LP v2 du contrat Team Finance verrouillé.
  2. Remettait en pool les actifs sous-jacents dans une paire v3, avec la fourchette de prix et le ratio spécifiés par l'appelant.
  3. Remboursait tout « reste » d'actifs ne rentrant pas dans la position v3 cible à l'appelant.

L'omission fatale : le helper ne validait pas la fourchette de prix spécifiée par l'appelant contre aucun invariant de sécurité des fonds. Un attaquant appelant la migration pouvait :

  1. Spécifier une fourchette de prix v3 si biaisée que presque aucun des actifs sous-jacents n'était effectivement déposé dans le pool v3.
  2. Recevoir le gros de la liquidité verrouillée comme « remboursement du reste » du protocole.
  3. Partir avec la différence entre la valeur verrouillée pré-migration et la position v3 post-migration.

L'attaquant a ciblé quatre paires de jetons verrouillés — CAW (11,5 M$), Dejitaru Tsuka (1,7 M$), Kondux (0,7 M$), Feg (1,9 M$) — totalisant ~15,8 M$, avec un gaz total dépensé d'environ 2 700 $.

Conséquences

  • Team Finance a mis en pause les migrations immédiatement et publié un post-mortem.
  • L'attaquant s'est identifié comme un « whitehat » dans les mémos de transaction et a retourné environ 7 M$ des fonds volés.
  • Les ~9 M$ restants ont été conservés ; une partie a finalement été blanchie via Tornado Cash.
  • Team Finance a redessiné le helper de migration avec une validation appropriée de fourchette de prix.

Pourquoi c'est important

Team Finance est l'un des cas les plus nets pour comment « audité » n'équivaut pas à « sécurisé » — le contrat de migration avait été audité, mais l'audit n'incluait pas le contrôle spécifique d'invariant économique qui aurait attrapé ce bug. La classe de vulnérabilité (validation manquante sur les fourchettes de prix fournies par l'appelant) est structurellement identique à plusieurs autres exploits DeFi où les chemins de migration ou admin sautent la validation que les flux utilisateurs normaux imposent.

La leçon plus profonde, particulièrement pertinente pour les produits de verrouillage de liquidité : l'hypothèse de confiance est « la liquidité verrouillée ne peut pas être déplacée par le projet avant déverrouillage ». Tout chemin de code qui permet au projet de déplacer la liquidité verrouillée sans la déverrouiller — y compris pour migrations, mises à niveau ou « remboursements de reste » — est une porte dérobée au modèle de confiance que le produit entier existe pour imposer.

Le coût de gaz de 2 700 $ pour drainer 15,8 M$ est en soi une statistique frappante — un rappel que les exploits de contrats intelligents sont généralement des coûts de main-d'œuvre, pas des coûts en capital. Une fois la vulnérabilité identifiée, l'exploiter est essentiellement gratuit.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-team-finance-hack-october-2022
  2. [02]theblock.cohttps://www.theblock.co/post/180369/hacker-uses-2700-to-drain-15-8-million-from-team-finance
  3. [03]unchainedcrypto.comhttps://unchainedcrypto.com/team-finance-loses-15-8m-in-protocol-exploit/

Dépôts liés