Sorumun cevabı Qualys'ten :
Testlerimiz sırasında, bir posta sunucusuna özel olarak oluşturulmuş bir e-posta gönderdiğimiz ve Linux makinesine uzak bir kabuk alabileceğimiz bir kavram kanıtı geliştirdik. Bu , hem 32 bit hem de 64 bit sistemlerde mevcut tüm korumaları (ASLR, PIE ve NX gibi) atlar .
Aşağıdaki derlenmiş araştırmamı arayan herkes:
feragat
Diğer konuları bir sürü / bloglar söyleyebilir şeye ben önermek rağmen değil hemen her OS güncellemek için iyice bu test olmadan körlemesine sahip glibc
güncelleştirmeleri. Glibc güncellemelerinin büyük uygulama segfaultlarının insanları glibc güncellemelerini önceki sürümlerine geri döndürmeye zorladığı bildirildi.
Biri bir üretim ortamını test etmeden toplu olarak güncellemez.
Arkaplan bilgisi
GHOST, glibc kütüphanesindeki gethostbyname () ve gethostbyname2 () işlev çağrılarını etkileyen bir 'arabellek taşması' hatasıdır. Bu güvenlik açığı, bu işlevlerden birini uygulama çağrısı yapabilen bir uzak saldırganın uygulamayı çalıştıran kullanıcının izinleriyle rasgele kod yürütmesine olanak tanır.
Etki
Gethostbyname () işlev çağrıları, çok yaygın bir olay olan DNS çözümlemesi için kullanılır. Bu güvenlik açığından yararlanmak için, bir saldırganın DNS çözümlemesi yapan bir uygulamaya geçersiz bir ana bilgisayar adı bağımsız değişkeni sağlayarak arabellek taşmasını tetiklemesi gerekir.
Etkilenen Linux dağıtımlarının güncel listesi
RHEL (Red Hat Enterprise Linux) sürüm 5.x, 6.x ve 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 sürüm 5.x, 6.x ve 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 sürüm 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 sürüm 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 sürüm 13.0
Mint 13 fix available ---> libc6-2.15-0ubuntu10.10
Fedora Linux sürüm 19 (veya daha eski sürüm yükseltilmelidir)
Fedora 19 - vulnerable - EOL on Jan 6, 2014 (upgrade to Fedora 20/21 for patch)
SUSE Linux Kurumsal
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 (11'den eski sürümler yükseltilmelidir)
11.4 Evergreen fix available ---> glibc-2.11.3-12.66.1
12.3 fix available ---> glibc-2.17-4.17.1
Silinen glibc'yi hala hangi paketler / uygulamalar kullanıyor?
( Gilles'e kredi )
CentOS / RHEL / Fedora / Scientific Linux için:
lsof -o / | awk '
BEGIN {
while (("rpm -ql glibc | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
Ubuntu / Debian Linux için:
lsof -o / | awk '
BEGIN {
while (("dpkg -L libc6:amd64 | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
Linux sistemim hangi C kütüphanesi (glibc) sürümünü kullanıyor?
Sürüm numarasını kontrol etmenin en kolay yolu aşağıdaki komutu çalıştırmaktır:
ldd --version
RHEL / CentOS Linux v6.6'dan örnek çıktılar:
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.
Ubuntu Linux 12.04.5 LTS'den örnek çıktılar:
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.
Debian Linux v7.8'den örnek çıktılar:
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 güvenlik açığı kontrolü
Chicago Üniversitesi, kolay indirme için aşağıdaki betiği barındırmaktadır:
$ 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);
}
Aşağıdaki gibi derleyin ve çalıştırın:
$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]
Red Hat Access Lab: GHOST aracı Bu aracı kullanmayın, raporlaması yanlış, Qualys'in Güvenlik Açığı denetleyicisi doğrudur.
yama
CentOS / RHEL / Fedora / Bilimsel Linux
sudo yum clean all
sudo yum update
Etkilenmek için şimdi yeniden başlatın:
sudo reboot
Alternatif olarak, aynanız en yeni paketleri içermiyorsa, bunları manuel olarak indirmeniz yeterlidir. * not: Daha ileri düzey kullanıcılar için
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
Tekrar başlat:
sudo reboot
SUSE Linux Kurumsal
Bu SUSE Güvenlik Güncelleştirmesini yüklemek için YaST online_update komutunu kullanın. Veya sürümünüze göre aşağıdaki komutları kullanın:
SUSE Linux Kurumsal Yazılım Geliştirme Kiti 11 SP3
zypper in -t patch sdksp3-glibc-10206
VMware için SUSE Linux Enterprise Server 11 SP3
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 Kurumsal Masaüstü 11 SP3
zypper in -t patch sledsp3-glibc-10206
Son olarak sisteminizi güncel hale getirmek için tüm SUSE linux sürümü için çalıştırın:
zypper patch
OpenSUSE Linux
OpenSUSE Linux'ta glibc dahil mevcut güncellemelerin bir listesini görmek için şunu girin:
zypper lu
Kurulu glibc paketlerini daha yeni mevcut sürümleriyle güncellemek için şunu çalıştırın:
zypper up
Makinenizde çalışan hemen hemen her program glibc kullanır. Düzeltme ekinin geçerli olmasını sağlamak için glibc kullanan her hizmeti veya uygulamayı yeniden başlatmanız gerekir. Bu nedenle, yeniden başlatma önerilir.
Sistemi yeniden başlatmadan veya etkilemeden init nasıl yeniden başlatılır?
telinit u
'man telinit' - init (8) arka plan programının kendini yeniden yürütmesini istemek için U veya u. Upstart şu anda durumunu önceden sunamadığından bu önerilmez, ancak sistem kitaplıklarını yükseltirken gereklidir.
Tehdidi hemen sınırlı bir şekilde azaltmak, halka açık tüm hizmetlerinizde ters DNS kontrollerini devre dışı bırakmaktır. Örneğin, ayarı tarafından SSH içinde ters DNS denetimler devre dışı UseDNS
etmek no
Gözlerinde farklı /etc/ssh/sshd_config
.
Kaynaklar (ve daha fazla bilgi):
- 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- sunucular
- https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://security-tracker.debian.org/tracker/CVE-2015-0235