ActualitésCryptoÀ la recherche du pirate de Coldcard : le voleur de la vague 1 pourrait être connu du FBI

À la recherche du pirate de Coldcard : le voleur de la vague 1 pourrait être connu du FBI

Auteur: Bitcoin Magazine·

Points clés

  • La première vague des drains Coldcard a déplacé 1,082.65 BTC le 30 juillet 2026, et ces coins n’ont pas encore été déplacés depuis l’adresse de l’attaquant.
  • Block a indiqué que son enquête reliait les balayages à un compte payant chez un fournisseur de services blockchain, dont les journaux correspondaient au schéma de requêtes avec une précision extraordinaire.
  • Au début du mois d’août, les pertes confirmées et estimées issues de plusieurs vagues dépassaient 1,800 BTC sur plus de 5,000 adresses, avec environ $118 million confirmés volés.
  • La vulnérabilité provenait d’une défaillance d’entropie dans la génération des seeds du firmware Coldcard, affectant des appareils aussi anciens que le MK2 avec le firmware 4.0.1 et les versions ultérieures.
  • Des chercheurs estiment que certaines vagues ultérieures présentent un comportement opérationnel différent, ce qui suggère que d’autres acteurs ont pu exploiter le même espace de seeds faibles après la divulgation.
À la recherche du pirate de Coldcard : le voleur de la vague 1 pourrait être connu du FBI

Les autorités savent peut-être déjà qui a vidé plus de 1,000 bitcoin des portefeuilles Coldcard lors de la première et plus importante vague des drains de juillet 2026. L’enquête de Block indique avoir retracé les balayages on-chain de l’attaquant jusqu’à un compte payant chez un grand fournisseur de données blockchain, et que les journaux internes du fournisseur correspondaient au schéma du vol avec une « extraordinary specificity ».

PSA : L’attaque est toujours en cours et vise des clés privées faibles générées sur des appareils aussi anciens que le MK2 avec le firmware 4.0.1 et les versions ultérieures. Si vous en possédez un, vérifiez-le et transférez les fonds dès que possible. Consultez l’avis de Coinkite et la page d’état.

Les coins de cette première vague — 1,082.65 BTC — restent intacts à l’adresse de l’attaquant. Cela laisse ouverte la possibilité que les victimes récupèrent au moins une partie des fonds volés. La question essentielle est désormais de savoir qui est le pirate, et si la même piste renvoie à un acteur externe sophistiqué ou à quelque chose de plus proche de l’« insider retirement attack » dont Coinkite avait autrefois averti.

Les enjeux dépassent les seuls utilisateurs de Coldcard. Les appareils Coldcard, fabriqués par Coinkite, font partie des portefeuilles matériels les plus connus destinés à la détention de bitcoin en self-custody, avec des clés privées générées et stockées hors ligne plutôt que sur des serveurs connectés à Internet. Une faille dans l’aléa utilisé pour générer ces clés touche au fondement même de ce modèle.

Ce que nous savons

Le 30 juillet 2026, un attaquant a commencé à drainer systématiquement des bitcoin depuis des portefeuilles matériels Coldcard ayant généré des seeds sous un firmware vulnérable, un bug resté inaperçu pendant des années. La première et plus grande vague a déplacé 1,082.65 BTC. D’autres vagues ont suivi, avec des estimations supérieures à 2,000 BTC. Alex Thorn, de Galaxy Research, a suivi l’activité grâce à une combinaison d’analyse de schémas on-chain et de signalements volontaires de victimes. Au début du mois d’août, les pertes confirmées et estimées sur plusieurs vagues dépassaient 1,800 BTC sur plus de 5,000 adresses, même si le total final continue d’être affiné à mesure que de nouveaux signalements arrivent. En valeur dollar, environ $118 million ont été confirmés volés.

Thorn a déclaré publiquement que les autorités pourraient déjà disposer d’une piste concrète sur l’opérateur derrière le plus gros lot. Dans une séquence du Bitcoin Policy Institute diffusée sur la chaîne YouTube de Bitcoin Magazine, Thorn a déclaré : « Wave one’s identity, attacker identity, may be known to law enforcement. » Il a ajouté que Wave 1 reste le plus grand bloc identifié à ce jour, les coins étant toujours à l’adresse de l’attaquant, et a indiqué que le schéma de Wave 2 est suffisamment similaire pour qu’il puisse impliquer le même acteur. Wave 2 ajoute environ 76 bitcoin au total.

La principale source de l’affirmation selon laquelle l’identité du pirate pourrait être connue est Clay Garrett, responsable d’ingénierie chez Block, qui travaille sur Bitkey. Le 31 juillet 2026, Garrett a publié les résultats de l’enquête de Block :

