Vulnérabilité de randomisation du Coldcard Wallet révèle un point aveugle de sécurité des wallets matériels

iconTechFlow
Partager
AI summary iconRésumé
Un récent rapport d'actualité sur une vulnérabilité met en lumière une faille critique de randomisation dans les portefeuilles matériels Coldcard. Le problème, une violation de sécurité affectant plusieurs modèles, provient d'une mise à jour du firmware de mars 2021. Au lieu d'utiliser le générateur de nombres aléatoires matériel, le portefeuille a appliqué un algorithme déterministe faible. Cela a réduit l'entropie des phrases secrètes, augmentant l'exposition aux attaques par force brute. Coinkite et Block ont constaté que les phrases secrètes compromise avaient un espace de recherche de 40 à 72 bits. Les utilisateurs sont invités à créer manuellement de nouvelles phrases secrètes et à transférer leurs fonds. Plus de 77 402 BTC ont déjà été déplacés depuis les adresses affectées.

Article rédigé par Liam 'Akiba' Wright

Traduction : Saoirse, Foresight News

Avant même que le portefeuille matériel ne soit connecté au réseau, la ligne de défense de sécurité du portefeuille peut déjà être compromise. Un portefeuille matériel isolé peut éloigner les clés privées d’Internet pendant des années, mais le risque est déjà présent dès la génération de la phrase de récupération.

La faille de génération de nombres aléatoires récemment révélée par Coldcard illustre parfaitement ce piège de sécurité. Les portefeuilles affectés peuvent générer une série de 12 ou 24 mots de récupération qui semblent parfaitement normaux ; les utilisateurs peuvent alors sauvegarder ces mots en toute sécurité et signer des transactions hors ligne. Toutefois, la plage possible du générateur de nombres aléatoires sous-jacent est en réalité considérablement réduite. Un attaquant peut effectuer une recherche exhaustive sur tous les combinaisons possibles de graines sur un autre appareil, reconstituer les graines candidates, puis les comparer au registre public de Bitcoin pour identifier les graines valides correspondant aux adresses réelles.

À mon avis, la sécurité du portefeuille est déterminée dès la création de la graine. Avant que des mesures de protection telles que le code PIN, les plaques d’acier pour le stockage de la phrase secrète, les sachets anti-altération ou l’isolement air-gap ne jouent leur rôle, la graine doit d’abord être générée à partir d’une source aléatoire véritablement fiable.

Un bon générateur de nombres aléatoires moderne peut produire une entropie suffisante. Toutefois, si un attaquant maîtrise la logique de fonctionnement du générateur de nombres aléatoires, il pourrait être en mesure de reconstituer l'ensemble du processus de génération.

Lancer des dés à la main fournit aux utilisateurs une source de randomisation intuitive et contrôlable, indépendante du code écrit par le fournisseur.

Les faiblesses cachées de la sécurité des portefeuilles Bitcoin

La génération de semences Coldcard comporte des vulnérabilités de sécurité. Un attaquant peut générer des semences candidates à l'extérieur de l'appareil, les convertir en adresses publiques, puis les comparer avec les enregistrements de transactions sur le registre public de Bitcoin pour mener une attaque.

La racine technique de la vulnérabilité est minuscule et effrayante. Une modification de code du 1er mars 2021 a transféré la fonction de génération de la graine de Coldcard vers une nouvelle base de code. Dans les firmwares de production, la configuration MICROPY_HW_ENABLE_RNG était définie sur 0, indiquant que le générateur aléatoire matériel était désactivé ; mais la logique d'intégration du code ne vérifiait que l'existence de cette configuration, sans lire sa valeur. Dès lors que cette configuration existait, le système abandonnait le générateur aléatoire matériel pour activer l'algorithme déterministe Yasmarang de MicroPython en tant que solution de secours. Selon le rapport d'analyse conjoint de Block, cette logique défectueuse a été publiée publiquement avec la version 4.0.0 du firmware le 17 mars.

