Grub2 : la demande de mot de passe peut être court-circuitée par la touche retour arrière
28 frappes plus tard
Le 21 décembre 2015 à 11h26
5 min
Logiciel
Logiciel
Grub2, utilisé par un grand nombre de distributions Linux, est victime d’un bug ouvrant la voie à une importante faille de sécurité : si un utilisateur appuie précisément 28 fois sur la touche retour arrière, il peut passer outre la protection par mot de passe. Le problème a été découvert par deux chercheurs espagnols, qui proposent déjà un patch correctif.
Grub2 est un bootloader, un gestionnaire de démarrage que l’on retrouve dans un grand nombre de distributions Linux. Il sert à initialiser la machine et peut prendre notamment en charge les menus multiboot, permettant de choisir le système d’exploitation que l’on veut lancer. Il est particulièrement connu comme solution autorisant par exemple une machine à pouvoir démarrer sur Windows ou Linux. Il peut par ailleurs ajouter une couche de protection à la machine en réclamant un mot de passe, en plus de celui que l’on attribue d’ordinaire à la session Linux.
Une faille introduite dans le code de Grub2 il y a six ans
Deux chercheurs de l’université de Valence (Espagne) ont cependant trouvé une erreur pour le moins très étrange dans le gestionnaire de boot : il suffit d’appuyer 28 fois sur la touche retour arrière pour passer outre la demande de mot de passe. Le chiffre est précis, et l’utilisateur obtient en fait l’accès à la console « Grub rescue shell ». Une vulnérabilité testée avec succès sur les versions 1.98 à 2.02 de Grub2.
Les deux chercheurs espagnols ont d’ailleurs pu remonter jusqu’à la source du problème : un « commit » (validation de code) qui a eu lieu dans la version 1.98, soit en décembre 2009. Le plus impressionnant finalement dans la découverte de cette vulnérabilité est qu’elle soit restée totalement inconnue pendant presque six ans, malgré la simplicité extrême de sa mise en oeuvre.
Un bug arithmétique
Le souci réside dans la gestion du nombre entier correspondant à une variable dans le code de Grub2 (integer underflow), et qui se retrouve déclenchée à la 28e itération. Tous les détails techniques sont expliqués par les chercheurs sur leur blog.
Une fois la faille exploitée, l’accès à la console de récupération de Grub2 permet d’effectuer un certain nombre d’opérations. Un utilisateur malintentionné pourrait s’en servir pour accéder aux données locales, les copier, voire les supprimer. La console permet également de démarrer sur un autre environnement, et laisse donc de larges possibilités en cas de piratage de la machine, y compris l’installation d’un malware.
Signalons tout de même que la récupération des données se fait de manière brute. Si le possesseur de la machine a décidé de les chiffrer, les fichiers ne pourront évidemment pas être lus. Par ailleurs, court-circuiter Grub2 ne permet pas pour autant de s'authentifier sur le ou les systèmes d'exploitation présents sur la machine.
Les chercheurs ont averti dans la foulée l’ensemble des parties concernées. De nombreuses distributions Linux ont publié des patchs correctifs en fin de semaine dernière, notamment Ubuntu, Red Hat et Debian. Comme toujours dans ce genre de cas, les utilisateurs concernés devront vérifier dans les dépôts de leurs distributions si des mises à jour sont à effectuer.
La sécurité physique est aussi importante que les autres
En tant que telle, la faille est impressionnante par la facilité de sa mise en oeuvre et l’exploitation conséquente qui peut en être faite. Cependant, on soulignera deux points importants qui relativisent sa dangerosité. D’une part, elle ne semble pas avoir été découverte précédemment, bien qu’elle ait pu être trouvée et tenue secrète par un groupe de pirates ou n’importe quelle agence de renseignement, toujours friande de ce type d’informations comme l’ont montré les documents d’Edward Swowden.
D’autre part, cette brèche de sécurité réclame obligatoirement un accès physique à la machine, interdisant de fait son exploitation à distance. Elle ne peut donc pas être considérée comme critique, d’autant que sa mise en oeuvre ne peut pas être automatisée. C'est d'ailleurs également la conclusion du National Institute of Standards and Technology (NIST) qui qualifie la dangerosité de cette brèche de « medium » avec un score de 6,9/10. L'impact sur la machine est de 10/10, mais son exploitation bien plus compliquée ne lui vaut que 3,9/10.
Cela étant, cette vulnérabilité a le mérite de rappeler justement que la sécurité sur le réseau n’est pas la seule à prendre en compte. Une menace réclamant un accès physique n’est pas une menace nulle, comme Stuxnet l’a montré avec les machines déconnectées d’un réseau ou d’Internet. De fait, les possibles interactions de l’utilisateur avec la machine doivent être prises en compte, car ce type de bug peut mener efficacement à une fuite d’informations.
Grub2 : la demande de mot de passe peut être court-circuitée par la touche retour arrière
-
Une faille introduite dans le code de Grub2 il y a six ans
-
Un bug arithmétique
-
La sécurité physique est aussi importante que les autres
Commentaires (78)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 21/12/2015 à 11h49
“sur un autre environnement, et laisse donc de larges possibilités en cas
de piratage de la machine, y compris l’installation d’un malware”
Euh, pourquoi y aurait-il besoin d’un autre environnement pour faire ça ?
Bon sinon, ça montre qu’on sait aussi être ridicules chez linux, c’est pas réservé aux autres (et c’est un fan de OpenSUSE qui le dit).
Le 21/12/2015 à 12h08
C’est pas vraiment clair, est-ce que ça permet juste de contourner le mot de passe de Grub, c’est à dire un truc que personne n’utilise et dont on ignorait l’existence ? Ou est-ce que ça donne un accès root au système ?
EDIT: apparemment c’est le mot de passe Grub. Truc que personne n’utilise, voilà pourquoi il a fallu 6 ans avant de s’en rendre compte. C’est pas vraiment un exploit de fou dans le sens où booter sur un LiveCD ou une clé USB permet aussi de contourner grub.
Le 21/12/2015 à 12h16
Le 21/12/2015 à 12h20
Le plus impressionnant finalement dans la découverte de cette vulnérabilité est qu’elle soit restée totalement inconnue pendant presque six ans, malgré la simplicité extrême de sa mise en oeuvre.
Au contraire, cela n’est pas du tout étonnant.
Ce n’est pas parce que cela parait simple une fois expliqué que pour autant cela saute aux yeux à la lecture du code.
Et un utilisateurs qui appuie 28 fois sur la touche backspace au démarrage de sa machine, cela doit quand même être assez rare (heureusement…).
Pour le reste, je suis très étonné qu’on parle seulement d’une faille aussi insignifiante sur une fonctionnalité aussi peu utilisée : je n’ai encore jamais vu quelqu’un mettre un mot de passe au niveau du grub.
Et de toute façon, quand on à l’accès physique à une machine, il y a bien plus dangereux et plus simple…
Celui qui veut sécuriser ses machines par rapport a l’accès physique, il activera plutôt le chiffrement sur son disque dur.
Le 21/12/2015 à 12h30
Oui je me pose du coup la question. A quoi sert cette fonctionnalité au final ?
Le 21/12/2015 à 12h40
Je pense que l’intérêt d’une telle fonctionnalité serait entre autre bloquer un PC pour démarrer sur une configuration précise pour une borne par exemple.
Sur certaines distributions il était aussi possible de lancer le debug mode qui se lançait avec les droits root. Je ne sais pas si ça existe encore.
Le 21/12/2015 à 12h42
À introduire ce genre de bogue, en vertu d’un corollaire de la loi de Murphy " />
Le 21/12/2015 à 12h44
C’est sûr que vu comme ça.
En tout cas, il y a plus intéressant aujourd’hui : sortie de Wine 1.8.
Le 21/12/2015 à 12h44
Ca permet de pouvoir démarrer un système Linux en mode single-user, donc possiblement se retrouver authentifié en root sans demander de mot de passe si ce mode n’a pas été protégé.
Ca reste donc un peu embêtant même s’il y a plusieurs façons de l’éviter. En même temps le démarrage d’une machine à laquelle on a un accès physique ne peut jamais être vraiment sécurisé, et certainement pas par une seule mesure.
Le 21/12/2015 à 12h49
Sur les vieux systèmes du moins.
Le 21/12/2015 à 12h49
Protéger Grub permet d’éviter cette fonctionnalité de grubhttp://www.symantec.com/connect/forums/recover-root-grub
Grilled
Le 21/12/2015 à 12h54
le boot sur root ?
meme sur un os recent tu peux passer outre le mot de passe root et booter sur une ligne de commande, changer le pwd root et rebooter en normal
Le 21/12/2015 à 12h58
Le 21/12/2015 à 12h59
Le 21/12/2015 à 13h00
Du coup, des solutions comme Sophos SafeGuard sont d’autant plus utiles.
Le 21/12/2015 à 13h00
Depuis que j’ai quitté les études (15 ans), je n’ai pas vu une machine avec mot de passe sur le bootloader (ou le bios).
Le 21/12/2015 à 15h28
Le 21/12/2015 à 15h39
Le 21/12/2015 à 15h44
Je me sers juste pour NotePad++ (parfois j’ai pas mieux) et pour Path of Exile.
Le 21/12/2015 à 15h46
Le 21/12/2015 à 15h49
Le 21/12/2015 à 16h00
Si tu veux bloquer le boot sur une seule configuration tu ne met qu’un choix dans Grub et un timer à 0, ou en UEFI pas de Grub du tout.
Le 21/12/2015 à 16h02
Le 21/12/2015 à 16h15
Le 21/12/2015 à 16h17
Ouais aussi " />
Le 21/12/2015 à 16h24
Le 21/12/2015 à 17h16
même scite ?
Le 21/12/2015 à 17h34
C’était pour un module, en général j’utilise plutôt Kate.
Le 21/12/2015 à 18h12
Le ‘C’ ‘est un assembleur, ou presque. Donc un risque d’erreur à chaque ligne mot.
Sinon, pour ceux qui veulent du code vraiment sûr, il y a la méthode B . Mais c’est pas à la portée de tout le monde.
Le 21/12/2015 à 22h55
Sauf si on voit les pointeurs avant et qu’il faut alors une bonne centaine de séances de TP… " />
Le 21/12/2015 à 23h29
pointeurs ou tableaux c’est un peu kifkif.
Jamais compris pourquoi certains ont si peur des pointeurs c’est quand même pas insurmontable " />
Le 22/12/2015 à 07h20
Le 22/12/2015 à 11h29
Le 22/12/2015 à 11h49
ouais, z’avez trop raison, les jeunes de maintenant, z’ont pas connu les cartes perforées, donc z’y connaissent rien de la vraie vie. Z’apprennent rien à l’école. De not’ temps, c’était quand même autre chose. " /> " />
Le 22/12/2015 à 13h07
Pour information/anecdote, voici les “CVSS v2 Base Score” des dernières grosses failles bien connues (un score plus élevé signifie une gravité plus élevée) :
Shellshock : 10.0 HIGH
Le 22/12/2015 à 13h45
Dans ton cas de borne internet publique tu utilise SU à partir de ton shell utilisateur, c’est fait pour ça et c’est apparemment nettement plus sécure qu’un mot de pesse Grub.
Le 22/12/2015 à 13h53
Le 22/12/2015 à 18h33
Sauf que c’est un score composite calculé automatiquement, et qui ne tient pas compte du fait que cette vulnérabilité ne devrait normalement pas donner accès à des données sensibles.
En entreprise, les données sensibles n’ont rien à faire sur un poste utilisateur, elles sont stockées sur des machines qui sont dans des locaux protégés, et les personnes ayant accès physique à la machine sont les administrateurs.
Le 22/12/2015 à 18h51
Le 22/12/2015 à 20h52
Le 22/12/2015 à 21h23
Le 25/12/2015 à 15h16
Le 21/12/2015 à 14h31
Le 21/12/2015 à 14h41
Le bug est présent dés le premier appui sur backspace. C’est l’exploitation du Bug en faille de sécurité qui nécessite 28 appuis.
" />
Le 21/12/2015 à 14h41
On notera d’ailleurs que GNU GRUB est un projet de la Free Software Foundation, qui n’a qu’un budget ridicule tournant autour du million de dollars, alors qu’ils gèrent pourtant un paquet de projets particulièrement utilisés.
La FSF vient d’ailleurs de lancer une campagne de dons avec un objectif de 450K USD.
L’appel a également été traduit en français.
Le 21/12/2015 à 14h41
Un bug sur une fonctionnalité peu utilisée sur un OS peu utilisé, bref " />
Le 21/12/2015 à 14h44
Le 21/12/2015 à 14h46
Et le deuxième c’est “Hello {name}”… donc scanf() et la structure tableau (char[])
C’est pour ca que j’ai mis au pluriel: “les premiers TP”. " />
Le 21/12/2015 à 14h49
Il faut un chiffrage COMPLET de la machine, sans quoi ce n’est pas suffisant.
LE chiffrage du /home permet de protéger les données, mais toute personne avec un accès physique à la machine peut alors booter en mode console root, et y foutre un keylogger/trojan lancé en root ou what else et donc récupérer tout ce que tu as….
Bref la seule réelle solution c’est chiffrage complet du disque, et encore certains arrivaient bien à installer un trojan dans le firmware du disque dur…
Le 21/12/2015 à 14h50
Et on sait que toute argumentation qui commence par “on sait que” est statistiquement fausse.
Le 21/12/2015 à 14h58
edited
Le 21/12/2015 à 14h59
Le 21/12/2015 à 15h07
Le 21/12/2015 à 15h08
Le 21/12/2015 à 15h08
Marrant les gens qui pensent qu’un bug de grub est un bug de Linux.
Certes on est dans des mondes fortement corrélés, mais au cours de mes divers emplois, j’ai:
Le 21/12/2015 à 15h09
Le 21/12/2015 à 15h15
Le 21/12/2015 à 15h24
Le 21/12/2015 à 11h32
Toujours tout chiffrer, TOUT " />
Le 21/12/2015 à 11h37
Ce genre de faille me fait penser au underhanded C contest. Le but du concours est de faire du code qui semble le plus normal possible, qui peut passer une code review ou un audit sans souci, mais qui en plus de faire ce qu’il est supposé a un comportement secret.
Exemple de 2014 : faire une messagerie façon twitter ou SMS, mais qui fait discrètement fuiter les messages qui correspondent à certains critères ou permet de les modifier.
Le 21/12/2015 à 11h43
Faille introduite il y a 6 ans.
Les barbus c’est plus ce que c’était " />
Le 21/12/2015 à 11h49
J’ai fait un dnf update de ma Fedora, RAS point de vue mise à jour.
Je suis toujours en Grub 2.02…
" />" />" />" />" />
Le 21/12/2015 à 13h01
Le 21/12/2015 à 13h04
Le 21/12/2015 à 13h06
Ptain ils rigolent pas chez toi, moi mon premier TP c’était afficher un titre en html ! " />
Le 21/12/2015 à 13h08
Le 21/12/2015 à 13h13
syslinux FTW. " />
Le 21/12/2015 à 13h15
je serais très étonné que dans les premiers TP de programmation en C on n’apprenne pas a remplir un tableau… et donc qu’on n’évoque pas le problème des limites basse/haute de l’indice.
Le 21/12/2015 à 13h19
Le 21/12/2015 à 13h24
Le 21/12/2015 à 13h49
Étonnant que personne ne soit encore passé ici en mode revanchard: “ahah! Et on vient nous dire que Linux est plus sécurisé parce que le code peut être lu afin de vérifier.”
6 ans la faille, ça fait assez long pour un système qui évolue constamment.
Le 21/12/2015 à 13h52
Le 21/12/2015 à 14h01
Ridicule! La première chose à apprendre aux enfants qui découvrent la programmation, c’est bel et bien le buffer overflow. C’est une question de priorité!
Le 21/12/2015 à 14h02
Le 21/12/2015 à 14h07
Sur Fedora, un boot niveau S passe en mode maintenance et demande le mot de passe root. (systemd)
Le 21/12/2015 à 14h11
Sur un système sécurisé, le bios est verrouillé, pas de possibilité de changer la séquence de démarrage.
Si on craint le démontage, alors il y a le chiffrement.
Le 21/12/2015 à 14h19
Heureusement que le logiciel était Open Source. Comme çà il a été possible au plus grand nombre d’avoir accès au code, de faire des reviews dessus, et ainsi çà garanti qu’il n’y a aucune faille de sécurité ni backdoor… oh wait !
Le 21/12/2015 à 14h29
Au contraire, c’est exactement le cas ici, que le bug soit volontaire ou pas. Le code n’est pas spécialement suspect, a sans aucun doute passé moulte code reviews et en plus, les problèmes d’extrême, ça fait exactement partie d’une des classes de bugs les plus courantes : l’integer overflow. Et le clou du spectacle est que vu qu’il faut presser 28 fois retour arrière, c’est suffisamment obscur pour pas qu’on le déclenche involontairement.