« During our investigation of the Coldcard drain yesterday, we identified an unusual pattern in the sweeps. That pattern led us to a hypothesis that has since been confirmed: the operator used a paid account at a well-known blockchain-services provider to query the source addresses and perform other related activity during the sweeps. »

« We contacted the provider directly. Their internal logs matched the suspected workflow with extraordinary specificity, including the number, timing and sequence of requests. The provider was supplying its standard services in response to requests that did not reveal their broader purpose. We have seen no evidence that the provider knowingly participated in or facilitated the suspected theft. » Garrett a déclaré, ajoutant : « We are sharing the relevant information with the appropriate authorities. We will provide further updates when doing so will not interfere with the investigation. »

Pour les enquêteurs, cette découverte est importante car elle comble l’écart qui sépare généralement un vol on-chain d’une identité réelle : les balayages étaient liés à un compte payant dont les journaux de requêtes — le nombre, le moment et la séquence des consultations — ont été conservés par le fournisseur, créant une piste hors chaîne que Garrett dit que Block partage désormais avec les autorités compétentes.

Thorn et d’autres ont indiqué que les vagues ultérieures, plus petites, présentent des schémas opérationnels différents — notamment des drains rapides et opportunistes suivis d’un blanchiment rapide — ce qui suggère que d’autres acteurs pourraient avoir rétro‑ingéniéré le même espace de seeds faibles après la divulgation publique initiale. Les drains confirmés déclarés semblent avoir fortement ralenti après le 6 août, bien que de nombreuses seeds potentiellement vulnérables générées sur le firmware concerné entre 2021 et le correctif de juillet 2026 restent exposées jusqu’au transfert des fonds par les utilisateurs.

Un « Retirement Attack » ?

La nature de l’échec a alimenté des théories conspirationnistes sur des attaques internes, que Coinkite avait elle-même évoquées publiquement. En octobre 2021, le compte officiel COLDCARD a défini un « retirement attack » comme une situation « when the project makers could have a ‘bug’ in the entropy generation for later retrieval. » La publication est toujours disponible ici.

La vulnérabilité de 2026 a produit exactement ce résultat : des seeds générées avec beaucoup moins d’entropie que prévu, les rendant repérables des années plus tard. Certaines personnes dans l’écosystème Bitcoin estiment désormais que le piratage pourrait avoir été une opération interne chez Coinkite, tandis que d’autres sont en désaccord. Les éléments publics restent trop maigres pour tirer une conclusion définitive, et des preuves supplémentaires pourraient ne pas émerger avant des années, probablement seulement à travers un contentieux.

La modification critique est entrée dans la base de code le 1er mars 2021, dans un commit intitulé « First pass w/ libNgU » (b18723dd). Ce commit a remplacé le code de cryptographie et BIP-39 restant dérivé de Trezor par une nouvelle bibliothèque, libngu, et a reconfiguré la génération des seeds. Le résultat attendu était que l’appel au hasard se résolve vers le véritable générateur de nombres aléatoires matériel du STM32. Au lieu de cela, le bug a redirigé l’appel vers le PRNG logiciel Yasmarang de MicroPython, entraînant un effondrement effectif de l’entropie à environ 40 bits sur les anciens modèles et à environ 72 bits sur les plus récents. Cela signifiait que les clés privées bitcoin générées étaient en pratique devinables par le matériel informatique moderne. À titre d’échelle, une seed Bitcoin correctement générée est censée contenir 128 à 256 bits d’entropie, de sorte qu’un effondrement à environ 40 bits réduit de plusieurs ordres de grandeur l’espace que doit explorer un attaquant — la différence entre des clés pratiquement indévinables et des clés qui peuvent simplement être énumérées.

Ce remplacement a été introduit dans le code par Doc-Hex, également connu sous le nom de Peter Gray, le Chief Technical Officer de Coinkite.

Selon Zach Herbert, CEO et fondateur de Foundation Devices, ce changement a pu être motivé par des pressions liées aux licences, bien que Coinkite ait nié que la licence ait été la principale motivation de cette modification du code, affirmant : « COLDCARD had to make this change to move to libsecp256k1; the license change is irrelevant to this. libsecp256k1 is the standard library used by Bitcoin Core. »

Coldcard utilisait du code dérivé de Trezor sous la licence open source GPLv3. Après que Foundation Devices a forké des éléments liés, Coinkite a cherché à déplacer les composants restants vers un dispositif MIT + Commons Clause plus restrictif, limitant la réutilisation commerciale. La réécriture était importante et poursuivait des objectifs d’ingénierie complexes ; c’est cette intégration qui semble avoir laissé une défaillance silencieuse dans le chemin d’entropie.

