Shift Crypto a divulgué de manière responsable l’exploit à distance à Coinkite (Coldcard) le 4 août 2020, et les deux parties ont convenu d’une période d’embargo de 90 jours avant divulgation. Coinkite a créé un correctif le 30 septembre mais, à ce jour, n’a pas encore publié de mise à jour du firmware pour atténuer les risques d’exploits potentiels dans la nature. Le correctif du 30 septembre décrivait explicitement le problème et les scénarios d’attaque dans le journal des modifications, et la période d’embargo de 90 jours, y compris les prolongations demandées, est arrivée à échéance. Nous divulguons donc maintenant le problème et encourageons les utilisateurs de Coldcard à prendre les précautions appropriées jusqu’à ce qu’une mise à jour soit disponible.

Le problème initial

Le 4 août 2020, @mo_nokh a révélé une vulnérabilité dans les portefeuilles matériels Ledger par laquelle un utilisateur pouvait, sans le savoir, confirmer une transaction Bitcoin se faisant passer pour une transaction d’altcoin ou de testnet :

Un attaquant peut exploiter cette méthode pour transférer du bitcoin alors que l’utilisateur pense exécuter une transaction d’un autre altcoin de moindre valeur (p. ex. Litecoin, Testnet Bitcoins, Bitcoin Cash, etc.)

Voici un bref résumé, à haut niveau, de la façon dont cela est possible :

Lorsque vous créez une proposition de transaction sur votre ordinateur, la transaction est envoyée au portefeuille matériel pour être confirmée par l’utilisateur puis signée formellement. L’ordinateur indique aussi au portefeuille matériel de quel type de monnaie il s’agit, par exemple « il s’agit d’une transaction Litecoin, veuillez afficher les montants en Litecoin et présenter les adresses au format d’adresse de Litecoin ». Le portefeuille matériel se contente de prendre cette information en compte et affiche, par exemple, « Envoi de 1 LTC à ltc1… ».

Litecoin, Bitcoin, leurs testnets et certaines autres cryptomonnaies ont exactement la même représentation de transaction en interne. Par exemple, rien dans une transaction Bitcoin n’indique qu’il s’agit d’une transaction Bitcoin et non d’une transaction Litecoin. Du point de vue d’un portefeuille matériel, une proposition de transaction Litecoin valide est aussi une proposition de transaction Bitcoin valide.

En conséquence, un portefeuille compromis sur l’ordinateur peut simplement créer une transaction qui dépense des bitcoins au profit de l’attaquant, puis l’envoyer au portefeuille matériel comme s’il s’agissait d’une transaction Litecoin. L’utilisateur ne verra sur l’appareil que des informations Litecoin (adresses au format d’adresse de Litecoin, montants libellés en Litecoin, etc.) sans se douter qu’il envoie en réalité des bitcoins.

Le problème est atténué en attribuant des clés privées distinctes à des cryptomonnaies distinctes, comme décrit par BIP44. Si tous vos bitcoins utilisent un ensemble de clés privées et tous vos litecoins un autre ensemble de clés privées, alors signer une transaction Litecoin avec des clés Litecoin ne peut jamais dépenser de vrais bitcoins. Le BitBox02 applique depuis toujours cette séparation des clés de manière stricte.

Coldcard

Lorsque la vulnérabilité de contournement de l’isolation a été divulguée, Coldcard a rapidement répondu ne pas être concerné :

Ce n’était malheureusement pas exact. Si Coldcard ne prend pas en charge les « shitcoins », il prend bien en charge testnet. Un test rapide a confirmé que Coldcard était en réalité vulnérable exactement de la même manière que Ledger. Un utilisateur confirmant une transaction testnet sur l’appareil pouvait dépenser des fonds mainnet (c’est-à-dire les vrais fonds) à son insu.

Par exemple, cette véritable transaction mainnet :

…est confirmée et signée de cette façon lorsque la même véritable transaction mainnet est envoyée au Coldcard alors qu’il est en mode testnet :

Impact et gravité

