Qualys, une société spécialisée dans la sécurité sur internet, vient de publier un billet dans lequel elle dévoile l'existence d'une importante faille de sécurité dans la bibliothèque glibc de Linux. Corrigée depuis 2013, elle est encore présente dans de nombreux systèmes et pourrait être exploitée à distance, simplement via un email piégé. Explications.
Alors que l'épisode Heartbleed est encore en mémoire, une nouvelle faille sème le trouble dans le petit monde de la sécurité et du libre. Elle a été découverte par la société Qualys qui publie d'ailleurs tous les détails sur son blog. Cette brèche est identifiée sous la référence CVE-2015-0235 et porte un petit nom (puisque le marketing compte aussi désormais dans le monde des failles) : Ghost.
Quand glibc permet d'obtenir, à distance, un accès complet à la machine
Elle se cache dans la bibliothèque glibc, un composant incontournable pour toutes les distributions Linux. La faille se situe plus précisément dans les fonctions gethostbyname (d'où son surnom Ghost) et gethostbyaddress qui permettent de convertir un nom de domaine en adresse IP, généralement en passant par le DNS.
Dans les grandes lignes, le principe de fonctionnement de la faille est le suivant : il est possible de créer un dépassement de tampon (buffer overflow) ce qui a pour conséquence de « permettre à des pirates de prendre à distance le contrôle complet du système, sans avoir la moindre connaissance préalable concernant les références du système ». Tous les détails ne sont pas encore connus et le prototype n'a pas encore été mis en ligne par Qualys. La société explique que cela sera fait ultérieurement, notamment afin de laisser le temps aux services concernés de se mettre à jour. La mise en œuvre ne semble par contre pas spécialement compliquée selon ses équipes : « via un email piégé et envoyé sur un serveur email, nous avons obtenu un accès à distance au Shell de la machine ».
Une faille qui existerait depuis 2000 et qui aurait été corrigée en 2013
Maintenant que le tableau est posé, passons aux détails connus, en commençant par deux points relativement surprenants. Tout d'abord, la faille existerait depuis la version 2.2 de glibc qui date du 10 novembre 2000 selon Qualys, soit il y a plus de 14 ans ! Ensuite, elle aurait déjà été corrigée depuis le 21 mai 2013 au moment du passage entre les moutures 2.17 et 2.18 de glibc. Pour information, la dernière en date est la 2.21.
Mais alors, comment expliquer que la faille inquiète autant ? Qualys a sa propre réponse : « malheureusement, cela n'a pas été reconnu comme une menace à la sécurité [NDLR : les changements de version de glibc] ; en conséquence de quoi, la plupart des distributions stables avec un support long terme ont été laissés exposées, y compris Debian 7 (Wheezy ) , Red Hat Enterprise Linux 6 & 7 , CentOS 6 & 7 , Ubuntu 12.04 , par exemple ».
Bien évidemment, les grands groupes ont été prévenus en amont par Qualys et ont d'ores et déjà mis en ligne des mises à jour. C'est par exemple le cas de Redhat qui a déployé toute une panoplie de correctifs pour ses différents systèmes d'exploitation, d'Ubuntu 10.04 LTS et 12.04 LTS et de Debian Squeeze et Wheezy.
Les NAS et plus largement tous les systèmes Linux sont également concernés
Notez que cela ne concerne pas que les serveurs. Tous les systèmes informatiques exploitant une base Linux et une connexion réseau peuvent potentiellement être touchés par Ghost s'ils n'intègrent pas la bonne version de glibc. C'est donc le cas des NAS par exemple qui, comme pour la faille Heartbleed, ne sont pas spécialement épargnés.
Les fabricants n'ont pas encore communiqué sur la question, à l'exception du français Ve-hotech qui annonçait dès hier soir avoir mis en ligne une mise à jour 5.1.1 de son interface. Si vous avez activé les mises à jour automatiques elle devrait déjà être en place. Si ce n'est pas le cas, il faudra la lancer manuellement. Nous tenterons de revenir sur la réaction de chacun dans les heures et les jours qui viennent.
Des fonctions « dépassées depuis longtemps » et qui « ne devraient plus être utilisées »
Pire encore, comme le précise Stéphane Bortzmeyer son blog, les fonctions dont il est aujourd'hui question (gethostbyname et gethostbyadress) « sont dépassées depuis longtemps et ne devraient plus être utilisées, notamment parce qu'elles ne permettent pas de faire de l'IPv6 ». Il ajoute même que, « depuis plus de quinze ans », il convient d'utiliser getaddrinfo à la place. Il rejoint d'ailleurs l'analyse de Qualys qui évoque des « fonctions obsolètes avec l'avènement de l'IPv6 », mais aussi celle d'Errata Security qui préconise d'utiliser getaddrinfo à la place de gethostbyname.
Quoi qu'il en soit, cela n'est pas sans soulever une série de questions : « les fonctions officiellement remplacées par des meilleures ne sont pas forcément aussi bien maintenues, et on peut penser que les failles n'y sont pas aussi vite repérées et corrigées. Les programmes utilisant les anciennes API ont donc plus de chance d'avoir des failles de sécurité comme Ghost ». En plus de se mettre à jour, il est peut-être donc temps de penser à changer d'API au passage et d'être vigilant dans les semaines qui viennent.
Après le temps des mises à jour viendra sans doute, comme pour OpenSSL dans le cas d'Heartbleed, celui de la remise en question des procédures et de l'attitude de chacun face aux mises à jour et à l'utilisation de vieilles fonctionnalités.