La fédération de Liquid a libéré environ 3 996 BTC, d’une valeur d’environ 320 millions de dollars, le 6 septembre, après que la sidechain a accepté des L-BTC qui n’étaient pas adossés à des BTC. La défaillance a commencé par un bug de validation des preuves dans Elements, le logiciel sous-jacent de Liquid, puis s’est conclue par un peg-out autorisé mais exceptionnel via SideSwap.
Simanta Gautam, PDG d’Alpen Labs, affirme que des agents d’IA ont retracé et reproduit la faille localement en environ une heure. Le problème concernait la mise en cache des vérifications cryptographiques. Une modification apportée le 1er septembre concaténait les champs des clés de cache sans encoder leurs limites, permettant à une preuve “seed” valide et à une autre cible invalide de produire une entrée de cache identique. Une fois que la preuve valide avait initialisé le cache, le wrapper concerné pouvait accepter la cible sans effectuer la nouvelle vérification requise.
Pourquoi c’est important
L’incident montre comment une défaillance du consensus et des contrôles opérationnels faibles peuvent se renforcer mutuellement. SideSwap affirme qu’un attaquant a envoyé 4 000 L-BTC à son service de peg-out, qui a brûlé les jetons avec une autorisation valide avant que les signataires de la fédération ne libèrent 3 996 BTC. Son système automatisé ne comportait aucun contrôle sur le montant, la vitesse, le volume relatif à l’offre, l’historique du portefeuille ou une vérification humaine.
Une limite de paiement avant l’autorisation ou la signature de la fédération aurait pu interrompre cette procédure précise. Une clé hors ligne ou un transfert manuel différé aurait créé un délai, même si le transfert de la réserve de la fédération aurait encore pu avoir lieu avant le retour des fonds.
Impact sur le marché
La correction d’Elements du 8 septembre a encodé la longueur des champs dans les clés de cache, ajouté des tests ciblant les collisions et introduit une option permettant de contourner le cache des preuves de plage. La version 23.3.4 a suivi le 9 septembre. Liquid a indiqué que les transactions ordinaires avaient repris le 17 septembre, tandis que les peg-outs restaient suspendus dans l’attente d’un adossement complet des BTC un pour un, de mises à jour logicielles, de tests et d’examens indépendants.
La question opérationnelle centrale est de savoir si un système de peg-out relancé dispose d’un contrôle indépendant capable de bloquer une demande autorisée de taille équivalente à la réserve avant que les bitcoins ne quittent la garde de la fédération. L’examen assisté par l’IA peut révéler rapidement les défauts, mais ce sont les contrôles des paiements qui déterminent l’ampleur des pertes qu’une future défaillance de validation pourrait provoquer.
Questions fréquemment posées
-
Comment le bug du cache de preuves de Liquid a-t-il permis à des L-BTC invalides de passer ?
Une modification d’Elements du 1er septembre concaténait les champs des clés de cache sans encoder leurs limites. Une preuve valide et une autre cible invalide pouvaient produire une entrée de cache identique, permettant à un résultat mis en cache de contourner une nouvelle vérification.
-
Quelle quantité de Bitcoin la fédération de Liquid a-t-elle libérée ?
La fédération a libéré environ 3 996 BTC, d’une valeur d’environ 320 millions de dollars à ce moment-là. Selon SideSwap, la quasi-totalité de ce montant a été envoyée à l’adresse du client.
-
Quel rôle le processus de paiement de SideSwap a-t-il joué dans l’exploit ?
Selon SideSwap, son service automatisé de peg-out a accepté une demande de 4 000 L-BTC sans contrôle du montant, de la vitesse, du volume relatif à l’offre, de l’historique du portefeuille ou de vérification humaine. La fédération a ensuite signé cette demande exceptionnelle après l’échec de deux tentatives de…
-
Une limite de paiement aurait-elle pu empêcher la perte de bitcoins ?
Une limite de paiement avant l’autorisation ou la signature de la fédération aurait pu interrompre cette procédure précise. Elle n’aurait toutefois pas corrigé la défaillance sous-jacente de validation du consensus.
-
Quelles corrections Elements et Liquid ont-ils mises en œuvre après l’incident ?
Elements a encodé la longueur des champs dans les clés de cache, ajouté des tests ciblant les collisions et introduit une option permettant de contourner le cache des preuves de plage. La version 23.3.4 a suivi, tandis que Liquid a maintenu les peg-outs suspendus dans l’attente de contrôles d’adossement, de mises à…