Le mot de passe généré semble parfaitement normal, mais l'espace de recherche exhaustif sous-jacent a été considérablement réduit. Selon les estimations initiales de Coinkite, l'espace de recherche effectif pour les seeds des modèles Mk2 et Mk3 affectés est d'environ 40 bits ; pour les modèles Mk4, Mk5 et la série Q affectés, il est d'environ 72 bits.

L'équipe Block a établi des conditions spécifiques pour les modèles ultérieurs : lorsque l'état de l'algorithme de secours est fixe et que l'historique d'appel est constant, il existe au maximum 2^32 flux aléatoires distinguables. Les données fournies par Coinkite estiment la plage de recherche efficace qu'un attaquant pourrait parcourir.

Les deux rapports d'analyse confirment que tous les modèles récents fabriqués avant la correction du firmware étaient dans la zone de risque. L'avis de sécurité de Coinkite indique que les firmwares Mk4 et Mk5 antérieurs à la version standard 5.6.0 et à la version Edge 6.6.0X, ainsi que les firmwares de la série Q antérieurs à la version standard 1.5.0Q et à la version Edge 6.6.0QX, sont concernés. Pour les Mk2 et Mk3, Coinkite liste les versions à risque entre 4.0.1 et 4.1.9, tandis que l'équipe Block estime que la vulnérabilité existait déjà depuis la version 4.0.0. Face à cette frontière de version controversée, il est recommandé aux utilisateurs d'adopter une approche prudente.

Cet incident le démontre clairement : installer simplement la nouvelle version du micrologiciel ne corrige pas les vulnérabilités de sécurité des portefeuilles existants. Mettre à niveau vers la version corrigée garantit uniquement la sécurité des nouvelles seed générées à l'avenir ; toutes les anciennes seed déjà créées conservent uniquement l'entropie obtenue à leur création, et toutes les adresses dérivées de ces seed partagent une même clé sous-jacente.

Tous les utilisateurs de versions de firmware à risque doivent consulter l'avis de sécurité officiel. À moins que vous ne puissiez confirmer que la graine a été générée entièrement à l'aide de dés manuels, vous devez utiliser le firmware corrigé, générer une nouvelle graine à partir d'une source aléatoire fiable, et transférer vos fonds vers un nouveau portefeuille. Si vous générez simplement de nouvelles adresses à l'aide de l'ancienne phrase de récupération, la faille de sécurité originale restera inchangée.

Bitcoin Optech a publié des données estimatives le 31 juillet, indiquant que des actifs menacés dépassaient 1 000 BTC. Au 2 août, Galaxy Research estime qu'environ 1 367 BTC sont à risque dans 4 585 adresses au total. Un utilisateur de la plateforme X sous le pseudonyme Graham_Quantum a déclaré que 18,25245043 BTC avaient déjà été transférés hors des portefeuilles concernés le 29 juillet.

Après la divulgation du message, de nombreux utilisateurs ont transféré leurs actifs à des fins de protection, entraînant un flux de capitaux encore plus important. Après la révélation de la faille, 77 402 BTC ont été transférés depuis le pool d'UTXO non dépensées.

Deux types de données doivent être distingués :

Cet incident de sécurité a provoqué deux impacts majeurs : d'une part, le vol d'actifs par des pirates, et d'autre part, une vague bien plus importante de déplacements volontaires des utilisateurs pour se protéger.

La faille de portefeuille Coldcard, impliquant environ 89 millions de dollars, a provoqué le plus grand transfert de fonds Bitcoin sur la chaîne depuis l'effondrement de FTX, perturbant gravement l'interprétation des signaux du marché. Des dizaines de milliers d'utilisateurs ont transféré d'urgence leurs bitcoins depuis leurs anciens portefeuilles, rendant difficile la distinction entre les signaux baissiers réels et les faux signaux émis par les indicateurs clés de la chaîne.

Quels changements la lancer de dés manuel peut-il apporter ?

