GHOST, la nouvelle vulnérabilité qui hante les systèmes GNU/Linux

ghost-flaw-ghost-vulnerability_mini Une vulnérabilité critique nommée GHOST, référence à la fonction gethostbyname(), a été rendue publique, par Qualys, le 27 janvier 2015. Elle concerne la librairie glibc et permettrait à un attaquant de prendre le contrôle du système ciblé sans disposer de privilège d’accès préalable. Le CERT lui a assigné l’ID CVE-2015-0235.
Historiquement, la vulnérabilité est apparue en 2000 avec la version 2.2 et a commencé à être corrigée en mai 2013 sans que ce soit généralisé à tous les éditeurs malgré l’évolution des versions. Sur les systèmes récents intégrant la librairie non vulnérable, “gethostbyname()” est remplacée par la nouvelle fonction “gettaddrinfo()” mais elle reste encore très largement utilisée. La situation est ainsi assez préoccupante.

 

Techniquement, il a été découvert un contrôle insuffisant lorsque la fonction “gethostbyname()” vérifie si le paramètre qu’elle reçoit est une adresse IP. En effet, la fonction omet de déterminer la taille nécessaire pour stocker en mémoire l’information reçue, débouchant ainsi sur la possibilité d’exploiter une zone mémoire non allouée et réaliser un “buffer overflow”. Cela pourrait avoir pour conséquence de “gagner” un accès total sur le système ciblé. Dans la pratique, l’exploitation de cette vulnérabilité est jugée difficile de par les contraintes de taille disponible (pour exécuter l’exploit, seulement 4 ou 8 octets sont utilisables selon que le système soit en 32-bits ou 64-bits) et de la nature des données (les octets peuvent contenir uniquement des nombres et des points “.”). A ce jour, il n’y pas encore d’exploit public disponible mais cela ne devrait pas tarder.

Les systèmes Linux jugés vulnérables sont les suivants :

  • RHEL (Red Hat Enterprise Linux) version 5.x, 6.x and 7.x
  • CentOS Linux version 5.x, 6.x & 7.x
  • Ubuntu Linux version 10.04, 12.04 LTS
  • Debian Linux version 7.x
  • Linux Mint version 13.0
  • Fedora Linux version 19 or older
  • SUSE Linux Enterprise 11 and older (also OpenSuse Linux 11 or older versions).
  • Arch Linux glibc version <= 2.18-1

Les applications tout comme les éventuels équipements de sécurité initiant des connexions réseaux sont également concernées si elles utilisent la fonction “gethostbyname()”.

Il est important d’identifier la liste de vos systèmes et applications utilisant les librairies glibc concernées et de tester s’ils sont vulnérables. Pour des résultats pertinents, il est recommandé d’utiliser les “Proof-of-concepts” fournis par Qualys ou autres.

Si le système est effectivement vulnérable, il est recommandé d’appliquer le patch fourni par l’éditeur et de redémarrer l’équipement. Dans le cas où le patch ne serai pas encore disponible, il est important de se tenir informer au travers des différents canaux de communications des éditeurs concernés (Flux RSS, réseaux sociaux, etc.).