écrits/news/2026/08
News3 août 2026·6 min

Une faille du firmware Coldcard siphonne 1 816 BTC, les attaques entrent dans leur quatrième vague

Une erreur de configuration vieille de cinq ans dans le firmware des portefeuilles Coldcard a remplacé le générateur matériel de nombres aléatoires par un repli logiciel prévisible, permettant aux attaquants de recalculer les phrases de récupération et de vider environ 1 816 BTC sur plus de 5 200 adresses depuis le 30 juillet.

Une erreur de configuration introduite en mars 2021 dans le firmware des portefeuilles Coldcard a discrètement désactivé le générateur matériel de nombres aléatoires de l'un des dispositifs de stockage à froid les plus réputés de l'écosystème Bitcoin. Le 3 août 2026, le vol qui en découle est entré dans sa quatrième vague organisée : Galaxy Research a suivi environ 448,73 BTC quittant les portefeuilles de victimes en 218 transactions sur près de deux heures et demie, portant le total depuis le 30 juillet à environ 1 816 BTC — soit quelque 115 millions de dollars — prélevés sur plus de 5 200 adresses.

Le fabricant Coinkite a publié un avis de sécurité d'urgence et livré un firmware corrigé pour tous les modèles concernés le 31 juillet. Le correctif ferme la brèche pour les nouvelles phrases de récupération. Il ne change rien pour celles déjà générées.

Points clés

  • Une seule erreur de configuration de build en 2021 a redirigé la génération des graines vers un générateur pseudo-aléatoire logiciel déterministe au lieu du générateur matériel du STM32.
  • Coinkite estime que l'entropie effective des graines est tombée à environ 40 bits sur les Mk3 et environ 72 bits sur les Mk4, Mk5 et Q, contre une cible de 128 bits pour une graine BIP-39 de 12 mots.
  • La première vague, le 30 juillet, a vidé 1 196 adresses en 41 minutes, emportant 1 082,65 BTC valant alors environ 70,2 millions de dollars.
  • Les firmwares corrigés — 4.2.0 pour les Mk2 et Mk3, 5.6.0 pour les Mk4 et Mk5, 1.5.0Q pour le Q, avec les versions Edge correspondantes — ne réparent pas une graine existante. Les utilisateurs touchés doivent en générer une nouvelle et déplacer leurs fonds.
  • Rodolfo Novak, cofondateur de Coldcard connu sous le pseudonyme NVK, attribue le contexte de la découverte à la revue de code assistée par IA, avertissant que les modèles de pointe exhument désormais les bugs latents plus vite que les auditeurs humains les plus chevronnés.

Ce qui a réellement cassé

Il ne s'agit pas d'une rupture cryptographique, mais d'un drapeau de compilation que personne n'a vérifié.

La configuration de production de Coldcard définit à zéro la macro MicroPython activant le générateur aléatoire intégré, puisque Coinkite fournit son propre wrapper autour du périphérique matériel du STM32. Or la bibliothèque libngu testait si cette macro était définie et non si elle était activée. Le symbole étant présent, la compilation retombait silencieusement sur le générateur pseudo-aléatoire Yasmarang de MicroPython.

Ce repli s'initialise une seule fois, à partir de l'identifiant unique de la puce et de quelques registres de minuterie, et ne collecte plus aucune entropie fraîche ensuite. Un commit daté du 1er mars 2021 a fait basculer l'appel de génération de graine du chemin matériel vers le chemin logiciel : à partir de ce jour, chaque appareil concerné a produit des phrases de récupération tirées d'un espace de recherche assez réduit pour être énuméré.

C'est la société de technologie financière Block qui a tracé la faille et l'a signalée à Coinkite fin juillet. La discussion publique a démarré dans l'après-midi du 30 juillet ; le firmware corrigé est arrivé le 31 juillet à 9 h 33, heure de la côte Est américaine.

Qui est exposé

L'avis de Coinkite détaille les versions concernées par modèle : Mk2 et Mk3 en 4.0.1 à 4.1.9, Mk4 et Mk5 Standard avant 5.6.0, Mk4 et Mk5 Edge avant 6.6.0X, Q Standard avant 1.5.0Q et Q Edge avant 6.6.0QX. Les gammes TAPSIGNER, OPENDIME et SATSCARD ne sont pas touchées.