Documentation officielle de Coldcard sur les dés : un dé à six faces équitable génère environ 2,585 bits d'entropie à chaque lancer indépendant. Cinquante lancers produisent environ 129,25 bits d'entropie brute, satisfaisant la norme de sécurité classique de 128 bits ; 99 lancers produisent environ 255,91 bits d'entropie brute, atteignant presque la norme de sécurité de 256 bits (cette valeur n'a pas encore été traitée par l'algorithme de conversion intégré au portefeuille).

Ces valeurs correspondent à la norme BIP-39 largement utilisée pour les phrases de récupération : une phrase de 12 mots encode 128 bits d'entropie plus 4 bits de somme de contrôle ; une phrase de 24 mots encode 256 bits d'entropie plus 8 bits de somme de contrôle.

Le mécanisme d'isolation hors ligne des portefeuilles matériels ne protège que les phrases de récupération après leur génération complète ; il ne peut pas corriger les vulnérabilités de faible entropie survenues pendant le processus de génération. Pour générer une phrase BIP-39 sécurisée, il faut utiliser un déroulement indépendant d'entropie par un lancer de dés privé.

La somme de contrôle sert uniquement à identifier les erreurs de transcription du mnémonique. La sécurité réelle dépend des données aléatoires sous-jacentes. Le hachage et la mise en forme normalisée peuvent améliorer des entrées à faible entropie, mais n'élargissent pas l'espace total des clés possibles. Ces 12 mots qui semblent rassurants peuvent provenir d'un pool aléatoire extrêmement réduit.

Condition préalable à l'effet protecteur du lancer manuel de dés : le processus intégré au portefeuille doit accepter correctement les données aléatoires générées par les dés. Les dés eux-mêmes doivent être valides, chaque lancer doit être authentique et indépendant des autres, et la séquence de lancers doit rester entièrement confidentielle. Réutiliser des schémas de lancers, enregistrer des vidéos, stocker la séquence dans le cloud ou saisir les résultats sur un ordinateur connecté à Internet compromettront l'indépendance et la confidentialité de l'aléatoire.

Concernant cet incident de sécurité Coldcard, Coinkite déclare : seuls les utilisateurs qui peuvent confirmer qu'au moins 50 lancers de dés équitables, indépendants et confidentiels ont été effectués lors de la génération finale de la graine peuvent éviter de déplacer leurs actifs ; en cas d'incertitude, l'entreprise recommande de déplacer les fonds.

Pour moi, la valeur fondamentale du dé manuel réside dans le fait que, en s'appuyant sur un nombre aléatoire intégré à l'appareil, vous devez faire confiance sans condition à l'ensemble de la chaîne : le matériel, le firmware, le processus de compilation et le code intégré.

Un processus normalisé de saisie de dés peut introduire de l'entropie indépendante de cette chaîne de confiance, sous le contrôle exclusif de l'utilisateur. Environ 50 lancers de dés équitables correspondent à un niveau de sécurité de 128 bits, et 99 lancers à un niveau de sécurité de 256 bits. Toutefois, l'utilisateur doit strictement suivre le processus d'utilisation officiel de l'appareil et ne pas concevoir de schémas de conversion de nombres aléatoires personnels.

