Tout récemment, c’est le système d’exploitation Linux qui a laissé entrevoir une faille au niveau de son programme de démarrage. En effet, après avoir mené des analyses approfondies sur ce système, deux chercheurs du nom de Hector Marco et Ismael Ripoll travaillant pour Cybersecurity Group ont découvert un bogue dans le programme GRUB2 qui permet de gérer toutes les étapes de démarrage de Linux jusqu’à ce que l’interface utilisateur soit opérationnelle.
Il faut souligner que Grub2 est une réécriture de Grub qui permet de charger les partitions amorçables afin de permettre aux utilisateurs de choisir au démarrage le système d’exploitation qu’ils désirent utiliser lorsqu'il y a plusieurs systèmes installés sur le matériel. Pour plus de sécurité, il est possible de verrouiller l’accès au Grub afin que ce dernier demande un mot de passe au démarrage du système. Cela permet d'éviter l'édition du Grub pour en prendre le contrôle.
Aussi, lorsque Linux démarre et que Grub demande le nom d’utilisateur et le mot de passe, si vous appuyez sur la touche retour arrière 28 fois, la machine redémarre ou vous donne accès à la console Grab rescue. Cela constitue un bogue que pourraient utiliser des individus mal intentionnés pour effectuer toutes sortes d’actions malveillantes sur le système poreux. Cela part du contrôle du GRUB en lui-même au déni de service en passant par la copie des informations disponibles sur le système une fois le système d’authentification contourné.
Selon les chercheurs, cette faille est générée par un problème détecté sur une variable qui occasionne un débordement de mémoire. En principe lorsque les utilisateurs tentent de s’authentifier au démarrage, la mémoire non utilisée par l'entrée est mise à zéro. Cela permet d'éviter l'injection de données. Toutefois, la fonction calculant la taille du tampon entré par l'utilisateur n'est pas sans faille :
Code c : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | static int grub_username_get (char buf[], unsigned buf_size) { unsigned cur_len = 0; int key; while (1) { key = grub_getkey (); if (key == '\n' || key == '\r') break; if (key == '\e') { cur_len = 0; break; } if (key == '\b') // Does not checks underflows !! { cur_len--; // Integer underflow !! grub_printf ("\b"); continue; } if (!grub_isprint (key)) continue; if (cur_len + 2 < buf_size) { buf[cur_len++] = key; // Off-by-two !! grub_printf ("%c", key); } } grub_memset( buf + cur_len, 0, buf_size - cur_len); // Out of bounds overwrite grub_xputs ("\n"); grub_refresh (); return (key != '\e'); } |
En écrivant des zéro dans la mémoire de Grub2, il sera possible soit redémarrer le système ou encore, d'écraser les tampons contenant le nom de l'utilisateur et son mot de passe en mémoire. Ainsi, vous pouvez accéder à la console et configurer Grub2 pour démarrer comme bon vous semble.
Cette vulnérabilité a été référencée sous le code CVE-2015-8370 et a été catégorisée comme une faille de sévérité moyenne. Elle est présente dans le programme Grub à partir de la version 1.98 jusqu’à la version 2.02 dont la dernière mise à jour est disponible depuis le début de ce mois de décembre. Nous rappelons, en outre, que GRUB2 est utilisé sur la plupart des systèmes Linux et certains systèmes embarqués. Il est donc probable que bon nombre de systèmes en soient affectés.
Mais une condition qui limite les dégâts est que cette faille n’est exploitable que localement. Par ailleurs, les chercheurs ont sorti un correctif d'urgence pour corriger les failles découvertes sur les différentes distributions.
Source : Page de présentation de faille découverte
Et vous ?
Que vous inspire la découverte de faille ? Êtes-vous inquiets pour la sécurité sur Linux ?
Voir aussi
Forum Sécurité