Le critère de risque retenu par l'entreprise est direct : les fonds sont en danger si la graine a été créée sans au moins 50 lancers de dés indépendants et privés et si le portefeuille n'est pas protégé par une phrase secrète BIP-39 forte et unique. Les utilisateurs ayant apporté leur propre entropie par les dés échappent au rayon d'action de ce bug précis. Ceux qui utilisent une phrase secrète disposent d'une seconde barrière que l'attaquant doit encore deviner, mais Coinkite précise explicitement qu'une phrase secrète "ne répare pas la graine affectée" et que ces détenteurs doivent migrer dès que possible.

L'entreprise a également demandé de ne générer aucune nouvelle graine sur un modèle concerné avant l'installation de la mise à jour, détruit les stocks vulnérables et suspendu les expéditions le temps que le correctif se diffuse.

Pourquoi les vagues se succèdent

Chaque vague correspond à un lot de clés recalculées par l'attaquant. Alex Thorn, de Galaxy Research, a signalé la quatrième alors que les transactions étaient encore en attente de confirmation, indiquant que des transactions similaires restaient dans le mempool et que celles déjà confirmées portaient l'option RBF — une fenêtre étroite pendant laquelle certaines victimes pouvaient encore surenchérir sur le voleur et sauver leurs fonds.

Galaxy a signalé environ 600 adresses soupçonnées d'être contrôlées par l'attaquant aux enquêteurs fédéraux et aux sociétés de conformité. Les chercheurs qui suivent les opérations s'attendent à ce que toute graine vulnérable non migrée finisse par être vidée : l'attaquant n'a rien à percer, les clés étaient dérivables depuis le départ.

Les estimations de pertes publiées ces quatre derniers jours vont de 88,6 millions de dollars sur 4 585 adresses à environ 118 millions sur 5 294, selon l'instantané retenu et le cours du bitcoin utilisé. Toutes constituent des planchers, pas des bilans définitifs.

L'angle IA

Le détail le plus inconfortable pour les équipes d'ingénierie n'a que peu à voir avec Bitcoin. Novak a qualifié l'épisode de "réalité sobre du nouveau paradigme de l'IA", avertissant que la revue de code assistée par IA trouve désormais les bugs latents à une vitesse qui dépasse celle des experts les plus aguerris du secteur, et conseillant aux développeurs de partir du principe que leur code est audité simultanément par les attaquants et les défenseurs à l'aide de modèles de pointe.

Le bug a survécu à cinq ans d'examen open source sur un appareil commercialisé précisément pour son auditabilité. Ce qui a changé en 2026, ce n'est pas le code. C'est le coût de sa lecture attentive.

Cela renverse une hypothèse confortable qui sous-tend beaucoup de postures de sécurité. "Personne ne l'a trouvé en cinq ans" a cessé d'être une preuve de quoi que ce soit — pour un firmware de portefeuille comme pour toute base de code chargée de dépendances, où un repli à la compilation peut substituer une primitive plus faible sans émettre le moindre avertissement.

La suite

Coinkite s'est engagée à publier une note technique détaillée sur la défaillance d'entropie et continue de mettre à jour son avis de sécurité. Pour les détenteurs, la marche à suivre reste inchangée et urgente : mettre à jour le firmware, générer une nouvelle graine sur l'appareil corrigé, vérifier la sauvegarde et l'adresse de réception à l'écran, envoyer une transaction de test, puis transférer le solde restant en conservant l'ancienne sauvegarde jusqu'à confirmation complète de la migration.

Pour tous les autres, la leçon durable relève du test. Un générateur de nombres aléatoires silencieusement dégradé renvoie quand même des octets, passe quand même les tests fonctionnels et part quand même en production. Vérifier que l'entropie provient bien de la source que l'on croit — à la compilation, sur l'appareil, dans la CI — est précisément le contrôle que personne n'exécutait, selon ce que révèle cet incident.


Source : Avis de sécurité Coinkite