Définissez un mot de passe BIP-39 fort et unique pour augmenter considérablement le niveau de sécurité. Le mot de passe agit comme une clé indépendante : même si un attaquant obtient la phrase de récupération, il devra également casser le mot de passe pour accéder aux actifs. Attention : l'entropie de la phrase de récupération n'est pas améliorée par l'ajout d'un mot de passe. Tout mot de passe (même une erreur d'un seul caractère) génère un ensemble valide d'adresses de portefeuille ; en cas de perte du mot de passe, les actifs seront définitivement bloqués. Le code PIN d'un portefeuille matériel a un rôle totalement différent de celui du mot de passe.

Activer le mot de passe d'accès implique un compromis : si vous pouvez le conserver en toute sécurité et le reproduire avec précision, il constitue une deuxième ligne de défense robuste ; mais si votre méthode de sauvegarde est insuffisante, cette fonctionnalité peut vous empêcher définitivement d'accéder à vos actifs.

Les risques liés à la faible aléatoire se répètent fréquemment

La vulnérabilité de Coldcard rappelle une fois encore à tous que la sécurité fondamentale d'un portefeuille Bitcoin repose sur la génération de la graine avec une entropie suffisante et aléatoire. Des défauts sous-jacents similaires ont déjà été découverts successivement sur plusieurs produits de portefeuilles différents.

En 2023, Ledger Donjon a révélé que des versions spécifiques de l'extension de navigateur Trust Wallet utilisaient, dans le chemin d'exécution WebAssembly, un algorithme de rotation de梅森 basé sur 32 bits pour générer des seeds aléatoires. Ces mots de passe apparemment normaux provenaient tous d'environ 4 milliards de valeurs initiales. Le périmètre du risque est clair : les extensions de navigateur des versions 0.0.172 à 0.0.182搭载ant Trust Wallet Core antérieur à la version 3.1.1. La base de données nationale des vulnérabilités américaine enregistre que cette faille a été exploitée en décembre 2022 et en mars 2023.

L'événement « vulnérabilité Milk Sad » illustre de manière直观 les risques similaires. La commande bx seed de Libbitcoin Explorer 3.x utilise un algorithme de rotation de Mersenne de 32 bits semé à partir de l'heure système ; dans des conditions d'horloge identiques, le logiciel peut générer des phrases de récupération identiques. Un attaquant ne nécessitant qu'une estimation approximative du moment de création du seed, le domaine d'essais exhaustifs sera bien inférieur à l'espace suggéré par la phrase de récupération.

Les chercheurs ont identifié plus de 2 600 portefeuilles Bitcoin encore actifs dans la zone de risque ; selon les cours d'août 2023, les actifs volés associés sur plusieurs chaînes publiques dépassent 900 000 dollars américains. Plus de 2 550 de ces portefeuilles présentent des caractéristiques d'opérations automatisées et sont très probablement détenus par la même entité. Les chercheurs ont également souligné que certains vols d'actifs pourraient être liés à d'autres vulnérabilités de sécurité.

Ces vulnérabilités apparaissent à chaque fois sous un aspect différent : Coldcard déclenche accidentellement un algorithme de rechange pour la génération aléatoire du firmware ; les extensions de navigateur Trust Wallet et l'outil en ligne de commande Libbitcoin génèrent des nombres aléatoires faibles en raison de leur dépendance à l'horloge système. Les clés de wallet finales semblent parfaites, mais la taille du pool de clés accessible à une exploration exhaustive est si réduite qu'elle présente un risque mortel.

La plupart des recommandations de stockage du bitcoin sur le marché se concentrent après la génération de la graine : stocker hors ligne la phrase de récupération, utiliser des supports de sauvegarde durables, isoler les autorisations et tester le processus de restauration. Ces mesures conservent tout leur intérêt. Mais l'accident survenu avec Coldcard nous rappelle que les défenses de sécurité doivent être déplacées un peu plus en amont.

L'isolation de l'air ne protège que les clés que vous avez déjà saisies dans l'appareil. C'est pourquoi la sécurité d'un portefeuille Bitcoin doit commencer par une source aléatoire fiable.

Clause de non-responsabilité : les informations sur cette page peuvent avoir été obtenues auprès de tiers et ne reflètent pas nécessairement les points de vue ou opinions de KuCoin. Ce contenu est fourni à titre informatif uniquement, sans aucune représentation ou garantie d’aucune sorte, et ne doit pas être interprété comme un conseil en investissement. KuCoin ne sera pas responsable des erreurs ou omissions, ni des résultats résultant de l’utilisation de ces informations. Les investissements dans les actifs numériques peuvent être risqués. Veuillez évaluer soigneusement les risques d’un produit et votre tolérance au risque en fonction de votre propre situation financière. Pour plus d’informations, veuillez consulter nos conditions d’utilisation et divulgation des risques.