
Bitcoin Magazine
La fin de l'ère du code source fermé est proche : l'obscurité n'a jamais été une sécurité
Au cours des derniers jours, des personnes qui essayaient de bien faire ont perdu leur Bitcoin. Ils ont acheté un signataire matériel respecté, généré une graine hors ligne en utilisant cet appareil, et ont fait confiance à l'appareil pour faire la seule chose qu'un signataire est censé faire : produire un nombre que personne d'autre ne peut deviner. Le Coldcard ne l'a pas fait. Un garde préprocesseur qui vérifiait la mauvaise chose avait discrètement redirigé la génération de graine vers un PRNG logiciel faible (générateur de nombres pseudorandom), le 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. Le défaut a été expédié en mars 2021 et est resté dans un firmware lisible publiquement pendant plus de cinq ans. Les attaquants ont balayé 500 adresses avant que quiconque ne comprenne pourquoi ; en quelques jours, le décompte de Galaxy Research a atteint 4 585 adresses et près de 90 millions de dollars ; l'attaque est en cours à la date de cet article.
L'hypothèse de travail de Coinkite, avec un large consensus sur X, est que quelqu'un a utilisé l'IA pour parcourir le firmware disponible publiquement afin de trouver le bug. Que ce soit ainsi que cet attaquant l'ait trouvé ou non, le prochain le fera. Bien qu'un audit assisté par IA ait été réalisé quelques semaines avant le vol, il n'a rien trouvé (potentiellement en raison des capacités du modèle, potentiellement en raison de la construction spécifique de la recherche). Depuis le début de l'attaque, des chercheurs ont montré plusieurs modèles de pointe localisant le même défaut en quelques minutes à partir d'une seule invite. Le code est resté ouvert à l'examen humain pendant cinq ans et aucun humain ne l'a détecté.
Coinkite avait déplacé son firmware d'une licence de logiciel libre à des termes de source disponible, MIT avec une clause Commons, après que Foundation Devices ait utilisé le code dans un produit concurrent. Vous pouviez lire la source mais pas construire une entreprise dessus. Cela n'a rien changé. Le bug vivait dans un code qu'une machine pouvait lire indépendamment de ce que la licence permettait ; il est entré dans l'arbre, en fait, dans la réécriture même qui a supprimé le dernier des codes GPL. Le changement de licence n'a pas augmenté la protection ; il a simplement modifié l'économie de la recherche du bug.
À l'ère de l'IA hautement qualifiée, tout ce qui est distribué est lisible, ou le sera bientôt. Retirez les symboles d'un binaire, passez-le à travers un décompilateur, et sort le pseudo-C qui accueille quiconque a ouvert Ghidra : des variables sans nom, un flux de contrôle aplati, des fonctions étiquetées FUN_00401a20. Illisible pour la plupart des gens. Cette haute barrière à la compréhension humaine était tout le premium de sécurité du « code source fermé ».
Un programme compilé n'a d'autre choix que de dire la vérité. Le code qui reste chiffré ne peut pas s'exécuter. Au moment de l'exécution, le processeur doit recevoir les instructions réelles, donc quoi que fasse le programme, il remet à la machine un compte rendu complet et exact de la façon de le faire. L'information est entièrement présente dans le code machine. L'obfuscation ne peut pas, et ne peut pas, l'enlever.
Si lire un binaire semble trop difficile pour une machine à maîtriser bientôt, pesez-le par rapport à ce que les machines font déjà face à des problèmes bien plus difficiles. Lire un binaire est une analyse : chaque fait dont vous avez besoin est devant vous, et le travail consiste à extraire. L'invention mathématique est d'un autre ordre de difficulté, 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 posté 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 vingt-et-unième siècle. Des générations ont essayé. La réfutation est trois polynômes en trois variables. Lean l'a vérifiée en quelques heures, et elle est suffisamment courte pour que quiconque puisse la confirmer dans un système d'algèbre informatique en environ une minute.
La jacobienne est tombée en un après-midi, tandis que le questionneur regardait apparemment le match final de la Coupe du Monde de la FIFA. En mai, un modèle d'OpenAI a renversé la conjecture de distance unitaire d'Erdős, une question ouverte depuis 1946 ; fin juillet, une conjecture de théorie des graphes vieille de 30 ans est tombée sous quatre invites ; entre les deux, il y a eu la réfutation de la jacobienne et une série d'autres résultats qui avaient tenu pendant des décennies.
Fixez ce rythme à côté de la tâche modeste de lire le code machine déjà disponible sur Internet. Les modèles d'aujourd'hui gèrent mieux la sortie de code source et de décompilateur que les octets bruts, donc un binaire entièrement fermé conserve une marge étroite. Cette marge est un obstacle de coût, et elle s'érode à la vitesse que vous observez partout ailleurs. Parier sur la sécurité de sa durée signifie parier contre une horloge qui ne fait qu'accélérer.
La même capacité qui trouve votre bug d'entropie lit votre méthode propriétaire. C'est la victime silencieuse, et cela impacte des entreprises qui n'ont jamais pensé être exposées à quoi que ce soit en open-source. Le secret commercial dans les logiciels expédiés n'était toujours qu'une obscurité en costume. La loi le dit depuis aussi longtemps que la loi sur les secrets commerciaux existe : l'ingénierie inverse d'un produit que vous possédez légalement est un jeu équitable, et donc un secret ne survit que tant que cette ingénierie inverse reste coûteuse. Lorsque le coût d'extraction tombe à un abonnement et une invite, le secret incarné dans le code que vous remettez à vos clients cesse d'en être un. Votre algorithme astucieux, votre format non documenté, votre avantage dans le binaire : lisible par quiconque se soucie de regarder, sur une chronologie de plus en plus mesurée en minutes.
Rien de tout cela ne rend nécessairement l'open source sûr. Heartbleed s'est caché dans la bibliothèque TLS la plus largement déployée sur terre pendant deux ans, car la visibilité sans attention financée ne trouve rien. La porte dérobée xz a montré que le modèle de contribution ouverte est lui-même une surface d'attaque, que un adversaire patient peut traverser avec un visage amical et deux ans de bons commits. Alors que l'ouverture était autrefois un bouclier, ce n'est plus le cas. Ce quefait c'est d'acheter des examinateurs qui sont autorisés à regarder, des constructions qui peuvent être reproduites et vérifiées de manière indépendante, une sortie lorsque un fournisseur meurt ou se retourne, et la reconnaissance que tout cela se produira que vous le vouliez ou non.
Maintenant, nous devons supposer que chaque ligne expédiée sera lue par quelqu'un qui souhaite du mal, car cela sera le cas.Le défenseur a un avantage structurel que l'attaquant n'aura jamais : le temps. Vous pouvez tester les mêmes modèles de frontière sur votre propre code avant la sortie, dans l'espace entre le commit et le déploiement, tandis que l'attaquant attend un binaire qui n'existe pas encore. Rendez vos builds reproductibles, afin qu'ils soient liés à la source et que la source puisse être vérifiée. Concevez pour échouer de manière fermée, et gardez le noyau de confiance suffisamment petit pour qu'un seul bug ne puisse pas tout compromettre. Pour l'activité spécifique de détention de Bitcoin, apprenez la leçon que Coldcard enseigne en temps réel : possédez l'entropie que vous ne pouvez pas vous permettre de voir deviner, gardez l'élément sécurisé minimal et derrière une interface publiée, et répartissez vos clés sur des implémentations indépendantes, de sorte qu'aucun appareil unique, et aucune erreur d'un fournisseur unique, ne représente l'ensemble de votre exposition.
Pour Bitcoin, les enjeux sont impitoyables d'une manière qu'ils ne le sont pas ailleurs, car 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 fait rien pour les graines qu'il a déjà produites ; un espace de clés faible reste accessible pour toujours, et la divulgation remet à l'attaquant la recette. Nous avons déjà observé cela. La vulnérabilité Milk Sad dans l'outil d'exploration libbitcoin, bx, a généré des clés privées à partir d'une valeur de 32 bits, et les attaquants siphonnaient les portefeuilles qu'il produisait avant que le défaut ne soit jamais rendu public. Les attaquants suivent leur propre emploi du temps, invités ou non. Pour de l'argent qui ne peut pas être récupéré, « trouvable éventuellement » est un synonyme de « disparu éventuellement ».
Bitcoin n'a jamais fait confiance à l'obscurité. Le protocole est ouvert, ses règles vérifiables par quiconque, sa sécurité reposant non sur des secrets mais sur des mathématiques et des incitations qui se tiennent en pleine vue. Le matériel et les logiciels que nous construisons autour méritent le même standard, car l'alternative n'est plus sur la table. Le choix n'a jamais été ouvert ou fermé. Il était discipliné ou exposé.
La leçon plus large de cette situation Coldcard est que disposer d'un logiciel à code source fermé est comme avoir une graine générée par un Coldcard défectueux ; cela a l'air bon mais est fondamentalement construit sur du sable. Tout le monde peut lire le code — la seule question qui reste est de savoir si vous reconnaissez ce fait, ou si vous et vos utilisateurs l'apprenez comme l'ont fait les utilisateurs de Coldcard, une adresse drainée à la fois.
Ceci est un article invité de Colin Crossman, qui est 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 La fin de l'ère du code source fermé est proche : l'obscurité n'a jamais été une sécurité est paru pour la première fois sur Bitcoin Magazine et est écrit par Colin Crossman.
Source : BitcoinMagazine




