Une simple répétition de touches, et voilà votre poste de travail Linux hacké ! Bon pour en arriver là, il faut des conditions très particulières. Tout d'abord l'attaquant doit avoir un accès physique à la machine. Ensuite il doit avoir de bonnes connaissances de Linux et de la programmation assembleur. Martyriser le clavier avec frénésie ne suffira pas en soi :-) Enfin il faut que le Linux du poste de travail se lance avec le chargeur de démarrage Grub et que le mode édition de celui-ci soit protégé par un mot de passe.

Protéger le mode d'édition de Grub par un mot de passe est normalement une bonne pratique, car sinon, un attaquant habile (et présent physiquement) peut prendre le contrôle de votre Linux avant même que celui-ci ne démarre :-)

Malheureusement, les Grub de la version 1.98 à la version 2.02 comportent une vulnérabilité qui permet de hacker le système malgré la présence de l'authentification, ou plutôt grâce à cette présence :-) Bref au final l'authentification ne sert à rien :-)

La vulnérabilité a été découverte par deux chercheurs en sécurité, qui l'ont décrite dans un très intéressant, passionnant même, billet de blog technique qui est à la fois un vrai didacticiel de hack et de bidouille et un avertissement - un de plus - sur les dangers qu'il y a à être négligent avec les pointeurs en programmation système.

La vulnérabilité se trouve dans l'extrait de code ci-dessous, lignes rouges.

Ce code est exécuté lors de la saisie du mot de passe. Si l'utilisateur actionne la touche backspace, le pointeur sur le tampon de saisie est décrémenté, sans test de débordement. Le débordement va provoquer une corruption des cadres de pile des fonctions appelantes, comme décrit ici.

Le tout est ici d'actionner la touche backspace le nombre de fois qui va bien, en l'occurrence 28, ni plus ni moins.

Le cadre de pile étant corrompu, le système saute dans la fonction grub_rescue_run, très particulière, car elle initialise un mode rescue qui permet d'écrire des octets en mémoire.

Ce qui permet ensuite de continuer la bidouille du cadre de pile et finalement relancer Grub normalement, mais sans authentification du mode édition

Mais cela ne sert à rien, dites-vous, puisque finalement on va arriver à la demande normale du mot de passe Linux lui-même ?

Et si... votre système est hacké totalement :-) Depuis le mode édition de Grub maintenant accessible, il suffit de redéfinir le processus init comme ceci :

init=/bin/bash

Vieille ruse bien connue des geeks et hackers Linux. Après quoi le système démarre sur un shell avec les droits de root. Il ne reste plus qu'à s'amuser :-)

Les principales distributions Linux (Debian, Ubuntu, Red Hat,...ont déjà publié un patch en urgence, pour combler cette vulnérabilité.