Faille RNG COLDCARD : analyse du vol de 88 millions de dollars en Bitcoin
Lysandre Beauchêne
En août 2026, un incident de sécurité majeur a secoué l’écosystème des crypto-monnaies. Imaginez un instant que la clé de votre coffre-fort numérique soit identique à celle de milliers d’autres personnes. C’est exactement ce qui est arrivé aux détenteurs de portefeuilles matériels COLDCARD. Près de 88,6 millions de dollars en Bitcoin ont été dérobés depuis 4 585 portefeuilles. L’origine de cette attaque ? Une vulnérabilité critique du générateur de nombres aléatoires (RNG) intégré dans le firmware de ces dispositifs de stockage à froid. Cet incident, révélé par les chercheurs de Block et analysé par Galaxy Research et Chainalysis, constitue un cas d’école pour l’industrie. Nous vous proposons une analyse technique complète de cette faille RNG COLDCARD, de son exploitation par des attaquants, et des mesures concrètes que tout détenteur de crypto-actifs doit impérativement connaître pour protéger ses fonds. En France, où l’adoption des crypto-monnaies ne cesse de croître, cet incident rappelle que la sécurité des actifs numériques est un enjeu de premier plan.
Comprendre la vulnérabilité RNG des portefeuilles COLDCARD
Qu’est-ce qu’un générateur de nombres aléatoires (RNG) et pourquoi est-il crucial ?
La sécurité d’un portefeuille Bitcoin repose entièrement sur le caractère imprévisible de sa seed phrase (phrase de récupération). Cette phrase, composée de 12 ou 24 mots, est générée à partir d’une source d’entropie fournie par le matériel. Le Random Number Generator (RNG) est le composant logiciel ou matériel chargé de produire cette entropie. Si le RNG est déterministe ou prévisible, l’ensemble de la sécurité du wallet s’effondre. Dans le cas présent, les chercheurs de Block ont découvert que le firmware COLDCARD contenait une erreur d’intégration dans le code du RNG. Au lieu d’utiliser le générateur matériel dédié (STM32 hardware RNG), un test conditionnel incorrect forçait l’utilisation du générateur logiciel déterministe Yasmarang de MicroPython.
L’erreur d’intégration logicielle identifiée par Block
Ce basculement vers un générateur logiciel de secours n’est pas anodin en soi, à condition que ce dernier soit cryptographiquement sûr. Or, le Yasmarang ne l’est pas. Il s’agit d’un générateur pseudo-aléatoire non cryptographique, conçu pour la vitesse, pas pour la sécurité. En outre, les sources d’entropie qui l’alimentaient - l’identifiant unique du microcontrôleur et des horodatages système - sont statiques ou prévisibles. Un attaquant disposant d’informations sur le matériel et le moment de la génération de la seed pouvait donc reconstituer l’état interne du générateur.
“COLDCARD firmware contains an RNG integration error that causes ngu.random to use MicroPython’s deterministic Yasmarang fallback instead of the STM32 hardware RNG.”
- Block, Bitcoin Engineering and Security teams.
L’ANSSI, dans ses recommandations sur les mécanismes cryptographiques, insiste sur l’utilisation de générateurs de nombres aléatoires certifiés (comme ceux répondant aux exigences du RGS). L’erreur d’intégration dans le firmware COLDCARD est un cas d’école de ce qu’il ne faut pas faire : une simple condition if mal écrite a rendu inutile un composant matériel coûteux et sécurisé. Le STM32 intègre un véritable générateur de nombres aléatoires (TRNG) basé sur du bruit analogique. C’est une source d’entropie physique, considérée comme cryptographiquement sûre. L’erreur d’intégration a rendu ce composant totalement inutile.
Analyse technique du générateur Yasmarang
Le Yasmarang est un générateur de nombres aléatoires non cryptographique développé pour les systèmes embarqués. Son état interne est composé de seulement 32 octets, et son algorithme de mise à jour est linéaire. Cela signifie qu’à partir de quelques sorties consécutives, il est trivial de reconstruire l’état interne complet du générateur. Dans le contexte de l’attaque COLDCARD, l’attaquant n’avait même pas besoin de sorties : il lui suffisait de connaître l’identifiant du microcontrôleur et l’horodatage de la première utilisation du wallet pour calculer l’état initial du Yasmarang et, par conséquent, la seed phrase. La faiblesse algorithmique du Yasmarang, combinée à une source d’entropie initiale pauvre, a transformé un problème cryptographique réputé insoluble (retrouver une seed de 128 bits) en un simple exercice de calcul.
L’impact concret sur l’entropie des seeds
En conditions normales, un hardware wallet comme le COLDCARD génère une seed avec 128 ou 256 bits d’entropie. Avec la faille, l’entropie effective s’effondrait. En utilisant l’identifiant du microcontrôleur (souvent séquentiel ou lisible) et des horodatages (prévisibles à la seconde près), l’espace des seeds possibles devenait suffisamment restreint pour être bruteforcé. Nous avons observé que des chercheurs indépendants ont pu, en quelques heures de calcul, générer l’ensemble des seeds produites par un appareil vulnérable sur une période donnée.
Prenons l’exemple d’un utilisateur français ayant acheté un COLDCARD Mk4 en janvier 2025. La seed a été générée sur un firmware 5.4.0. L’attaquant, en scannant la blockchain, a trouvé une adresse correspondant à une seed générée avec un identifiant de microcontrôleur proche et un horodatage de janvier 2025. En quelques minutes de calcul, la seed était compromise. Ce scénario, bien que simplifié, illustre parfaitement le danger d’un RNG défaillant.
Chronologie et ampleur de l’attaque : 88 millions de dollars dérobés
Les vagues de transactions selon Galaxy Research
La firme d’analyse Galaxy Research a été la première à identifier l’anomalie. Le 29 juillet, Block identifie l’anomalie lors d’un audit de routine. Le 30 juillet, à 14h00 UTC, la première vague de transactions est détectée. Une première vague de transactions, le 30 juillet 2026, a drainé environ 1 083 BTC (70,2 millions de dollars) depuis 1 196 adresses en seulement 41 minutes. Le signal le plus évident de l’automatisation de l’attaque était des frais de transaction identiques de 30 satoshis par vB, soit 30 à 75 fois le tarif médian de la semaine.
Le 30 juillet, à 19h00 UTC, Block divulgue ses conclusions à Coinkite. Malheureusement, le mal était déjà fait. Une seconde et une troisième vagues, identifiées le 1er août, ont porté le total à 1 367 BTC, soit environ 88,6 millions de dollars, dérobés depuis 4 585 adresses.
L’analyse de Galaxy Research est sans équivoque sur la nature automatisée de l’attaque :
“Signature: every sweep paid an identical hardcoded 30.0 sat/vB - a 30-75x overpay vs the 0.4-1.0 sat/vB median that week - and left no change output… That looks like an automated tool spending keys it already held, not owners moving funds.”
Le ciblage prioritaire des wallets à forte valeur (Chainalysis)
L’analyse de Chainalysis a révélé une stratégie chirurgicale : l’attaquant a priorisé les portefeuilles à forte valeur. Durant les dix premières minutes de l’attaque, 30 millions de dollars ont été siphonnés. Une seule victime a perdu 1,8 million de dollars. Cela suggère que l’attaquant avait identifié et étudié les wallets vulnérables bien avant de lancer l’opération, probablement en générant des milliers de seeds potentielles hors ligne et en les comparant aux adresses actives sur la blockchain. Chainalysis a confirmé que l’attaquant a utilisé une technique de ‘sniping’ des adresses à haute valeur, démontrant une préparation minutieuse.
Tableau récapitulatif des vagues de l’attaque :
| Vague | Date | BTC volés | Adresses ciblées | Valeur estimée |
|---|---|---|---|---|
| Vague 1 | 30 juillet 2026 | 1 083 BTC | 1 196 | 70,2 M$ |
| Vagues 2 & 3 | 1er août 2026 | 284 BTC | 3 389 | 18,4 M$ |
| Total | 1 367 BTC | 4 585 | 88,6 M$ |
Quels modèles COLDCARD sont concernés par la faille RNG ?
L’avis de sécurité publié par Coinkite liste précisément les versions de firmware affectées. Il est impératif pour tout utilisateur de vérifier la version de son appareil.
Modèles et firmwares vulnérables :
- COLDCARD Mk2 et Mk3 : Firmware versions 4.0.1 à 4.1.9.
- COLDCARD Mk4 et Mk5 : Versions standard antérieures à 5.6.0 ou versions Edge antérieures à 6.6.0X.
- COLDCARD Q : Versions standard antérieures à 1.5.0Q ou versions Edge antérieures à 6.6.0QX.
- Produits non affectés : TAPSIGNER, OPENDIME et SATSCARD utilisent des bases de code différentes et ne sont pas concernés. Coinkite a également détruit tous les appareils en attente d’expédition qui contenaient le firmware vulnérable.
La branche Edge de COLDCARD est destinée aux utilisateurs avancés souhaitant tester les dernières fonctionnalités. Malheureusement, elle n’a pas échappé à la faille.
Comment vérifier votre version firmware ?
- Allumez votre COLDCARD.
- Accédez au menu “Advanced” > “Firmware Version”.
- Comparez le numéro avec la liste ci-dessus.
- Si votre version est affectée, ne déplacez pas vos fonds avant d’avoir suivi la procédure de migration complète.
Comment les attaquants ont-ils exploité cette faille RNG ?
Génération de seeds hors ligne et correspondance avec la blockchain
Le processus d’attaque est un cauchemar pour tout cryptographe. En connaissant la faiblesse du RNG (Yasmarang avec des entrées prévisibles), l’attaquant pouvait reproduire l’environnement de génération de la seed. En pratique, il suffisait de générer un grand nombre de seeds potentielles hors ligne, de dériver leurs adresses Bitcoin, puis de croiser ces adresses avec l’ensemble des adresses actives de la blockchain. Dès qu’une correspondance était trouvée, la seed était compromise, et les clés privées pouvaient être calculées. L’attaquant n’avait même pas besoin d’accéder physiquement au wallet.
L’outil automatisé et les frais de transaction identiques
Ce niveau de sophistication indique un outil automatisé, probablement scripté en Python ou Rust, qui ne se souciait pas du coût des transactions. L’absence de monnaie rendue (change output) est un autre signe fort : l’attaquant vidait intégralement les portefeuilles sans chercher à optimiser les UTXO. Le paiement de frais 30 à 75 fois supérieurs à la normale montre que l’attaquant privilégiait la vitesse à l’économie. Le coût total des frais de transaction est estimé à plusieurs centaines de milliers de dollars, un investissement dérisoire face au butin potentiel.
Le fait que l’attaque ait eu lieu environ 30 heures avant la divulgation publique de la faille par Coinkite suggère que l’attaquant a soit découvert la vulnérabilité de manière indépendante, soit avait accès à des informations privilégiées. Les enquêtes en cours n’ont pas encore permis d’identifier formellement l’attaquant.
L’erreur humaine derrière la faille technique
Au-delà de l’aspect technique, cette faille RNG COLDCARD est avant tout une erreur humaine. Un développeur a écrit un test conditionnel qui ne fonctionnait pas comme prévu. Les processus de revue de code et de tests de régression n’ont pas détecté cette anomalie. Les audits de sécurité antérieurs n’ont pas couvert ce chemin d’exécution spécifique. Cet incident nous rappelle que la sécurité est un processus, pas un état. Même les équipes les plus compétentes peuvent commettre des erreurs, et c’est la redondance des contrôles (revue de code, tests unitaires, tests d’intégration, audits externes) qui permet de les attraper avant qu’elles n’aient un impact en production.
Mesures correctives et bonnes pratiques de sécurité
Mise à jour du firmware vs. régénération de la seed
Coinkite a publié des correctifs : version 4.2.0+ pour Mk2/Mk3, 5.6.0+ pour Mk4/Mk5, 1.5.0Q+ pour Q. Cependant, une mise à jour du firmware ne répare pas une seed générée avec une version vulnérable. La seule solution sûre est de migrer vers une nouvelle seed. Les utilisateurs doivent mettre à jour le firmware, puis générer une nouvelle seed sur l’appareil mis à jour. Considérez la seed compromise comme un mot de passe divulgué : il faut le changer immédiatement. La seed est générée une seule fois. Le firmware n’intervient pas dans sa création après coup. La corriger reviendrait à changer la serrure d’une porte dont la clé a été photocopiée.
L’importance d’une passphrase BIP-39 forte et des dés
Coinkite précise que les seeds complétées par au moins 50 lancers de dés équitables, indépendants et privés ne sont pas considérées comme à risque par cette seule faille. L’ajout de 50 lancers de dés (ou plus) via la fonction ‘Advanced Passphrase’ ou ‘Seed XOR’ ajoute une entropie indépendante du RNG défaillant. C’est une sauvegarde manuelle, mais qui nécessite une discipline rigoureuse.
De même, l’utilisation d’une passphrase BIP-39 forte et unique rend l’exploitation plus difficile, car même avec la seed, l’attaquant doit deviner la passphrase. Une passphrase BIP-39 est un mot de passe optionnel qui, combiné à la seed, génère un portefeuille totalement différent. Même si la seed est compromise, sans la passphrase, l’attaquant ne peut pas accéder aux fonds. Attention, la passphrase ne répare pas la seed sous-jacente. Dans la pratique, l’ajout d’entropie utilisateur (dés, passphrase) est une excellente couche de défense, mais elle ne doit pas être considérée comme un correctif absolu. La migration reste fortement recommandée par les experts.
Procédure de migration sécurisée des fonds
- Vérifiez votre backup existant : assurez-vous qu’il est lisible et correct.
- Installez le firmware corrigé : téléchargez la dernière version depuis le site officiel de Coinkite.
- Générez et enregistrez manuellement une nouvelle seed phrase : utilisez la fonction “Seed Vault” du wallet après la mise à jour. Notez la phrase sur un support physique résistant au feu et à l’eau.
- Vérifiez la nouvelle adresse : avant d’envoyer des fonds, vérifiez que l’adresse de réception affichée sur l’écran du wallet correspond à celle que vous avez enregistrée.
- Envoyez une petite transaction test : transférez une petite quantité de Bitcoin pour valider le bon fonctionnement de la nouvelle seed.
- Transférez le reste des fonds : une fois le test réussi, déplacez l’intégralité des actifs.
- Conservez l’ancien backup : ne détruisez pas l’ancienne seed tant que la migration n’est pas entièrement confirmée et que les fonds sont visibles sur la nouvelle adresse.
Leçons pour l’industrie et les utilisateurs de hardware wallets
L’importance des audits de sécurité indépendants
Cet incident souligne une vérité inconfortable : même les dispositifs de stockage à froid les plus réputés peuvent contenir des vulnérabilités critiques. Le code du RNG est un élément fondamental qui devrait être audité de manière exhaustive. En France, l’ANSSI et les référentiels comme l’ISO 27001 insistent sur la validation des fonctions cryptographiques. Cet événement va probablement accélérer la demande d’audits de sécurité tiers pour tous les fabricants de hardware wallets. La transparence de Coinkite dans la gestion de cet incident est à saluer, mais le mal est fait.
Cet incident pourrait rebattre les cartes du marché des hardware wallets. La confiance, durement acquise par COLDCARD, est érodée. Les concurrents (Ledger, Trezor, Foundation) vont probablement intensifier leurs communications sur la sécurité de leur propre RNG.
La diversification des solutions de stockage à froid
La faille RNG COLDCARD rappelle le principe de base de la sécurité des crypto-actifs : ne jamais mettre tous ses œufs dans le même panier. La diversification des solutions de stockage à froid (multi-signature, portefeuilles de différents fabricants, schémas de backup géo-répartis) est une stratégie recommandée pour atténuer le risque lié à une vulnérabilité unique. Un portefeuille multi-signature 2/3 utilisant trois modèles de wallets différents (Ledger, Trezor, COLDCARD) aurait, par exemple, résisté à cette attaque.
Implications réglementaires pour le marché français
La réglementation MiCA en Europe et les positions de l’AMF en France pourraient intégrer des exigences plus strictes sur la certification des composants cryptographiques des wallets. Les prestataires de services sur actifs numériques (PSAN) français devront probablement revoir leurs procédures de due diligence concernant les solutions de stockage à froid recommandées à leurs clients. Cet incident pourrait accélérer la mise en place de normes de sécurité minimales pour les hardware wallets, à l’image de ce qui existe déjà pour les modules de sécurité matériels (HSM) dans le secteur bancaire.
L’impact sur la confiance des utilisateurs français
En France, la communauté Bitcoin a été particulièrement touchée par cette annonce. COLDCARD était souvent considéré comme le ‘gold standard’ du stockage à froid, notamment pour les ‘bitcoiners’ les plus soucieux de leur sécurité. La révélation de cette faille a semé le doute. De nombreux utilisateurs français se tournent désormais vers des solutions multi-signatures ou des wallets open source alternatifs. Les forums et les groupes Telegram francophones sont en ébullition, partageant des conseils de migration et des retours d’expérience. La transparence de Coinkite dans la communication de l’incident est saluée, mais la confiance, une fois brisée, est longue à reconstruire.
Conclusion : agir sans attendre
La vulnérabilité RNG COLDCARD est un cas d’école pour l’industrie des crypto-monnaies. Elle démontre qu’une faille logicielle infime, une simple erreur d’intégration dans un générateur de nombres aléatoires, peut avoir des conséquences financières catastrophiques, à hauteur de 88 millions de dollars. Pour les utilisateurs, la leçon est claire : la sécurité d’un hardware wallet ne se limite pas à sa réputation. Elle repose sur une hygiène de sécurité rigoureuse, la vérification constante des firmwares, et l’application stricte des procédures de migration lors de la publication de correctifs. La sécurité de vos Bitcoins est votre responsabilité. Ne laissez pas un défaut logiciel compromettre des années d’épargne. Agissez dès maintenant : vérifiez votre matériel, mettez à jour votre firmware et, si nécessaire, migrez vos fonds vers une nouvelle seed générée en toute sécurité.