Le scepticisme à l’égard de la migration hors de la bibliothèque crypto de Trezor est apparu dès le 7 avril 2021, lorsqu’un membre du groupe Telegram de Coinkite a écrit : « do we really want to replace the many-years-old TrezorCrypto code that has been heavily scrutinized by white hatters like Johoe and penetration tested by wallet.fail », ajoutant « switch may be a talented pseudonymous coder, but their commit history sucks. » La critique a toutefois été rapidement écartée par NVK, qui a qualifié la bibliothèque Trezor de « shitcoin shitshow ». Ironiquement, le fait de partager cette base de code avec le marché crypto plus large, sous une licence ouverte, signifiait que la bibliothèque crypto de Trezor avait bénéficié d’un examen du code bien plus approfondi que Libngu n’en obtiendrait jamais, même des années plus tard.

Switch et Peter Gray, alias Doc-Hex

Le remplacement de la bibliothèque cryptographique qui a introduit le bug a été poussé dans le code par Doc-Hex, le CTO de Coinkite, Peter D. Gray. Il a remplacé la bibliothèque de cryptographie Trezor sous GPLv3 par Libngu, une base de code peu connue créée par « Switch », un pseudonyme qui n’avait pas d’historique antérieur évident avant Libngu.

Le compte Switch est apparu sur X le 3 août 2019, avec une mention de DEFCON, la conférence internationale des hackers, un événement généralement fréquenté par des ingénieurs en cybersécurité de tous horizons. Le 16 octobre 2020, Switch a remercié Doc-Hex sur X d’avoir fusionné son code : « Thanks for merge @DocHex … I’m making yet another bitcoin library. Could be useful on @COLDCARDwallet someday. » Quelques jours plus tard, Switch a publié un lien vers Libngu, disant avoir construit une « useful thing ».

Cependant, les choses deviennent étranges ici. Selon des recherches du contributeur de Bitcoin Core James O’Beirne, Switch et Peter D. Gray auraient signé des commits de code avec les mêmes clés GPG. O’Beirne a montré, au moyen de signatures GPG de commits, que des dizaines de commits attribués à switck étaient signés avec la clé personnelle de Peter D. Gray, cofondateur et CTO de Coinkite, qui opère également sous le nom de DocHex. Zach Herbert a également affirmé que des numéros de téléphone se terminant par les deux mêmes chiffres étaient liés aux comptes X DocHex et switck (post). D’autres chercheurs ont relevé des schémas de registre DNS concordants.

Ni Gray ni Coinkite n’ont publiquement répondu à ce jour aux éléments liés aux signatures GPG, et ils n’ont pas répondu aux demandes de commentaire sur le sujet. Le compte Switch reste actif à ce jour et a fusionné des modifications de code dans Libngu aussi récemment que le 17 août 2026.

Dans l’industrie Bitcoin, certains considèrent cela comme un indice circonstanciel d’actes répréhensibles. Mais ce lien, à lui seul, n’est pas concluant. Si Gray avait réellement voulu exploiter les utilisateurs de Coldcard avec ce bug RNG, on ne sait pas pourquoi il aurait signé des commits avec sa clé GPG personnelle. Un bug caché resté dormant pendant des années semblerait également difficile à concilier avec l’usage traçable d’un pseudonyme jetable. Les identités pseudonymes sont courantes chez les développeurs Bitcoin, Satoshi étant l’exemple le plus connu. À lui seul, le lien Gray‑Switch ne semble donc pas suffire à résoudre la chasse au pirate de Coldcard.

Les contributeurs de MicroPython

Plusieurs autres développeurs open source ont également été identifiés récemment comme ayant touché ou influencé du code ayant joué un rôle dans le bug RNG de Coldcard.

Le data analyst LaurentMT a examiné la partie MicroPython du chemin RNG. MicroPython est une implémentation légère et open source de Python 3, conçue pour les microcontrôleurs et les ordinateurs à ressources limitées. En raison du bug, le firmware Coldcard a fini par appeler le repli du générateur pseudo-aléatoire Yasmarang de MicroPython, ce qui a conduit à une génération à faible entropie.

Les modifications du code PRNG de MicroPython ont commencé le 20 août 2020, lorsqu’un ticket GitHub, #6347, a été ouvert par un utilisateur nommé « mirko ». Il se plaignait que son matériel ESP32 renvoyait toujours le même résultat lors de l’appel à random.choice() d’une certaine manière, alors qu’il s’attendait à des résultats aléatoires. Le ticket a suscité des mois de discussion sur la bonne logique et le comportement attendu, que Mirko a présenté comme contre-intuitifs.

Laurent note que « robert-hh initialized a [Pull Request] implementing the PRNG seeding change » le 22 août 2020. Plus tard, le 29 octobre 2020, dpgeorge, mainteneur de MicroPython, a fusionné une version légèrement modifiée de cette pull request dans le dépôt principal, mettant en œuvre « the (UID+SysTick+RTC) to address some limitations in robert-hh’s solution. » Les changements apportés à ce code critique lié au RNG se trouvaient donc dans le dépôt principal de MicroPython lorsque Coldcard l’a repris pour l’utiliser dans Libngu, mais avant que MicroPython n’ait publié une nouvelle version officielle de la bibliothèque.

