Coinkite affirme qu'un attaquant a utilisé l'IA pour trouver une faille que sa propre revue IA avait manquée, exposant 500 portefeuilles à un bug de génération de graine qui a réduit 128 bits d'entropie à 40.
Résumé
- Un attaquant a drainé 594 BTC, environ 38 millions de dollars, depuis environ 500 portefeuilles matériels Coldcard en 25 minutes le 31 juillet, exploitant une faille de génération de graine présente depuis mars 2021.
- Le bug a réduit l'entropie effective des graines Mk3 de 128 bits à environ 40 bits, rendant les clés privées devinables par calcul de force brute plutôt que par attaque cryptographique.
- Coinkite, le fabricant de Coldcard, pense que l'attaquant a utilisé l'IA pour découvrir la faille dans son firmware open source, et affirme que sa propre audit IA du même code quelques semaines plus tôt n'avait rien trouvé.
- Chaque modèle actuel de Coldcard est affecté à un certain degré, avec les graines Mk4, Q et Mk5 estimées à environ 72 bits d'entropie au lieu de 128, et la mise à jour du firmware ne répare pas les graines déjà créées.
- Block, Trezor et Ledger ont confirmé que leurs produits ne sont pas affectés, tandis que l'incident soulève des questions fondamentales sur la fiabilité des portefeuilles matériels comme seule couche de garde pour des avoirs importants en bitcoin.
L'attaque a pris 25 minutes. À 2h14 UTC le 31 juillet, une entité unique a commencé à balayer les bitcoins des portefeuilles matériels Coldcard. À 2h39, 594 BTC avaient été déplacés d'environ 500 portefeuilles vers une adresse de consolidation. Les fonds, valant environ 38 millions de dollars au moment du balayage, n'ont pas été volés par hameçonnage, logiciel malveillant ou accès physique aux appareils. Ils ont été volés parce que les appareils ont généré des clés privées prévisibles.
Coinkite, la société basée à Toronto qui fabrique Coldcard, a publié un avis et une analyse technique le 30 juillet après avoir découvert la faille. La société a déclaré qu'une erreur de compilation dans son firmware a fait que la génération de graine a tiré le caractère aléatoire d'un repli logiciel plutôt que du générateur de nombres aléatoires matériel que l'appareil était conçu pour utiliser. Le bug était présent depuis la version 4.0.1 du firmware, publiée en mars 2021. Chaque graine générée sur un Coldcard affecté au cours des cinq dernières années était plus faible que ce que son propriétaire croyait.
Les implications dépassent la perte financière immédiate. Coldcard a été le portefeuille matériel de choix pour les maximalistes du bitcoin, les chercheurs en sécurité et les dépositaires institutionnels qui privilégient la sécurité air gap, open source et bitcoin uniquement. Si le portefeuille matériel le plus fiable du bitcoin a pu expédier un bug d'entropie vieux de cinq ans sans être détecté, la question n'est pas de savoir si Coldcard a échoué. La question est de savoir si un portefeuille matériel peut être considéré comme un point unique de sécurité de garde.
Le mécanisme : comment 128 bits sont devenus 40
L'explication technique est à la fois simple et alarmante. Le firmware de Coldcard appelle une fonction pour obtenir le caractère aléatoire lors de la génération de graine. Deux implémentations de cette fonction existaient dans le code avec des signatures identiques : le générateur de nombres aléatoires matériel que Coinkite a écrit, et un repli logiciel hérité de MicroPython, l'environnement d'exécution Python embarqué sur lequel le firmware est construit.
Une garde de préprocesseur était censée sélectionner l'implémentation matérielle. Mais la garde vérifiait seulement si un paramètre de configuration était défini, pas si sa valeur était correcte. Lorsque le firmware a été compilé, le système de construction a résolu l'ambiguïté en sélectionnant le repli logiciel. La compilation s'est terminée sans avertissement. Le firmware résultant a généré des graines qui semblaient normales, produisaient des adresses bitcoin valides et acceptaient des dépôts sans aucune indication que l'entropie sous-jacente était catastrophiquement faible.
Sur le Mk3, Coinkite estime l'espace de recherche effectif pour une graine générée dans ces conditions à environ 40 bits. Une graine de 128 bits a plus de combinaisons possibles qu'il n'y a d'atomes dans l'univers observable. Une graine de 40 bits a environ un billion de combinaisons. Cela est à la portée d'un attaquant moyennement équipé utilisant du matériel standard. La différence n'est pas une erreur d'arrondi. C'est la différence entre une serrure qui ne peut pas être crochetée et une serrure qui peut être défoncée à coups de pied.
Les modèles Mk4, Q et Mk5 incluent des éléments sécurisés supplémentaires qui mélangent leur propre entropie dans le processus de génération de graine. Coinkite estime que ces modèles produisent des graines avec environ 72 bits d'entropie effective sous le bug. C'est matériellement mieux que 40 bits mais toujours bien en dessous de la cible de 128 bits. Un espace de clé de 72 bits n'est pas pratiquement attaquable par force brute avec le matériel grand public actuel, mais il est à portée théorique d'un adversaire bien financé ayant accès à des ressources informatiques spécialisées.
Le détail le plus critique dans l'avis de Coinkite est une phrase unique : « Mettre à jour le firmware ne change pas ou ne répare pas une graine existante. » Chaque propriétaire de Coldcard qui a généré une graine sur un firmware affecté doit créer une nouvelle graine sur du matériel corrigé et transférer ses fonds. Il n'y a pas de correctif logiciel pour une clé privée faible. La clé elle-même doit être remplacée.
La dimension IA
L'avis de Coinkite a introduit une affirmation qui a immédiatement attiré l'attention de la communauté de la sécurité. L'entreprise a déclaré qu'elle pense que « quelqu'un a utilisé l'IA pour examiner les versions précédentes de notre firmware » afin de découvrir le bug. Elle a ajouté qu'elle avait exécuté « l'un des meilleurs modèles disponibles » sur le même code des semaines avant l'attaque, et que le modèle « n'a pas trouvé ce bug ni rien de grave ».
L'affirmation est plausible mais non vérifiée. Le firmware Coldcard est open source et publiquement disponible sur GitHub. Toute personne ou système automatisé peut l'examiner. La classe spécifique de bug, un garde de préprocesseur qui vérifie la définition plutôt que la valeur, est le genre d'erreur de chemin de code subtile que les grands modèles de langage ont montré une capacité variable à détecter selon le contexte, l'ingénierie des invites et le modèle utilisé.
L'asymétrie décrite par Coinkite est réelle même si son attribution spécifique est spéculative. Les attaquants et les défenseurs ont effectivement accès aux mêmes outils d'IA. Mais les attaquants ont un avantage structurel : ils doivent trouver une faille exploitable, tandis que les défenseurs doivent toutes les trouver. Une IA qui examine le code et ne signale rien de grave fournit une fausse confiance. Une IA qui examine le code et trouve un seul chemin exploitable fournit à l'attaquant tout ce dont il a besoin.
L'incident soulève également des questions sur le processus d'audit de sécurité des portefeuilles matériels en général. Coldcard a été salué pour son approche open source, qui permet à quiconque d'inspecter le firmware. Mais la visibilité open source n'a de valeur que si la qualité des inspections effectuées est bonne. Si l'examen IA du fabricant, présumé mené avec un contexte complet sur l'architecture et l'intention du codebase, a manqué le bug, l'avantage open source devient théorique, pas pratique.
La communauté de recherche en sécurité a débattu de l'attribution à l'IA avec scepticisme. Plusieurs chercheurs ont noté sur les réseaux sociaux que la classe de bug spécifique, un garde de préprocesseur vérifiant la définition par rapport à la valeur, est bien documentée dans la littérature sur les systèmes embarqués et aurait pu être trouvée par une revue de code conventionnelle. Le cadrage IA, ont-ils soutenu, risque d'obscurcir une défaillance plus fondamentale : Coinkite n'avait pas de processus de revue humaine suffisants pour un chemin de code critique qui n'avait pas changé depuis cinq ans. Que l'IA ait trouvé le bug ou qu'un chercheur humain l'ait fait, le problème sous-jacent est le même. Le code était public, le bug était subtil mais pas nouveau, et personne du côté défenseur ne l'a attrapé.
Block a publié une analyse technique indépendante le 31 juillet confirmant qu'aucun de ses produits, y compris Bitkey, n'est affecté. Le responsable matériel de Block, Max Guise, a exhorté toute personne possédant un Coldcard affecté à « déplacer les fonds dès qu'ils le peuvent en toute sécurité ». Trezor a confirmé que ses appareils utilisent une approche de génération d'entropie différente et ne sont pas vulnérables. Ledger n'a pas publié de réponse officielle mais son architecture Secure Element utilise un générateur de nombres aléatoires matériel dédié qui fonctionne indépendamment du firmware.
La fenêtre de cinq ans
La chronologie de la vulnérabilité est aussi dommageable que la vulnérabilité elle-même. La version du firmware 4.0.1, qui a introduit le bug, a été publiée en mars 2021. Chaque graine générée sur un Coldcard affecté entre mars 2021 et les versions corrigées du firmware publiées le 31 juillet 2026 est potentiellement compromise. Cela représente cinq ans et quatre mois de génération de graines affectées.
Pendant cette fenêtre, Coldcard a expédié le Mk3 (affecté à 40 bits), le Mk4 (affecté à 72 bits) et le Q (affecté à 72 bits). Le Mk5, sorti en 2026, est également affecté à 72 bits. Coinkite a publié plusieurs mises à jour du firmware pendant cette période, dont aucune n'a traité ou détecté le problème d'entropie. Les propres revues de sécurité de l'entreprise, y compris l'audit IA récent, ne l'ont pas attrapé.
La fenêtre de cinq ans a également coïncidé avec une période d'appréciation significative du prix du bitcoin. Les graines générées sur les appareils Mk3 affectés en 2021, lorsque le bitcoin se négociait entre 29 000 $ et 69 000 $, protègent maintenant des avoirs à des prix supérieurs à 60 000 $. L'incitation économique pour un attaquant à investir des ressources computationnelles dans la force brute des clés de 40 bits a augmenté à chaque rallye de prix. Un portefeuille détenant 1 BTC qui valait 30 000 $ lorsque la graine a été générée vaut maintenant le double. Le retour sur investissement de l'attaquant s'est amélioré simplement en attendant.
Le nombre de portefeuilles affectés est difficile à estimer précisément. Coinkite ne publie pas de chiffres de vente. Les 500 portefeuilles vidés lors de l'attaque initiale représentent le sous-ensemble le plus exposé, probablement les utilisateurs de Mk3 avec l'entropie la plus faible de 40 bits qui détenaient des soldes suffisamment importants pour justifier l'investissement computationnel de l'attaquant. Le nombre total de portefeuilles avec des graines compromises sur tous les modèles affectés pourrait être significativement plus élevé.
Le schéma de consolidation de l'attaquant suggère une préparation systématique. Les 594 BTC ont été balayés depuis environ 500 portefeuilles vers une adresse de consolidation, puis déplacés vers une seule adresse contenant 562 BTC. La fenêtre d'exécution de 25 minutes et le nombre de portefeuilles ciblés simultanément indiquent que l'attaquant avait précalculé les clés vulnérables avant de lancer le balayage. Ce n'était pas une attaque opportuniste. C'était une opération qui a nécessité des semaines ou des mois de préparation.
L'analyse en chaîne du balayage montre une séquence d'exécution méthodique. L'attaquant n'a pas diffusé les 500 transactions simultanément, ce qui aurait risqué une congestion du mempool et un éventuel front running par des bots de type MEV surveillant les schémas de transactions inhabituels. Au lieu de cela, les transactions ont été regroupées par lots, chaque lot étant confirmé en un ou deux blocs. L'adresse de consolidation a reçu des fonds sur plusieurs blocs avant qu'une transaction finale ne déplace 562 BTC vers ce qui semble être une adresse de détention à long terme. Au moment où nous écrivons, les fonds n'ont pas bougé davantage.
Le problème de la migration
Les recommandations de remédiation de Coinkite demandent aux utilisateurs concernés d'effectuer une migration de portefeuille : générer une nouvelle graine sur le firmware corrigé, vérifier la sauvegarde, envoyer une transaction de test, puis déplacer les fonds restants. Le processus est simple pour les utilisateurs ayant un seul portefeuille et des soldes modérés. Il est nettement plus complexe pour les utilisateurs ayant des configurations multisig, des transactions verrouillées dans le temps, ou des portefeuilles qui servent de clé dans un arrangement de garde plus large.
La migration crée également ses propres risques de sécurité. Déplacer des fonds d'un portefeuille compromis vers un nouveau portefeuille nécessite que le portefeuille compromis signe une transaction. Si l'attaquant a déjà calculé la clé privée, il peut devancer la migration en surveillant la blockchain pour toute transaction provenant de l'adresse compromise et en balayant immédiatement les fonds restants. Les utilisateurs ayant des soldes importants sont confrontés à une course entre leur propre migration et le balayage de l'attaquant.
Pour les utilisateurs détenant du bitcoin dans des arrangements multisig où un Coldcard servait de l'un des multiples appareils de signature, la migration est plus complexe mais le risque est partiellement atténué. Un portefeuille multisig 2-sur-3 où une seule clé a été générée sur un Coldcard affecté reste sécurisé tant que l'attaquant ne peut pas compromettre une deuxième clé. Cependant, la clé compromise affaiblit toujours le modèle de sécurité global et doit être remplacée. Le processus nécessite de coordonner avec tous les détenteurs de clés pour construire un nouveau portefeuille multisig avec une clé de remplacement, signer une transaction de migration avec le quorum existant, et vérifier le nouvel arrangement avant de déplacer les fonds restants.
Coinkite a traité un cas particulier qui offre un soulagement partiel. Les utilisateurs qui ont ajouté au moins 50 lancers de dés indépendants lors de la génération de la graine ont contribué suffisamment d'entropie externe pour porter le total au-dessus de 128 bits, indépendamment du bug du firmware. L'entrée des dés a été hachée avec le hasard généré par l'appareil, donc une forte entropie des dés a compensé la faible entropie de l'appareil. Les utilisateurs qui ont ajouté 99 lancers ou plus ont contribué environ 256 bits rien qu'avec les dés.
L'exception des dés met en évidence une ironie. Les utilisateurs les plus susceptibles d'avoir ajouté des lancers de dés extensifs lors de la génération de la graine sont les utilisateurs les plus soucieux de la sécurité, précisément le groupe démographique qui a choisi Coldcard spécifiquement en raison de sa réputation de pratiques de sécurité supérieures. Pour ces utilisateurs, leur propre paranoïa concernant la qualité de l'entropie peut les avoir involontairement protégés de l'échec du fabricant à la fournir.
Ce que cela signifie pour la sécurité des portefeuilles matériels
L'incident Coldcard n'est pas la première compromission de portefeuille matériel. Ledger a fait face à une violation de base de données en 2020 qui a exposé des informations clients. Trezor a divulgué une vulnérabilité d'extraction physique en 2023. Mais ces incidents impliquaient soit une exposition de métadonnées, soit des exigences d'accès physique. Le bug de Coldcard est différent car il sape la promesse de sécurité fondamentale de l'appareil : qu'il génère des clés privées véritablement aléatoires.
Le moment aggrave les dégâts. L'incident survient alors que le bitcoin se négocie près de ses sommets historiques, et l'adoption institutionnelle des solutions d'auto-garde s'est accélérée. Les entreprises et les family offices qui ont choisi Coldcard spécifiquement pour sa réputation de sécurité sont maintenant confrontés à une décision opérationnelle urgente : migrer les fonds sur des clés potentiellement compromises tout en courant contre un attaquant qui a peut-être déjà calculé ces clés.
L'incident remet en question plusieurs hypothèses que la communauté bitcoin a traitées comme fondamentales. L'hypothèse que le firmware open source est intrinsèquement plus sûr que le firmware propriétaire parce qu'il peut être audité. L'hypothèse que les générateurs de nombres aléatoires matériels dans les appareils bitcoin dédiés sont plus fiables que les alternatives logicielles. L'hypothèse qu'un appareil se concentrant exclusivement sur le bitcoin, plutôt que de supporter plusieurs crypto-monnaies, aura une base de code plus simple et donc plus auditable.
Aucune de ces hypothèses n'est fausse en principe. Elles ne sont fausses que comme absolus. Le firmware open source peut être audité, mais il n'a pas été audité efficacement. Les générateurs de nombres aléatoires matériels sont plus dignes de confiance, mais seulement lorsque le système de construction y est réellement lié. Un codebase uniquement bitcoin est plus simple, mais la simplicité n'a pas empêché un bug vieux de cinq ans de passer inaperçu.
La leçon pratique est que les portefeuilles matériels ne doivent pas être traités comme la seule couche de garde pour des avoirs bitcoin importants. Les arrangements multisignature qui répartissent les clés sur plusieurs appareils de différents fabricants, combinés à des sources d'entropie générées indépendamment, fournissent une défense en profondeur qu'aucun appareil unique ne peut égaler. L'incident Coldcard démontre que même l'appareil le plus fiable peut échouer de manière invisible pour l'utilisateur jusqu'à ce que les fonds soient partis.
La question plus large est de savoir si les processus de revue de sécurité de l'industrie des portefeuilles matériels sont adéquats pour les actifs qu'ils protègent. Une perte de 38 millions de dollars due à un bug de firmware suggère qu'ils ne le sont pas. Le modèle d'auto-garde que les défenseurs du bitcoin promeuvent exige des outils de garde qui répondent à un niveau de fiabilité comparable à l'infrastructure bancaire qu'ils cherchent à remplacer. Après Coldcard, ce niveau n'a pas été atteint.
Ce qu'il faut surveiller
- **Le mouvement de l'attaquant de la consolidation de 562 BTC.** Que les fonds soient mélangés, envoyés à des échanges, ou conservés en place fournira des informations sur la sophistication et la juridiction de l'attaquant. Les entreprises d'analyse de chaîne surveillent déjà l'adresse.
- **Des portefeuilles supplémentaires affectés au-delà des 500 initiaux.** L'attaquant a peut-être calculé des clés pour des portefeuilles supplémentaires mais a choisi de ne pas les balayer simultanément. L'exposition totale sur tous les modèles Coldcard affectés pourrait être significativement plus grande que les 38 millions de dollars initiaux.
- **Le rythme de migration des utilisateurs.** Coinkite ne peut pas forcer les utilisateurs à générer de nouvelles graines. Le nombre de portefeuilles qui restent sur des graines compromises après 30, 60 et 90 jours indiquera à quel point l'avis a atteint la base d'utilisateurs affectée.
- **La réponse réglementaire.** Une perte de 38 millions de dollars causée par un bug de firmware du fabricant dans un produit financier de consommation déclencherait une action réglementaire dans la finance traditionnelle. Que les agences de protection des consommateurs ou les régulateurs financiers répondent à cet incident signalera comment les gouvernements classifient les portefeuilles matériels.
- **Les divulgations de sécurité des fabricants concurrents.** Block, Trezor et Ledger ont confirmé qu'ils ne sont pas affectés. Qu'ils publient des analyses techniques détaillées de leurs propres processus de génération d'entropie indiquera si l'industrie traite cela comme un échec spécifique à Coldcard ou comme une opportunité de revue systémique.
Questions fréquemment posées
Combien de bitcoin ont été volés dans l'exploit Coldcard ?
Environ 594 BTC, d'une valeur d'environ 38 millions de dollars, ont été retirés d'environ 500 portefeuilles matériels Coldcard en 25 minutes le 31 juillet 2026. Les fonds ont été consolidés dans une seule adresse détenant 562 BTC.
Qu'est-ce qui a causé la vulnérabilité Coldcard ?
Une erreur de construction dans le firmware de Coldcard a fait que la génération de graines utilisait un repli de nombres aléatoires logiciel de MicroPython au lieu du générateur de nombres aléatoires matériel. Un garde de préprocesseur vérifiait seulement si un paramètre de configuration était défini, pas sa valeur, donc la construction a lié la mauvaise implémentation sans avertissement.
À quel point les graines affectées étaient-elles faibles ?
Les graines Mk3 avaient environ 40 bits d'entropie effective au lieu des 128 bits prévus. Les graines Mk4, Q et Mk5 avaient environ 72 bits en raison de l'entropie supplémentaire de leurs éléments sécurisés. Un espace de clés de 40 bits est forcible par force brute avec du matériel standard.
La mise à jour du firmware corrige-t-elle le problème ?
Non. La mise à jour du firmware corrige la génération future de graines mais ne répare pas une graine déjà créée sur un firmware affecté. Les utilisateurs doivent générer une nouvelle graine sur du matériel corrigé et migrer tous les fonds vers le nouveau portefeuille.
Quels modèles Coldcard sont affectés ?
Chaque modèle actuel est affecté à un certain degré. Le Mk3 est le plus gravement affecté avec 40 bits d'entropie. Les Mk4, Mk5 et Q sont affectés à environ 72 bits. Tapsigner, Opendime et Satscard utilisent un code différent et ne sont pas affectés.
D'autres portefeuilles matériels sont-ils concernés ?
Block, Trezor et Ledger ont confirmé que leurs produits ne sont pas concernés. Block a publié une analyse technique indépendante. Trezor a déclaré que ses appareils utilisent une approche différente de génération d'entropie. La vulnérabilité est spécifique au processus de construction du firmware de Coldcard.
Coinkite était-il au courant du bug avant l'attaque ?
Coinkite affirme avoir découvert la faille et publié un avis le 30 juillet, après que le bug a été signalé. L'entreprise déclare avoir effectué une revue IA de son firmware des semaines avant l'attaque, et cette revue n'a pas trouvé le problème. Le bug était présent depuis mars 2021.
Que doivent faire les propriétaires de Coldcard maintenant ?
Mettez à jour le firmware le plus récent pour votre modèle. Générez une nouvelle graine sur l'appareil corrigé. Vérifiez la sauvegarde et une adresse de réception. Envoyez une transaction de test. Déplacez les fonds restants. Les utilisateurs qui ont ajouté au moins 50 lancers de dés indépendants lors de la génération de la graine d'origine n'ont peut-être pas besoin de migrer, mais Coinkite recommande de migrer de toute façon.






