Ghost : une vulnérabilité Linux répandue, mais pas si menaçante ?
Les applications PHP, dont le célèbre WordPress, sont vulnérables à l’exploit Ghost affectant Linux. Mais la faille ne serait pas si menaçante que cela.
C’est fin janvier que Qualys a publié une information sur Ghost, une vulnérabilité affectant Linux référencée CVE-2015-0235 : « durant un audit de code interne, nous avons découvert un dépassement de mémoire tampon dans la fonction __nss_hostname_digits_dots() dans la librairie glibc. Ce bogue peut être atteint en local et à distance, via les fonctions gethostbyname() ». Et le Français de relever que Ghost a été corrigée en 2013. « Mais il n’était pas considéré comme une menace de sécurité ; en conséquence, les distributions les plus stables et à support de long terme sont restées exposées ».
Très vite, Cisco a réagi, minimisant la menace concrète : « bien qu’il s’agit d’une vulnérabilité sévère qui permet l’exécution de code à distance, la menace d’exploitation est relativement basse, en raison des contraintes requises pour atteindre la commande vulnérable ».
Même son de cloche du côté de Trend Micro, pour qui Ghost « n’est pas facile à exploiter et n’a qu’une surface d’attaque très limitée ».
Pour l’éditeur, « le risque d’exploits réels profitant de Ghost est relativement restreint comparé à d’autres vulnérabilités telles que Shellshock ou Heartbleed ».
Mais voilà, pour Marc-Alexandre Montpas, chercheur chez Securi, les applications PHP utilisent fréquemment la fonction _gethostbyname(). La plus populaire d’entre elles n’étant autre que WordPress.
Ghost soulève le problème de l’utilisation d’une fonction obsolète depuis une décennie
Le chercheur a ainsi détaillé un exploit de démonstration visant WordPress et s’appuyant sur la vulnérabilité Ghost. Selon lui, un attaquant pourrait utiliser la fonction wp_http_validaturl(), qui utilise gethostbyname pour valider les URL des pingback de billets – à savoir, les URL de pages Web auxquelles il est fait référence dans un billet de blog. L’attaquant pourrait alors envoyer une URL malicieuse pour déclencher un dépassement de mémoire tampon et compromettre le serveur concerné.
On apprend encore à utiliser gethostbyname() [...] le monde académique est ici en retard de plusieurs décenniesRobert Graham
Outre les correctifs disponibles depuis bientôt deux ans, Montpas suggère un remède pour WordPress, en empêchant les pingbacks vers des domaines de plus de 255 octets. Le chercheur propose également du code de test que les administrateurs PHP peuvent exécuter sur leurs serveurs pour vérifier s’ils sont vulnérables ou non.
Reste que Ghost soulève un autre problème : l’utilisation, encore, d’une fonction obsolète.
Comme le souligne Robert Graham dans son blog, la fonction gethostbyname() « est considérée comme obsolète depuis une décennie. Ce qu’il convient d’utiliser, c’est getaddrinfo() ». Las, la première apparaît donc encore utilisée dans du code en production.
Et là, pour Graham, la pierre est à jeter au monde de l’enseignement : « à l’université, on vous apprend encore à utiliser gethostbyname(). C’est parce qu’en matière de programmation pour Internet, le monde académique est en retard de plusieurs décennies ».