Saleem Rashid pointe une vulnérabilité due à un choix de design du hardware wallet. En son sein, un processeur cryptographique – ST31H320 – muni d’une interface UART et un microcontrôleur STM32F042K6 chargé de la gestion de l’affichage, du clavier de l’appareil et de la connexion USB avec un PC.
D’après le chercheur en sécurité, le nœud du problème dans cette architecture est le fait qu’un attaquant puisse modifier le firmware du microcontrôleur STM32 pour contourner les vérifications de sécurité gérées par le processeur cryptographique. Et pour cause, le processeur cryptographique ne peut « voir » le firmware du STM32 pour l’authentifier. Pour parvenir à attester de l’authenticité du firmware du STM32, les ingénieurs de Ledger ont mis sur pied un stratagème consistant à charger le contenu entier de la mémoire flash du microcontrôleur au travers de l’interface UART ; un problème quand on sait que cette manière de faire revient à demander à un criminel de produire son extrait de casier judiciaire.
Le hacker s’est appuyé sur cette brèche pour parvenir à poser une backdoor sur la fonction de génération des clés privées de l’appareil. « Si vous êtes calés en langage C, vous noterez que j’ai remplacé un appel système au générateur de nombres aléatoires par un appel à une fonction qui définit toutes les entropies à zéro », explique-t-il.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | diff --git a/src/bolos_ux_onboarding_3_new.c b/src/bolos_ux_onboarding_3_new.c index ce1849c..b950ae7 100644 --- a/src/bolos_ux_onboarding_3_new.c +++ b/src/bolos_ux_onboarding_3_new.c @@ -395,7 +395,7 @@ void screen_onboarding_3_new_init(void) { #else G_bolos_ux_context.onboarding_kind = BOLOS_UX_ONBOARDING_NEW_24; - cx_rng((unsigned char *)G_bolos_ux_context.string_buffer, 32); + os_memset(G_bolos_ux_context.string_buffer, 0, 32); G_bolos_ux_context.words_buffer_length = bolos_ux_mnemonic_from_data( (unsigned char *)G_bolos_ux_context.string_buffer, 32, (unsigned char *)G_bolos_ux_context.words_buffer, |
Saleem Rashid a fait part de ses trouvailles à Ledger France en novembre 2017 et un correctif est disponible pour le Nano S depuis le 6 mars. L’entreprise met un nouveau firmware à la disposition des consommateurs et ce dernier leur sera proposé en téléchargement dès connexion de l’appareil à un ordinateur. Les trouvailles du chercheur en sécurité concernent également le Nano Blue pour lequel un correctif se fait toujours attendre.
Source
Billet Rashid
Votre opinion
Faites-vous usage des portefeuilles matériels proposés par Ledger ? Si oui, pour quelle raison ?