
Analyse technique des méthodes d'attaque potentielles sur les portefeuilles BRC-20
TechFlow SélectionTechFlow Sélection

Analyse technique des méthodes d'attaque potentielles sur les portefeuilles BRC-20
En partant des principes de conception de BRC-20, analysons systématiquement les raisons pour lesquelles Binance a suspendu les retraits d'ORDI.
Rédaction : Trustless Labs
Après avoir approfondi l'analyse du code et des mécanismes de BRC-20, nous avons découvert une méthode d'attaque potentielle pendant la phase de transfert ciblant les détenteurs importants (huge holders). Afin d'aider les exchanges à vérifier d'éventuels problèmes dans leurs procédures, tout en respectant l'éthique du chapeau blanc (white hat), nous avons tenté, à l'aide d'une méthode testée, de verrouiller les actifs du portefeuille chaud ORDI de Binance, ce qui a conduit Binance à suspendre les retraits d'ORDI. Nous avons immédiatement informé l'équipe de Binance et partagé les détails de l'opération afin de les aider à rétablir rapidement les retraits. Trois heures plus tard, Binance a rétabli la fonctionnalité de retrait d'ORDI. Cet article partira des principes de conception de BRC-20 pour analyser systématiquement la raison ayant conduit Binance à suspendre les retraits d'ORDI, et aidera à comprendre pourquoi n'importe qui peut verrouiller votre solde BRC-20.
Commençons par observer sur UniSat ce qui s'est produit sur la blockchain.

Il s'agit, au moment de la rédaction de cet article, du solde du portefeuille chaud ORDI de Binance affiché sur UniSat, divisé en trois parties : Transferable (négociable), Available (disponible) et Balance (solde total). Cela fait référence à trois concepts fondamentaux dans BRC-20 : le solde transférable (Transferable balance), le solde disponible (Available balance) et le solde global (Overall balance). Le solde transférable désigne le montant pouvant être directement transféré ; le solde disponible correspond à celui pouvant devenir transférable ; le solde global est la somme des deux précédents, représentant le solde total de l'adresse. À ce stade, vous vous demandez probablement : puisqu'il y a autant de fonds disponibles sur le portefeuille chaud ORDI de Binance, pourquoi les retraits sont-ils impossibles ? Ne vous inquiétez pas, poursuivons notre analyse.
Le transfert BRC-20 nécessite deux étapes : premièrement, inscrire (inscribe) un Inscription de type « transfer » ; deuxièmement, transférer cet Inscription au destinataire, achevant ainsi le transfert BRC-20. Étant donné que le transfert d'Inscription repose sur le modèle UTXO, cela signifie que la quantité amt inscrite à la première étape détermine exactement la quantité amt de BRC-20 pouvant être transférée à la deuxième étape. Par conséquent, le Transferable balance mentionné ci-dessus est également basé sur le modèle UTXO. Pour mieux illustrer, prenons un exemple : supposons que A soit une adresse nouvellement créée, à laquelle vous avez minté m unités d'ORDI ou reçu m unités d'ORDI depuis une autre adresse. À ce moment-là, le Available balance et le Overall balance de l'adresse A sont tous deux égaux à m, tandis que le Transferable balance est 0. Ensuite, si vous souhaitez transférer n unités d'ORDI de l'adresse A vers l'adresse B, la première étape consiste à inscrire un Inscription avec un amt égal à n sur l'adresse A (cet Inscription n'est valide que si n ≤ m). À ce stade, le Transferable balance de A devient n, son Available balance devient m - n, et son Overall balance reste m. La deuxième étape consiste à transférer cet Inscription d'amt n vers l'adresse B. Après cette opération, l'adresse A voit son Available balance et son Overall balance passer à m - n, tandis que son Transferable balance retombe à 0. L'adresse B obtient alors un Available balance et un Overall balance égaux à n, avec un Transferable balance de 0 : le transfert est complété.

Prenons comme exemple la liste des transactions du portefeuille chaud ORDI de Binance affichée sur UniSat. Les opérations dont la colonne « Method » indique « inscribe-transfer » correspondent à la première étape décrite ci-dessus, tandis que celles marquées « receive » ou « send » correspondent à la seconde étape. Les deux dernières transactions sur l'image forment ensemble un transfert BRC-20 complet. Les trois autres transactions de type « inscribe-transfer » ont chacune inscrit un Inscription avec un amt respectivement égal à 8 210 108, 6 099 et 2 683. Ces trois Inscriptions constituent ensemble le Transferable balance actuel. Ainsi, si l'on souhaite effectuer un retrait depuis le portefeuille chaud ORDI de Binance, on ne peut transférer que ces trois montants précis, ce qui bien sûr ne suffit pas à satisfaire les besoins variés des utilisateurs en matière de retraits.
La raison de cette situation réside dans le fait que n'importe qui peut inscrire un Inscription arbitraire sur n'importe quelle adresse. Ainsi, toute personne peut bloquer le solde BRC-20 d'une adresse en exécutant simplement la première étape d'un transfert BRC-20. Comment Binance pourrait-elle résoudre ce problème actuel ? En réalité, la solution est simple : il suffit de transférer ces trois Inscriptions vers sa propre adresse pour convertir le Transferable balance en Available balance, puis, selon les demandes de retrait des utilisateurs, inscrire de nouveaux Inscriptions avec les montants adéquats pour effectuer les transferts. Toutefois, cette mesure ne constitue qu'une solution temporaire et ne règle pas le problème à la racine. Seule une amélioration du protocole lui-même, corrigeant les failles inhérentes à la conception actuelle de BRC-20, permettra de résoudre durablement cette vulnérabilité.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News













