La fin de l’ère du code fermé approche : l’opacité n’a jamais été une sécurité
Points clés
- •Un bug de préprocesseur dans les portefeuilles matériels Coldcard a réduit l’entropie des seeds à environ 40 bits, permettant aux attaquants d’énumérer les graines possibles avec du matériel grand public et de voler près de 90 millions de dollars sur environ 4 585 adresses.
- •La vulnérabilité a été introduite en mars 2021 et est restée présente dans un firmware publiquement lisible pendant plus de cinq ans sans être détectée par la revue humaine.
- •Des chercheurs ont montré que plusieurs modèles d’IA de pointe peuvent identifier la même faille d’entropie en quelques minutes à partir d’un seul prompt, ce qui souligne la capacité croissante de l’IA dans l’analyse de vulnérabilités de code.
- •L’auteur soutient que le code source fermé et les secrets industriels dans les produits distribués offrent une protection de moins en moins efficace à mesure que la rétro-ingénierie assistée par IA devient plus rapide et plus accessible.
- •Les défenseurs conservent un avantage structurel de temps sur les attaquants et devraient appliquer des modèles d’IA de pointe à leur propre code avant publication, mettre en place des builds reproductibles et répartir les clés entre des implémentations indépendantes.

Bitcoin Magazine La fin de l’ère du code fermé approche : l’opacité n’a jamais été une sécurité
Au cours des derniers jours, des personnes qui avaient tenté de tout faire correctement ont perdu leurs Bitcoin. Elles ont acheté un signer matériel réputé, ont généré une seed hors ligne à l’aide de cet appareil et lui ont fait confiance pour accomplir l’unique fonction essentielle d’un signer : produire un nombre que personne d’autre ne peut deviner. Le Coldcard ne l’a pas fait. Un garde de préprocesseur qui vérifiait la mauvaise chose a discrètement détourné la génération de seed vers un faible PRNG logiciel (générateur de nombres pseudo-aléatoires), Yasmarang de MicroPython, au lieu de la source d’entropie matérielle. Sur certains modèles, l’entropie effective est tombée à environ 40 bits . La faille a été introduite en mars 2021 et est restée dans un firmware publiquement lisible pendant plus de cinq ans. Des attaquants ont balayé 500 adresses avant que quiconque comprenne pourquoi ; en quelques jours, le total de Galaxy Research a atteint 4 585 adresses et près de 90 millions de dollars ; l’attaque est toujours en cours à la date de cet article.
L’hypothèse de travail de Coinkite, largement partagée sur X, est que quelqu’un a utilisé l’IA pour passer au crible le firmware सार्वजनिक disponible et trouver le bug. Que cet attaquant l’ait trouvé ainsi ou non, le prochain le fera. Alors qu’un audit assisté par IA a été mené quelques semaines avant le vol, il n’a rien trouvé (peut-être en raison des capacités du modèle, peut-être en raison de la construction spécifique de la recherche ). Depuis le début de l’attaque, des chercheurs ont montré que plusieurs modèles de pointe localisent la même faille en quelques minutes à partir d’un seul prompt . Le code est resté ouvert à la revue humaine pendant cinq ans et aucun humain ne l’a détecté.
Coinkite avait fait passer son firmware d’une licence de logiciel libre à des conditions de source disponible, MIT avec une Commons Clause , après que Foundation Devices a utilisé le code dans un produit concurrent . On pouvait lire le code source, mais pas bâtir une activité commerciale dessus. Cela n’a rien changé. Le bug vivait dans un code qu’une machine pouvait lire, indépendamment de ce qu’autorisait la licence ; il est même entré dans l’arbre lors de la réécriture qui a supprimé les derniers morceaux de code GPL . Le changement de licence n’a pas renforcé la protection ; il a seulement modifié l’économie de la découverte du bug.
À l’ère de l’IA hautement compétente, tout ce qui est distribué est lisible, ou le sera bientôt. Débarrassez un binaire de ses symboles, passez-le dans un décompilateur, et vous obtenez le pseudo-C familier à quiconque a ouvert Ghidra : variables sans nom, flux de contrôle aplati, fonctions nommées FUN_00401a20. Illisible pour la plupart des gens. Cette barrière élevée à la compréhension humaine constituait l’intégralité de la prime de sécurité du « code fermé ».
Un programme compilé n’a toutefois pas le choix : il doit dire la vérité. Un code qui reste chiffré ne peut pas s’exécuter. Au moment de l’exécution, le processeur doit recevoir les instructions réelles, de sorte que, quoi qu’un programme fasse, il fournit à la machine un compte rendu complet et exact de la manière de le faire. Toute l’information se trouve dans le code machine. L’obfuscation ne supprime pas cela, et ne peut pas le faire.
Si lire un binaire semble trop difficile pour qu’une machine le maîtrise bientôt, comparez cela à ce que les machines accomplissent déjà sur des problèmes bien plus difficiles. Lire un binaire relève de l’analyse : tous les faits nécessaires sont devant vous, et le travail consiste à les extraire. L’invention mathématique est d’un ordre de difficulté différent, car elle exige un objet que personne n’a jamais vu. À 02:19 UTC le 20 juillet, Levent Alpöge, un mathématicien travaillant avec Claude Fable 5 d’Anthropic, a publié un contre-exemple à la conjecture jacobienne de Keller , un problème ouvert depuis 1939 et suffisamment difficile pour figurer sur la liste des défis de Stephen Smale pour le XXIe siècle. Des générations l’avaient essayé. La réfutation tient en trois polynômes à trois variables. Lean l’a vérifiée en quelques heures , et elle est assez courte pour que n’importe qui puisse la confirmer dans un système de calcul formel en environ une minute . La conjecture jacobienne est tombée en une après-midi, tandis que la personne qui posait la question regardait apparemment la finale de la Coupe du monde de la FIFA. En mai, un modèle d’OpenAI a renversé la conjecture de distance unité d’Erdős , une question ouverte depuis 1946 ; fin juillet, une conjecture de théorie des graphes vieille de 30 ans est tombée en quatre prompts ; entre les deux sont venus la réfutation de la conjecture jacobienne et une série d’autres résultats restés intacts pendant des décennies . Comparez ce rythme à la tâche modeste de lire du code machine déjà publié sur Internet. Les modèles actuels gèrent mieux le code source et la sortie de décompilateur que les octets bruts, de sorte qu’un binaire totalement fermé ne conserve qu’une mince marge. Cette marge est une bosse de coût, et elle s’érode au même rythme que tout le reste. Miser la sécurité sur sa durée revient à parier contre une horloge qui accélère sans cesse.
La même capacité qui trouve votre bug d’entropie lit votre méthode propriétaire. C’est la victime plus silencieuse, et elle touche des entreprises qui ne s’estimaient pas exposées au logiciel libre. Le secret industriel dans les logiciels distribués n’était toujours que de l’opacité en costume-cravate. Le droit le dit depuis toujours : la rétro-ingénierie d’un produit que vous possédez légalement est permise , et donc un secret ne survit que tant que cette rétro-ingénierie reste coûteuse. Quand le coût d’extraction tombe à celui d’un abonnement et d’un prompt, le secret incarné dans le code que vous remettez à vos clients cesse d’en être un. Votre algorithme malin, votre format non documenté, votre avantage dans le binaire : lisibles par quiconque prend la peine de regarder, sur un délai de plus en plus mesuré en minutes.
Rien de tout cela ne rend nécessairement le logiciel libre sûr. Heartbleed est resté caché dans la bibliothèque TLS la plus déployée au monde pendant deux ans, parce que la visibilité sans attention financée ne trouve rien. La porte dérobée d’xz a montré que le modèle de contribution ouverte constitue lui aussi une surface d’attaque, qu’un adversaire patient peut traverser avec un visage amical et deux ans de bons commits. Si l’ouverture a un jour servi de bouclier, ce n’est plus le cas. Ce qu’elle apporte, en revanche, ce sont des relecteurs autorisés à examiner le code, des builds pouvant être reproduits et vérifiés indépendamment, une sortie lorsqu’un fournisseur disparaît ou change de cap, et la reconnaissance que tout cela arrivera que cela vous plaise ou non.
Nous devons désormais supposer que chaque ligne livrée sera lue par quelqu’un qui souhaite nuire, parce que ce sera le cas. Le défenseur dispose d’un avantage structurel que l’attaquant n’aura jamais : le temps. Vous pouvez appliquer les mêmes modèles de pointe à votre propre code avant la mise en production, dans l’intervalle entre le commit et la livraison, tandis que l’attaquant attend un binaire qui n’existe pas encore. Rendez vos builds reproductibles , afin qu’ils puissent être reliés au source et que le source puisse être vérifié. Concevez pour échouer en mode fermé, et gardez le cœur de confiance suffisamment petit pour qu’un seul bug ne puisse pas tout compromettre. Pour l’activité précise qui consiste à détenir du Bitcoin, retenez la leçon que Coldcard enseigne en temps réel : maîtrisez l’entropie que vous ne pouvez pas vous permettre de laisser deviner, gardez l’élément sécurisé minimal et derrière une interface publiée, et répartissez vos clés entre des implémentations indépendantes, de sorte qu’aucun appareil unique, et aucune erreur d’un seul fournisseur, ne constitue l’intégralité de votre exposition.
Pour Bitcoin, les enjeux sont impitoyables d’une manière qu’ils ne le sont pas ailleurs, puisque la simple connaissance des clés privées confère la possession. Le bug d’entropie a laissé des cicatrices permanentes. Corriger le générateur ne change rien aux graines qu’il a déjà produites ; un espace de clés faible reste balayable pour toujours, et la divulgation remet la recette à l’attaquant. Nous avons déjà vu cela. La vulnérabilité Milk Sad dans l’outil libbitcoin explorer, bx, a généré des clés privées à partir d’une valeur de 32 bits , et des attaquants vidaient déjà les portefeuilles produits avant même que la faille ne soit rendue publique. Les attaquants suivent leur propre calendrier, invités ou non. Pour de l’argent qui ne peut pas être récupéré une fois dépensé, « trouvable un jour » est synonyme de « perdu un jour ».
Bitcoin n’a jamais fait confiance à l’opacité. Le protocole est ouvert, ses règles sont vérifiables par n’importe qui, et sa sécurité repose non pas sur des secrets, mais sur les mathématiques et des incitations qui tiennent sous le regard de tous. Le matériel et les logiciels que nous construisons autour méritent la même exigence, car l’alternative n’est plus sur la table. Le choix n’a jamais été entre ouvert et fermé. Il était entre discipliné et exposé.
La leçon plus large de cette affaire Coldcard est qu’un logiciel fermé ressemble à une seed générée par un Coldcard défectueux ; il paraît correct, mais il repose fondamentalement sur du sable. Tout le monde peut lire le code — la seule question restante est de savoir si vous reconnaissez ce fait, ou si vous et vos utilisateurs l’apprenez comme les utilisateurs de Coldcard l’ont appris, adresse vidée après adresse vidée.
Il s’agit d’un article invité de Colin Crossman, producteur de contenu chez Fedi. Les opinions exprimées sont entièrement les siennes et ne reflètent pas nécessairement celles de BTC Inc ou de Bitcoin Magazine. Cet article The End of the Closed-Source Era Is at Hand: Obscurity Was Never Security est apparu pour la première fois sur Bitcoin Magazine et est écrit par Colin Crossman .