$215K Volé de Fluid : l'attaquant contrôle les deux clés du système de récompenses Merkle

Fluid perdu $215K après qu’un attaquant ait contrôlé les deux clés de distribution des récompenses, drainant des jetons via de faux racines Merkle et acheminant les fonds vers Tornado Cash.

Les jetons de récompense avaient déjà disparu. Le 27 mai, un attaquant qui détenait les deux clés de signature opérationnelle de Fluid a poussé une fausse liste de récompenses aux distributeurs Merkle du protocole sur Ethereum, Base et Arbitrum.

Fluid, le protocole DeFi basé sur Ethereum, utilise un système en deux étapes pour la distribution des récompenses : une clé propose une racine Merkle et une seconde clé l’approuve. Comme l’a rapporté BlackHartInc sur X, ces deux rôles étaient détenus par un seul acteur. Le contrôle à deux personnes ne signifiait rien une fois qu’une seule personne détenait les deux clés.

Une personne, deux clés, zéro résistance

La clé du proposeur a soumis une racine auto-servante au distributeur FLUID à 21:11:11 UTC. Douze secondes plus tard, le même attaquant l’a approuvée en utilisant la clé d’approbation. Vingt-quatre secondes après la proposition initiale, une réclamation a été effectuée en utilisant une preuve Merkle vide.

Cette preuve vide n’était pas un bug. Une liste de récompenses à une seule entrée produit une racine égale à sa seule feuille, donc aucun chemin de preuve n’est nécessaire. Le contrat l’a vérifiée correctement. Rien dans le contrat intelligent n’a été cassé. Selon l’analyse forensique de BlackHart, l’échec total était une question de garde des clés opérationnelles.

Le même cycle proposer-approver-reclamer s’est ensuite répété contre le distributeur GHO à 21:13:59 UTC et un troisième distributeur pour un petit montant de cbBTC quelques heures plus tard. Sur les trois chaînes, l’attaquant s’est enfui avec environ 125 109 FLUID et 51 946 GHO, plus du cbBTC trace.

Ce qui a réellement quitté le protocole, et ce qui ne l’a pas été

Les marchés de prêt, les coffres et la liquidité DEX de Fluid n’ont jamais été concernés par ces clés. Les contrats drainés étaient uniquement des distributeurs de récompenses. 0xfluid sur X a confirmé que les contrats intelligents du protocole principal sont restés intacts et que les fonds des utilisateurs n’étaient pas en danger suite à l’incident.

Les FLUID et GHO volés ont été échangés contre environ 103 ethers via le routeur d’échange MetaMask. Environ 142,6 ETH ont fini dans Tornado Cash, acheminés en partie par des portefeuilles relais et en partie par dépôt direct. Les fonds de Layer 2 de Base et Arbitrum ont été bridgés de nouveau vers Ethereum avant le mélange.

Un retrait massif, compris entre 70 et 110 millions de dollars, effectué dans les jours suivant n’était pas une seconde exploitation. C’était des déposants retirant leurs propres fonds, une course aux banques motivée par la confiance. Non lié au vol lui-même, mais pas totalement sans rapport avec le calendrier de divulgation.

Le nettoyage, et ce qui n’a pas été dit

Environ dix heures après le premier vol, le 28 mai à 07:05 UTC, l’équipe Fluid a retiré les rôles de proposeur et d’approbateur compromis de dix distributeurs de récompenses dans une seule transaction groupée. Environ 314 000 FLUID et 7 400 USDC de soldes de récompenses restants ont été transférés vers une adresse sécurisée.

Les communications publiques de l’équipe ne mentionnaient qu’une pause dans la réclamation des récompenses pour des mises à jour. Aucune mention d’une compromission de clé. Aucune mention d’une perte. L’exploitation elle-même a été rendue publique le 31 mai, quatre jours après, lorsqu’un prêteur avait déjà retiré 77 millions de dollars en USDC à partir du 28 mai.

Pablo Veyrat, co-fondateur de Merkl, a abordé l’épisode sur X. Parlant des choix de conception de son propre protocole, Veyrat a noté sur X que Merkl exécute trois bots de contestation indépendants sur une infrastructure entièrement séparée, chacun vérifiant de nouveaux arbres Merkle avant qu’une racine ne devienne effective, avec un délai minimum d’une heure entre la publication d’une nouvelle racine et toute réclamation la concernant.

Pourquoi un timelock change tout ici

L’ensemble de l’exploitation s’est déroulé en moins de 24 secondes, du proposal à la réclamation. Cette rapidité n’a été possible que parce qu’aucun délai n’existait entre l’approbation de la racine et le paiement. Les exploits de clés administratives ont frappé DeFi à plusieurs reprises cette année, et le schéma revient toujours au même point : des clés privilégiées sans friction entre accès et action.

L’évaluation de BlackHart a signalé la sécurité opérationnelle comme le point le plus faible dans son évaluation pré-hack de Fluid. Le mode de défaillance exact, deux clés pouvant être transformées en paiement sans un dépositaire indépendant ou une période d’attente, était déjà ce que le score mettait en garde. Les compromissions de clés opérationnelles ne sont pas nouvelles en 2026, mais le cas Fluid ajoute une particularité : la conception à deux clés semblait une sauvegarde jusqu’à ce qu’elle soit détenue par une seule personne.

Le portefeuille de l’attaquant, 0x4925120c…1d3dfb, a effectué des réclamations sur plusieurs chaînes en à peu près la même minute. Aucun plafond de vélocité ne limitait ce qu’un seul cycle pouvait libérer. Aucune alerte en temps réel n’a détecté l’activité anormale avant plusieurs heures.

FLUID-7,57%
ETH-5,26%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Reposter
  • Partager
Commentaire
Ajouter un commentaire
Ajouter un commentaire
Aucun commentaire
  • Épinglé