Aller au contenu
Fondé MMXXVIVol. VI · № 349RSS
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 № 348Bug de smart contract

Drainage d'un ancien bot keeper de MakerDAO

Un keeper ETH-A dormant de MakerDAO a perdu 200 WETH (~538 000 $) : un attaquant a exploité une fonction de retrait non protégée pour drainer des garanties bloquées depuis le Black Thursday 2020.

Date
Chaîne(s)
Statut
Fonds dérobés
Attribution
0x01EB957e5C7DcDDD60F3C875956cCc6fB9bDa5FA

Le 6 octobre 2026, un keeper de liquidation ETH-A de MakerDAO dormant — un bot tiers, et non le protocole central de MakerDAO — a été drainé de 200 WETH, d'une valeur d'environ 538 000 dollars, après qu'un attaquant a exploité une fonction de retrait non protégée dans le contrat d'implémentation du keeper. La garantie volée était restée intacte on-chain depuis les liquidations du « Black Thursday » de mars 2020.

Ce qui s'est passé

CertiK a remonté la perte jusqu'à l'implémentation du keeper 0x68399ed8aa33C5b43F863EE6782de492006A5546, où le sélecteur de fonction 0x8804d1de ne comportait pas la vérification ds-auth qui protégeait les autres fonctions privilégiées du contrat. La fonction acceptait n'importe quelle adresse comme adaptateur, appelait Vat.hope pour lui déléguer des droits et invoquait son join() — sans appeler ensuite nope, si bien que la délégation persistait. Lors du Black Thursday de mars 2020, ce keeper avait remporté quatre enchères ETH-A de 50 ETH chacune (IDs 1457–1460) avec des offres nulles et ne les avait jamais réglées, laissant 200 ETH bloqués dans le Flipper ETH-A retiré (0xd8a04F5412223F513DC55F839574430f5EC15531). Comme n'importe qui peut appeler deal sur une enchère close, l'attaquant a réglé ces enchères vieilles de six ans, a crédité les 200 ETH sur le compte Vat du keeper et les a extraits via le GemJoin ETH-A sous forme de 200 WETH vers un contrat qu'il contrôlait. Les contrats centraux de MakerDAO (Vat, Flipper, GemJoin) se sont comportés exactement comme prévu ; la faille résidait entièrement dans le keeper oublié.

Conséquences

L'attaquant avait financé une adresse neuve avec un retrait de 0,1 ETH depuis Tornado Cash à 05:57 UTC, soit environ 16 minutes avant que l'exploit n'arrive dans le bloc 26 131 471 à 06:13 UTC. Environ six minutes après le drainage, les gains ont été réinjectés dans Tornado Cash par lots de 10 ETH, ne laissant aucune voie de récupération réaliste. Aucune réaction de l'équipe de MakerDAO, aucune prime ni aucun remboursement n'ont été annoncés, et les fonds restent volés. Les enquêteurs on-chain ont signalé l'adresse de l'attaquant comme 0x01EB957e5C7DcDDD60F3C875956cCc6fB9bDa5FA.

Pourquoi c'est important

L'incident rappelle, comme un cas d'école, que les contrats abandonnés ne cessent jamais d'être une surface d'attaque. La même leçon traverse l'exploit du vault obsolète de Thetanuts Finance et l'ancien bug Fusion v1 du resolver 1inch : retirer un produit n'efface ni son code ni ses fonds de la chaîne. Il montre aussi comment un seul modificateur ds-auth manquant, anodin isolément, devient catastrophique dès qu'il garde une valeur réelle. Ici, cette valeur était restée silencieusement bloquée pendant plus de six ans — un vestige de l'une des journées les plus chaotiques de la DeFi — jusqu'à ce qu'un opportuniste, muni d'un dépôt Tornado Cash et d'une lecture attentive d'anciens états d'enchères, finisse par la ramasser.

Sources & preuves on-chain

  1. [01]certik.comhttps://www.certik.com/blog/makerdao-legacy-auction-keeper-incident-analysis
  2. [02]cryptotimes.iohttps://www.cryptotimes.io/2026/10/06/dormant-makerdao-keeper-drained-of-538k-core-remains-intact/
  3. [03]kucoin.comhttps://www.kucoin.com/news/flash/certik-reports-keeper-bot-exploit-in-makerdao-liquidation-system
  4. [04]chaincatcher.comhttps://www.chaincatcher.com/en/article/2294394

Dépôts liés