En tant qu’utilisateur d’un portefeuille matériel, vous devez partir du principe que votre ordinateur est compromis. C’est précisément la raison d’utiliser un portefeuille matériel. À partir de là, l’exploitation de cette attaque n’a rien d’improbable. L’attaquant n’a qu’à convaincre l’utilisateur, par exemple, d’« essayer une transaction testnet », ou d’acheter une ICO avec des coins de testnet (j’ai entendu dire qu’il y a récemment eu une ICO de ce type), ou recourir à n’importe quelle autre attaque d’ingénierie sociale pour amener l’utilisateur à effectuer une transaction testnet. Une fois la transaction testnet confirmée, l’attaquant reçoit des bitcoins mainnet du même montant.

Comme l’attaque peut être réalisée à distance, elle est classée comme critique selon le guide d’évaluation de sécurité de Shift. La sévérité est toutefois revue à la baisse, car l’attaque passe mal à l’échelle :

  • l’appareil doit être déverrouillé et une interaction de l’utilisateur est nécessaire
  • l’attaquant doit convaincre l’utilisateur d’effectuer une transaction testnet vers l’adresse testnet de l’attaquant

Crédits

Je n’ai pas découvert l’attaque de contournement de l’isolation ; tout le mérite revient à @mo_nokh, qui a publié l’attaque originale sur Ledger. Après en avoir pris connaissance, je me suis souvenu que Coldcard prend en charge testnet. J’ai rapidement créé une preuve de concept pour vérifier si cette attaque était réalisable. Après avoir constaté que c’était bien le cas, j’ai immédiatement divulgué le problème de manière responsable à l’équipe Coldcard.

Chronologie de la divulgation :

  • Le problème a été divulgué de manière responsable à Coinkite le 4 août 2020.
  • Coinkite a accusé réception du problème le 5 août et a demandé 90 jours pour le corriger.
  • Coinkite a créé un correctif le 30 sept., divulguant publiquement le problème et le scénario d’attaque dans le journal des modifications : https://github.com/Coldcard/firmware/pull/49/files
  • Après avoir remarqué le correctif, le 14 oct., nous avons demandé quand une publication du firmware était prévue. Coinkite nous a indiqué que des éléments supplémentaires étaient ajoutés avant la prochaine publication du firmware.
  • Le 12 nov., une semaine après la fin de l’embargo, nous avons demandé de nouveau quand une publication du firmware était prévue et indiqué que nous publierions bientôt notre divulgation. Coinkite nous a répondu que la publication serait encore retardée, mais imminente, car des éléments supplémentaires étaient inclus.
  • Le 21 nov., nous avons informé Coinkite que nous publierions notre divulgation le 24 nov.
  • Le 23 nov., Coldcard a publié une version BETA du prochain firmware incluant le correctif : https://github.com/Coldcard/firmware/tree/master/releases

Discuter sur Reddit. Publié à l’origine sur https://benma.github.io.

Sécurité suisse 🇨🇭

Nous sommes les créateurs du portefeuille matériel BitBox02. Son architecture sécurisée à double puce reflète nos valeurs d’entreprise suisse de sécurité open source : elle permet d’utiliser une puce sécurisée pour renforcer physiquement l’appareil, en combinaison avec un firmware entièrement open source. Fabriqué en Suisse, il hérite de notre profond attachement à la qualité et à la vie privée.

Découvrez-en plus sur les menaces potentielles visant les portefeuilles matériels et sur la façon dont nous les prévenons dans notre modèle de menace BitBox02 détaillé.

Le BitBox02 existe en deux éditions : la Multi edition qui prend en charge plusieurs crypto-actifs et peut être utilisée comme authentificateur à second facteur. Et la Bitcoin-only edition, qui repose sur un firmware radicalement ciblé : moins de code signifie moins de surface d’attaque, ce qui améliore encore votre sécurité si vous stockez uniquement du Bitcoin.

Découvrez BitBox02 et procurez-vous-en un dès aujourd’hui, nous livrons dans le monde entier !

Shift Crypto est une société privée basée à Zurich, en Suisse. Notre équipe internationale de spécialistes en ingénierie, en sécurité des cryptomonnaies et en développement du cœur de Bitcoin conçoit les produits BitBox et fournit des services de conseil. Le BitBox02, portefeuille matériel de deuxième génération, permet aux particuliers de stocker, protéger et transférer facilement des cryptomonnaies. Son compagnon, le BitBoxApp, offre une solution tout-en-un pour gérer facilement et en toute sécurité vos actifs numériques.

This post was translated with the help of AI