Assistance Documentation

Vulnérabilité affectant le chemin de dérivation des dérivés de Bitcoin

Le 2 mai 2020, un chercheur en sécurité a signalé une vulnérabilité affectant les applications dérivées de Bitcoin (Litecoin, Dogecoin, etc.). Elle pourrait être utilisée pour inciter les utilisateurs à signer une transaction pour un coin différent de celui pour lequel ils pensent signer. 

Une personne malveillante pourrait, par exemple, se servir de cette vulnérabilité pour prétendre effectuer une transaction Dogecoin alors qu’en réalité, l’utilisateur signe une transaction Bitcoin.

Qu’en est-il de cette vulnérabilité aujourd’hui  ?

La version 1.4.6 de l’application Bitcoin corrige le problème dans les applications dérivées de Bitcoin et a été publiée le 5 août 2020. Avec cette version, un avertissement s’affiche à chaque fois qu’un utilisateur demande une adresse ou essaie de signer une transaction sur un chemin de dérivation qui n’appartient pas à l’application de coins ouverte sur le wallet physique Ledger.

Comment me protéger de cette vulnérabilité ?

Mettez à jour votre application Bitcoin vers la version 1.4.6 à partir du Gestionnaire de Ledger Live. Cela mettra automatiquement à jour toutes les applications dérivées de Bitcoin. Puisque ce problème touche uniquement les applications dérivées de Bitcoin, vous pouvez continuer à utiliser les autres applications sans inquiétude.

Comment fonctionne le Programme Bug Bounty ?

Ledger a créé un Programme Bug Bounty. Son objectif est de permettre à des chercheurs en sécurité tiers de signaler des vulnérabilités identifiées dans les produits Ledger. En quelques mots, lorsqu’un chercheur en sécurité signale une vulnérabilité potentielle par l’intermédiaire de l’adresse email bounty@ledger.fr, une chaîne d’opérations est lancée. Tout d’abord, l’équipe de sécurité de Ledger accuse réception de l’email et un délai de 90 jours démarre. Le problème commence à être analysé. S’il est confirmé :

  • Les équipes impliquées s'attèlent à le résoudre dans le délai de 90 jours. Ce délai de 90 jours, initialement fixé par le Google Project Zero, est devenu la norme dans le monde de la sécurité.
  • Une fois ce délai écoulé, le chercheur est autorisé à publier ses résultats.
  • Si le problème est résolu plus tôt et s’il y a un accord mutuel entre le chercheur et l’équipe de sécurité de Ledger, la divulgation peut avoir lieu avant l’écoulement du délai de 90 jours.

Pendant ces 90 jours, l’équipe de sécurité de Ledger collabore avec les autres équipes de Ledger (ingénierie, tests, etc.) afin de développer et de réviser un correctif pour cette vulnérabilité. Pendant ce temps, un Ledger Security Bulletin est rédigé afin de partager les détails techniques avec les chercheurs en sécurité tiers et d’assurer un suivi public des problèmes de sécurité signalés par le biais du Programme Bug Bounty.

Dès qu’une nouvelle version de l’application ou du micrologiciel est disponible, une récompense est versée au chercheur en sécurité, le Security Bulletin est publié et le chercheur est autorisé à publier ses conclusions.

Pourquoi en a-t-il été autrement avec cette vulnérabilité ?

Dans le cas de cette vulnérabilité, nous regrettons de ne pas avoir respecté le délai de divulgation. C’est pour cette raison que le chercheur en sécurité a publié un article de blog sur son site Web avant qu’un correctif ne soit mis à la disposition des utilisateurs.

Nous avons eu à gérer d’autres problèmes au même moment. De plus, les discussions internes pour trouver une solution appropriée et la coordination avec les autres équipes d’ingénieurs ont pris plus de temps que prévu. Cela a conduit à la publication d’une nouvelle version de l’application Bitcoin après l’écoulement du délai prévu (fixé à 90 jours après la date de signalement de la vulnérabilité). 

