Antwort auf meine Frage von Qualys :
Während unserer Tests haben wir einen Proof-of-Concept entwickelt, bei dem wir eine speziell erstellte E-Mail an einen Mail-Server senden und eine Remote-Shell auf den Linux-Computer übertragen können. Dadurch werden alle vorhandenen Schutzfunktionen (wie ASLR, PIE und NX) auf 32-Bit- und 64-Bit-Systemen umgangen.
Meine unten zusammengestellten Recherchen für alle anderen, die suchen:
Haftungsausschluss
Ungeachtet dessen, was viele andere Threads / Blogs zu Ihnen sagen könnten, empfehle ich, nicht jedes einzelne Betriebssystem, das Sie haben, sofort blind zu glibc
aktualisieren, ohne diese Updates gründlich zu testen . Es wurde berichtet, dass die glibc-Updates massive Anwendungsfehler verursacht haben, die dazu führten, dass Benutzer ihre glibc-Updates auf die vorherige Version zurücksetzen mussten.
Man aktualisiert eine Produktionsumgebung nicht einfach in Massen, ohne sie zu testen.
Hintergrundinformation
GHOST ist ein 'Buffer Overflow'-Fehler, der die Funktionsaufrufe gethostbyname () und gethostbyname2 () in der glibc-Bibliothek betrifft. Diese Sicherheitsanfälligkeit ermöglicht einem Remoteangreifer, der eine dieser Funktionen über eine Anwendung aufrufen kann, um beliebigen Code mit den Berechtigungen des Benutzers auszuführen, der die Anwendung ausführt.
Einschlag
Die Funktionsaufrufe gethostbyname () werden für die DNS-Auflösung verwendet, was ein sehr häufiges Ereignis ist. Um diese Sicherheitsanfälligkeit auszunutzen, muss ein Angreifer einen Pufferüberlauf auslösen, indem er einer Anwendung, die eine DNS-Auflösung durchführt, ein ungültiges Hostnamenargument bereitstellt.
Aktuelle Liste der betroffenen Linux-Distributionen
RHEL (Red Hat Enterprise Linux) Version 5.x, 6.x und 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 & 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 (oder älter sollte upgraden)
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 (ältere Versionen als 11 sollten upgraden)
11.4 Evergreen fix available ---> glibc-2.11.3-12.66.1
12.3 fix available ---> glibc-2.17-4.17.1
Welche Pakete / Anwendungen verwenden die gelöschte glibc noch?
( Dank an Gilles )
Für 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}'
Für 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}'
Welche C-Bibliotheksversion (glibc) verwendet mein Linux-System?
Der einfachste Weg, die Versionsnummer zu überprüfen, besteht darin, den folgenden Befehl auszuführen:
ldd --version
Beispielausgaben von 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.
Beispielausgaben von 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.
Beispielausgaben von 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.
GHOST-Schwachstellenüberprüfung
Die University of Chicago hostet das folgende Skript zum einfachen Herunterladen:
$ 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);
}
Kompilieren Sie und führen Sie es wie folgt aus:
$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]
Red Hat Access Lab: GHOST-Tool Verwenden Sie dieses Tool nicht, da die Berichterstellung falsch ist und der Vulnerability Checker von Qualys korrekt ist.
Patchen
CentOS / RHEL / Fedora / Scientific Linux
sudo yum clean all
sudo yum update
Jetzt neu starten, um wirksam zu werden:
sudo reboot
Wenn Ihr Mirror nicht die neuesten Pakete enthält, können Sie diese auch manuell herunterladen. * Hinweis: Für fortgeschrittene Benutzer
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
Neustart:
sudo reboot
SUSE Linux Enterprise
Verwenden Sie zum Installieren dieses SUSE-Sicherheitsupdates YaST online_update. Oder verwenden Sie die folgenden Befehle gemäß Ihrer Version:
SUSE Linux Enterprise-Software-Entwicklungskit 11 SP3
zypper in -t patch sdksp3-glibc-10206
SUSE Linux Enterprise Server 11 SP3 für VMware
zypper in -t patch slessp3-glibc-10206
SUSE Linux Enterprise Server 11 SP3
zypper in -t patch slessp3-glibc-10206
LTSS für SUSE Linux Enterprise Server 11 SP2
zypper in -t patch slessp2-glibc-10204
LTSS für SUSE Linux Enterprise Server 11 SP1
zypper in -t patch slessp1-glibc-10202
SUSE Linux Enterprise Desktop 11 SP3
zypper in -t patch sledsp3-glibc-10206
Führen Sie zum Schluss alle SUSE Linux-Versionen aus, um Ihr System auf den neuesten Stand zu bringen:
zypper patch
OpenSUSE Linux
Geben Sie Folgendes ein, um eine Liste der verfügbaren Updates einschließlich glibc unter OpenSUSE Linux anzuzeigen:
zypper lu
Führen Sie Folgendes aus, um installierte glibc-Pakete einfach mit den neueren verfügbaren Versionen zu aktualisieren:
zypper up
Fast jedes Programm, das auf Ihrem Computer ausgeführt wird, verwendet glibc. Sie müssen jeden Dienst oder jede Anwendung, die glibc verwendet, neu starten, um sicherzustellen, dass der Patch wirksam wird. Daher wird ein Neustart empfohlen.
Wie starte ich init neu, ohne das System neu zu starten oder zu beeinflussen?
telinit u
'man telinit' - U oder u, um anzufordern, dass der init (8) -Daemon sich selbst erneut ausführt. Dies wird nicht empfohlen, da Upstart derzeit seinen Status nicht beibehalten kann, dies jedoch beim Upgrade von Systembibliotheken erforderlich ist.
Um die Bedrohung in begrenztem Umfang sofort zu mindern, müssen Sie die umgekehrten DNS-Überprüfungen in allen Ihren öffentlich zugänglichen Diensten deaktivieren. Sie können beispielsweise die umgekehrte DNS-Überprüfung in SSH deaktivieren, indem Sie in Ihrem System UseDNS
auf no
festlegen /etc/ssh/sshd_config
.
Quellen (und weitere Informationen):
- 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-ist-die-einfach-zu-prüfen-wenn-mein-System-gesichert ist
- http://bobcares.com/blog/ghost-hunting-resolving-glibc-remote-code-execution-vulnerability-cve-2015-0235-in-centos-red-hat-ubuntu-debian-and-suse-linux- Server
- https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://security-tracker.debian.org/tracker/CVE-2015-0235