Cela compte, car construire à partir de la branche principale d’un dépôt peut être risqué : le code peut encore évoluer, contrairement à une version officielle stable. La prochaine version de MicroPython n’est sortie que le 3 février 2021, avec la version v1.14. Même alors, le changement de logique RNG n’a été mentionné qu’en passant dans l’annonce de publication, indiquant que « the urandom module will randomize its seed on import on stm32, esp8266, esp32 and rp2 ports. »

Dans un entretien avec Bitcoin Magazine, Laurent a conclu sans ambiguïté que « without this modification the bug in Coldcard code would have been immediately detected. » En commentant la série d’événements ayant mené au bug, il a aussi déclaré qu’« there are a lot of ‘coincidences’ in this timeline », ajoutant que « while they don’t prove anything, I don’t see how an official investigation may completely ignore them. »

Il est important de noter qu’il n’existe aucune preuve que l’un des développeurs mentionnés ci-dessus ait intentionnellement cherché à introduire le bug RNG de Coldcard par ces modifications, et qu’en fin de compte, c’est Coinkite, la société de portefeuilles matériels, qui est responsable de l’implémentation de ce code critique. MicroPython est un projet open source vaste et largement utilisé. Néanmoins, il y a probablement de nombreuses leçons à tirer de ce que l’on peut bien appeler — pour l’instant du moins — une tragique comédie d’erreurs.

Pourquoi une opération interne semble improbable

Plusieurs éléments vont à l’encontre d’un « retirement attack » interne, délibéré et longuement préparé. L’identité « switck » était mal compartimentée ; la clé GPG partagée et d’autres recoupements ont rendu l’attribution à Doc-Hex, alias Peter Gray, relativement simple une fois les chercheurs penchés sur le dossier. Le compte avait aussi été largement abandonné pendant des années. Les contributeurs de MicroPython, eux, travaillaient au grand jour sur un projet très visible.

L’enquête Citadel21 de Hodlonaut et d’autres revues techniques ne trouvent aucune preuve claire que la défaillance d’entropie était intentionnelle. Le rapport technique de l’ingénieur Alekos Filini précise explicitement : « My goal is to purely present facts and NOT make any conclusions. » Le rapport d’autopsie technique de Wizardsardine détaille plusieurs garde-fous défaillants et décrit la faille comme se situant « across a submodule boundary, which is precisely where reviewers stop looking. » L’analyse approfondie de Steven Geller n’a pas non plus pris position de manière tranchée. La reconstruction proof-of-concept de DK27ss décrit le problème comme « a chain of four flaws, each harmless in appearance. »

Si les drains avaient été un classique « insider retirement attack » ou une arnaque de longue haleine, la conversation serait aujourd’hui très différente. Le dernier grand hack de type long con dans l’industrie Bitcoin était probablement QuadrigaCX, la plateforme centralisée canadienne dont le fondateur, Gerald Cotten, a été déclaré « dead in India » en 2018 dans des circonstances mystérieuses, peu après la découverte des fonds manquants. Les fondateurs sont accusés par la Commission des valeurs mobilières de l’Ontario d’avoir détourné, pendant de nombreuses années, des dépôts des utilisateurs totalisant près de 170 million CAD, avant de disparaître.

À l’inverse, la direction de Coinkite reste publiquement active, répond à l’incident, déploie un firmware corrigé, aide les utilisateurs à migrer et échange sur les détails techniques. Les fondateurs et opérateurs de Coinkite dirigent toujours l’entreprise à la date de rédaction ; ils n’ont pas disparu au même moment que les fonds.

Pendant ce temps, les fonds de la vague 1, totalisant plus de 1,000 BTC, sont toujours regroupés dans trois adresses, surveillées par des centaines d’ingénieurs et probablement par les forces de l’ordre, y compris le FBI. Si Coinkite tentait un « retirement attack » à la manière d’un « 5D chess », elle aurait été bien plus prudente dans le vol des coins. Elle ne les aurait pas regroupés dans un petit nombre d’adresses faciles à suivre, et ses fondateurs seraient probablement « mysteriously dead in India ».

Bien qu’aucune conclusion définitive ne puisse encore être tirée et que les enquêtes se poursuivront probablement pendant des années, les éléments disponibles pointent pour l’instant vers un échec culturel dans la communauté Bitcoin maximaliste et de self-custody, vers un manque de pédagogie généralisée sur les bonnes pratiques de la culture open source, et, franchement, vers une forme d’arrogance de la part des anciens dirigeants de Coinkite qui, avec le recul, se sont montrés trop confiants dans leurs capacités.

Cet article est apparu pour la première fois sur Bitcoin Magazine et est écrit par Juan Galt.