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 № 019Bug de smart contract

Mint infini de Cover Protocol

Un bug storage/memory dans le Blacksmith de Cover a minté 40 quintillions de COVER, le prix chutant de 700 $ à moins de 5 $. Tous les fonds rendus.

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

Le 28 décembre 2020, le protocole d'assurance DeFi Cover Protocol a subi un exploit de mint infini qui a produit plus de 40 quintillions de tokens COVER depuis son contrat de liquidity mining Blacksmith. Le prix du token s'est effondré de ~700 $ à moins de 5 $ en quelques heures. L'attaquant — Grap.Finance, revendiquant une motivation white-hat — a rendu tous les fonds avec un message public lisant « La prochaine fois, occupez-vous de vos propres affaires. » Total drainé et rendu : ~9,4 M$.

Ce qui s'est passé

Le contrat Blacksmith de Cover gérait les récompenses de liquidity mining : les utilisateurs stakaient des tokens LP et accumulaient des récompenses COMP au fil du temps. Le contrat suivait la dette de récompense de chaque utilisateur via une variable d'état comparant l'état actuel du pool au dernier checkpoint réclamé par l'utilisateur.

Le bug résidait dans comment Solidity gérait les références memory versus storage pour une variable d'état critique utilisée dans le calcul de récompense. Spécifiquement : le contrat assignait une struct du storage à une variable memory, modifiait la copie memory, et supposait que les changements persisteraient — mais dans la sémantique de Solidity, une copie memory est une valeur séparée qui n'écrit pas en retour vers le storage automatiquement.

L'attaquant a réalisé que le bug lui permettait de déclencher des accumulations de récompense contre un état périmé à répétition — chaque appel accumulant des récompenses COVER additionnelles comme si la mutation d'état de la réclamation précédente n'avait jamais été écrite. En bouclant l'opération, il a frappé 40 000 000 000 000 000 000 (40 quintillions) de tokens COVER, submergeant complètement l'offre légitime.

Conséquences

  • Le token COVER s'est effondré d'environ 97 % en une heure alors que l'offre fraîchement mintée était vendue via 1inch et autres agrégateurs DEX.
  • Binance a suspendu le trading COVER dans les heures de l'exploit.
  • L'attaquant — Grap.Finance, un projet DeFi séparé — a publiquement revendiqué la responsabilité via Twitter, affirmé que l'attaque était une démonstration white-hat, et rendu tous les fonds volés à un multisig contrôlé par Cover.
  • Le message de Grap.Finance — « La prochaine fois, occupez-vous de vos propres affaires » — est devenu un moment cité dans la culture sécurité DeFi et largement cité comme exemple d'opérations white-hat comme responsabilité communautaire.
  • Cover Protocol a annoncé une migration de token vers un contrat redessiné avec une gestion memory/storage appropriée ; le projet ne s'est jamais pleinement rétabli sa position de marché pré-incident et a finalement été acquis par Yearn Finance.

Pourquoi c'est important

L'incident Cover est l'un des cas les plus clairs pour comment la sémantique memory/storage de Solidity est une source pérenne de bugs à fort impact. La séparation du langage entre storage (persistant, coûte du gas) et memory (transitoire, moins cher) est essentielle pour des contrats efficaces, mais le système de types n'avertit pas le développeur quand assigner une struct storage à une variable memory produit une copie plutôt qu'une référence. Les bugs de cette classe ont produit des exploits chez :

  • Cover Protocol (déc. 2020) — mint infini.
  • bZx (sept. 2020) — bug de gestion memory connexe dans la logique de prêt flash.
  • Multiples incidents plus petits sur 2021-2024.

Les réponses défensives incluent :

  • Analyseurs statiques (Slither, Echidna) qui signalent les assignations storage-vers-memory suspectes.
  • Règles de linting exigeant les mots-clés storage ou memory explicites sur chaque référence.
  • Vérification formelle des invariants de mutation d'état.

La réponse Grap.Finance a aussi établi un schéma devenu plus courant au fil du temps : d'autres projets DeFi agissant comme police de sécurité informelle en exploitant des bugs dans des protocoles et en rendant les fonds, en partie comme PR et en partie comme tentative sincère de démontrer des vulnérabilités avant que des acteurs malveillants puissent les exploiter. Le schéma est contesté — il normalise « compromettre d'abord, demander ensuite » — mais il a démontrément sauvé de l'argent réel à plusieurs occasions.

Sources & preuves on-chain

  1. [01]mudit.bloghttps://mudit.blog/cover-protocol-hack-analysis-tokens-minted-exploit/
  2. [02]coindesk.comhttps://www.coindesk.com/markets/2020/12/28/cover-protocol-attack-perpetrated-by-white-hat-funds-returned-hacker-claims
  3. [03]nonseodion.medium.comhttps://nonseodion.medium.com/deep-dive-into-cover-protocols-december-28-2020-exploit-50e7966741c4

Dépôts liés