Des problèmes de communication ont également contribué à cette situation. Le chercheur ayant signalé la vulnérabilité a envoyé des messages privés sur Twitter qui ont échappé à la plupart des ingénieurs en sécurité. En effet, l’adresse électronique bounty@ledger.fr est le seul moyen de joindre l’ensemble de l’équipe de sécurité de Ledger.

En quoi consiste cette vulnérabilité ?

Les Ledger Nano S et Nano X sont des wallets Hierarchical Deterministic (HD). Cela signifie qu’ils peuvent dériver différents secrets cryptographiques à partir d’une seule seed provenant de la phrase de récupération de 24 mots que les utilisateurs écrivent sur leur feuille de récupération. Certains de ces secrets sont utilisés pour signer des transactions de cryptomonnaies.

En général, chaque application est limitée à ses chemins HD spécifiques. Par exemple, l’application Zcoin est autorisée à utiliser son propre chemin de dérivation (m/44’/136’/) et ne peut pas dériver de clés sur le chemin de dérivation de Dogecoin (m/44’/3’/). Cette restriction des chemins n’a pas été appliquée à l’application Bitcoin et à la plupart de ses dérivés. Cela a permis à un dérivé de Bitcoin (par exemple Litecoin) d’obtenir des clés publiques ou de signer des transactions Bitcoin.

Un pirate qui réussirait à installer des logiciels malveillants sur un ordinateur ou un smartphone pourrait inciter les utilisateurs à accepter de signer une transaction Bitcoin à l’aide d’une application d’altcoin de leur Ledger Nano S/X, au lieu de l’application Bitcoin.

Cette vulnérabilité ne permet pas à un pirate d’extraire des secrets des appareils Ledger, tels que les clés privées utilisées pour signer les transactions. Elle ne permet pas non plus à un pirate de contourner l’authentification par code PIN. La sécurité des appareils physiques n’est donc pas affectée.

Des détails techniques supplémentaires sont disponibles dans le Ledger Security Bulletin 014 : « Path derivation too permissive in Bitcoin derivative apps » (disponible en anglais).

Pourquoi afficher un avertissement au lieu de bloquer ces transactions ?

Si ces transactions étaient bloquées, les fonds de plusieurs de nos utilisateurs seraient verrouillés. Il s’agit d’un problème qui touche le monde des cryptos dans son ensemble. Il relève de la structure des premiers forks de Bitcoin : les transactions sont impossibles à distinguer du point de vue d’un appareil de signature hors ligne.

Pourquoi un avertissement concernant un chemin de dérivation ou de signature inhabituel s’affiche sur mon appareil Ledger ?

Si vous voyez cet avertissement, cela signifie que l’application de votre wallet n’utilise pas le chemin de dérivation correspondant à l’application de coins que vous avez ouverte. Veuillez vérifier que le chemin de dérivation est correct avant de signer cette transaction.

La mise à jour de l’application Bitcoin vers la version 1.4.6 corrige la vulnérabilité pour toutes les applications dérivées de Bitcoin. Cette version ne devrait amener aucun changement visible pour les utilisateurs de Ledger Live. 

Le message "The derivation path is unusual" (Le chemin de dérivation est inhabituel) s’affiche lors de l’exportation de clés publiques si un dérivé de Bitcoin ne correspond pas au coin de l’application. De même, le message "The sign path is unusual. Reject if you’re not sure" (Le chemin de signature est inhabituel, rejetez la transaction en cas de doute) s’affiche lors de la signature d’une transaction. 

Toutefois, les utilisateurs de wallets tiers tels qu’Electrum peuvent également voir ce message d’avertissement, même si la clé publique ou la demande de signature émane d’un wallet légitime. Cela est dû au fait que ces wallets utilisent un chemin de dérivation incorrect, ce qui peut également être valable pour Bitcoin. Malheureusement, il n’existe aucun moyen pour l’application de votre appareil Ledger de savoir si ce chemin est légitime. Nous encourageons les développeurs à dériver et à signer le bon chemin de dérivation.