Réponse à ma question, de Qualys :
Au cours de nos tests, nous avons développé une preuve de concept dans laquelle nous envoyons un e-mail spécialement créé à un serveur de messagerie et pouvons obtenir un shell distant sur la machine Linux. Cela contourne toutes les protections existantes (comme ASLR, PIE et NX) sur les systèmes 32 bits et 64 bits.
Mes recherches compilées ci-dessous pour quiconque cherche:
Avertissement
Malgré ce que beaucoup d'autres discussions / blogs pourraient vous dire, je vous suggère de ne pas mettre à jour immédiatement chaque système d'exploitation que vous avez à l'aveugle sans tester soigneusement ces glibc
mises à jour. Il a été signalé que les mises à jour de la glibc ont provoqué des erreurs de segmentation massives des applications obligeant les utilisateurs à restaurer leurs mises à jour de la glibc vers leur version précédente.
On ne se contente pas de mettre à jour en masse un environnement de production sans tester.
Informations d'arrière-plan
GHOST est un bogue de «débordement de tampon» affectant les appels de fonction gethostbyname () et gethostbyname2 () dans la bibliothèque glibc. Cette vulnérabilité permet à un attaquant distant qui est capable d'appeler une application de l'une de ces fonctions d'exécuter du code arbitraire avec les autorisations de l'utilisateur exécutant l'application.
Impact
Les appels de la fonction gethostbyname () sont utilisés pour la résolution DNS, qui est un événement très courant. Pour exploiter cette vulnérabilité, un attaquant doit provoquer un débordement de tampon en fournissant un argument de nom d'hôte non valide à une application qui effectue une résolution DNS.
Liste actuelle des distributions Linux affectées
RHEL (Red Hat Enterprise Linux) versions 5.x, 6.x et 7.x
RHEL 4 ELS fix available ---> glibc-2.3.4-2.57.el4.2
Desktop (v. 5) fix available ---> glibc-2.5-123.el5_11.1
Desktop (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
Desktop (v. 7) fix available ---> glibc-2.17-55.el7_0.5
HPC Node (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
HPC Node (v. 7) fix available ---> glibc-2.17-55.el7_0.5
Server (v. 5) fix available ---> glibc-2.5-123.el5_11.1
Server (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
Server (v. 7) fix available ---> glibc-2.17-55.el7_0.5
Server EUS (v. 6.6.z) fix available ---> glibc-2.12-1.149.el6_6.5
Workstation (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
Workstation (v. 7) fix available ---> glibc-2.17-55.el7_0.5
CentOS Linux version 5.x, 6.x et 7.x
CentOS-5 fix available ---> glibc-2.5-123.el5_11
CentOS-6 fix available ---> glibc-2.12-1.149.el6_6.5
CentOS-7 fix available ---> glibc-2.17-55.el7_0.5
Ubuntu Linux version 10.04, 12.04 LTS
10.04 LTS fix available ---> libc6-2.11.1-0ubuntu7.20
12.04 LTS fix available ---> libc6-2.15-0ubuntu10.10
Debian Linux version 6.x, 7.x
6.x squeeze vulnerable
6.x squeeze (LTS) fix available ---> eglibc-2.11.3-4+deb6u4
7.x wheezy vulnerable
7.x wheezy (security) fix available ---> glib-2.13-38+deb7u7
Linux Mint version 13.0
Mint 13 fix available ---> libc6-2.15-0ubuntu10.10
Fedora Linux version 19 (ou antérieure devrait être mise à niveau)
Fedora 19 - vulnerable - EOL on Jan 6, 2014 (upgrade to Fedora 20/21 for patch)
SUSE Linux Enterprise
Server 10 SP4 LTSS for x86 fix available ---> glibc-2.4-31.113.3
Server 10 SP4 LTSS for AMD64 and Intel EM64T fix available ---> glibc-2.4-31.113.3
Server 10 SP4 LTSS for IBM zSeries 64bit fix available ---> glibc-2.4-31.113.3
Software Development Kit 11 SP3 fix available ---> glibc-2.11.3-17.74.13
Server 11 SP1 LTSS fix available ---> glibc-2.11.1-0.60.1
Server 11 SP2 LTSS fix available ---> glibc-2.11.3-17.45.55.5
Server 11 SP3 (VMware) fix available ---> glibc-2.11.3-17.74.13
Server 11 SP3 fix available ---> glibc-2.11.3-17.74.13
Desktop 11 SP3 fix available ---> glibc-2.11.3-17.74.13
openSUSE (les versions antérieures à 11 devraient être mises à niveau)
11.4 Evergreen fix available ---> glibc-2.11.3-12.66.1
12.3 fix available ---> glibc-2.17-4.17.1
Quels packages / applications utilisent encore la glibc supprimée?
( crédits à Gilles )
Pour CentOS / RHEL / Fedora / Scientific Linux:
lsof -o / | awk '
BEGIN {
while (("rpm -ql glibc | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
Pour Ubuntu / Debian Linux:
lsof -o / | awk '
BEGIN {
while (("dpkg -L libc6:amd64 | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
Quelle version de la bibliothèque C (glibc) mon système Linux utilise-t-il?
Le moyen le plus simple de vérifier le numéro de version consiste à exécuter la commande suivante:
ldd --version
Exemples de sorties de RHEL / CentOS Linux v6.6:
ldd (GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Exemples de sorties d'Ubuntu Linux 12.04.5 LTS:
ldd (Ubuntu EGLIBC 2.15-0ubuntu10.9) 2.15
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Exemples de sorties de Debian Linux v7.8:
ldd (Debian EGLIBC 2.13-38+deb7u6) 2.13
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Vérification de la vulnérabilité GHOST
L'Université de Chicago héberge le script ci-dessous pour un téléchargement facile:
$ wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
[OR]
$ curl -O https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
$ gcc GHOST.c -o GHOST
$ ./GHOST
[responds vulnerable OR not vulnerable ]
/* ghosttest.c: GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define CANARY "in_the_coal_mine"
struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;
/*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}
Compilez-le et exécutez-le comme suit:
$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]
Red Hat Access Lab: outil GHOST N'utilisez pas cet outil, ses rapports sont erronés, le vérificateur de vulnérabilité de Qualys est précis.
Patcher
CentOS / RHEL / Fedora / Scientific Linux
sudo yum clean all
sudo yum update
Redémarrez maintenant pour prendre effet:
sudo reboot
Alternativement, si votre miroir ne contient pas les packages les plus récents, téléchargez-les simplement manuellement. * remarque: pour les utilisateurs plus avancés
CentOS 5
http://mirror.centos.org/centos/5.11/updates/x86_64/RPMS/
CentOS 6
mkdir ~/ghostupdate
cd ~/ghostupdate
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-devel-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-common-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/nscd-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-static-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-headers-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-utils-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-static-2.12-1.149.el6_6.5.i686.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-devel-2.12-1.149.el6_6.5.i686.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-2.12-1.149.el6_6.5.i686.rpm
yum localupdate *.rpm [OR] rpm -Uvh *.rpm
Ubuntu / Debian Linux
sudo apt-get clean
sudo apt-get update
sudo apt-get dist-upgrade
Redémarrer:
sudo reboot
SUSE Linux Enterprise
Pour installer cette mise à jour de sécurité SUSE, utilisez YaST online_update. Ou utilisez les commandes suivantes selon votre version:
Kit de développement logiciel SUSE Linux Enterprise 11 SP3
zypper in -t patch sdksp3-glibc-10206
SUSE Linux Enterprise Server 11 SP3 pour VMware
zypper in -t patch slessp3-glibc-10206
SUSE Linux Enterprise Server 11 SP3
zypper in -t patch slessp3-glibc-10206
SUSE Linux Enterprise Server 11 SP2 LTSS
zypper in -t patch slessp2-glibc-10204
SUSE Linux Enterprise Server 11 SP1 LTSS
zypper in -t patch slessp1-glibc-10202
SUSE Linux Enterprise Desktop 11 SP3
zypper in -t patch sledsp3-glibc-10206
Enfin, exécutez pour toutes les versions de SUSE linux pour mettre votre système à jour:
zypper patch
OpenSUSE Linux
Pour voir une liste des mises à jour disponibles, y compris la glibc sur un OpenSUSE Linux, entrez:
zypper lu
Pour simplement mettre à jour les packages glibc installés avec leurs nouvelles versions disponibles, exécutez:
zypper up
Presque tous les programmes exécutés sur votre machine utilisent la glibc. Vous devez redémarrer chaque service ou application qui utilise la glibc pour garantir que le correctif prend effet. Par conséquent, un redémarrage est recommandé.
Comment redémarrer init sans redémarrer ni affecter le système?
telinit u
'man telinit' - U ou u pour demander que le démon init (8) se réexécute. Ceci n'est pas recommandé car Upstart n'est actuellement pas en mesure de conserver son état, mais est nécessaire lors de la mise à niveau des bibliothèques système.
Pour atténuer immédiatement la menace de manière limitée , vous devez désactiver les vérifications DNS inversées dans tous vos services publics. Par exemple, vous pouvez désactiver les vérifications DNS inversées dans SSH en définissant UseDNS
sur no
dans votre /etc/ssh/sshd_config
.
Sources (et plus d'informations):
- https://access.redhat.com/articles/1332213
- http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux/
- http://www.openwall.com/lists/oss-security/2015/01/27/9
- /security/80210/ghost-bug-is-there-a-simple-way-to-test-if-my-system-is-secure
- http://bobcares.com/blog/ghost-hunting-resolving-glibc-remote-code-execution-vulnerability-cve-2015-0235-in-centos-red-hat-ubuntu-debian-and-suse-linux- les serveurs
- https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://security-tracker.debian.org/tracker/CVE-2015-0235