Jawab pertanyaan saya, dari Qualys :
Selama pengujian kami, kami mengembangkan konsep bukti di mana kami mengirim e-mail yang dibuat khusus ke server surat dan bisa mendapatkan shell jarak jauh ke mesin Linux. Ini melewati semua perlindungan yang ada (seperti ASLR, PIE dan NX) pada sistem 32-bit dan 64-bit.
Penelitian terkompilasi saya di bawah ini untuk orang lain yang mencari:
Penolakan
Terlepas dari apa yang mungkin diberitahukan oleh banyak utas / blog lain kepada Anda, saya sarankan untuk tidak segera memperbarui setiap OS yang Anda miliki secara membabi buta tanpa secara menyeluruh menguji glibc
pembaruan ini . Telah dilaporkan bahwa pembaruan glibc telah menyebabkan segfault aplikasi besar-besaran yang memaksa orang untuk memutar kembali pembaruan glibc mereka ke versi sebelumnya.
Seseorang tidak hanya memperbarui lingkungan produksi secara massal tanpa pengujian.
Informasi latar belakang
GHOST adalah bug 'buffer overflow' yang memengaruhi panggilan fungsi gethostbyname () dan gethostbyname2 () di pustaka glibc. Kerentanan ini memungkinkan penyerang jarak jauh yang mampu membuat panggilan aplikasi ke salah satu dari fungsi ini untuk mengeksekusi kode arbitrer dengan izin dari pengguna yang menjalankan aplikasi.
Dampak
Panggilan fungsi gethostbyname () digunakan untuk menyelesaikan DNS, yang merupakan peristiwa yang sangat umum. Untuk mengeksploitasi kerentanan ini, penyerang harus memicu buffer overflow dengan memberikan argumen nama host yang tidak valid ke aplikasi yang melakukan resolusi DNS.
Daftar saat ini dari distro Linux yang terpengaruh
RHEL (Red Hat Enterprise Linux) versi 5.x, 6.x dan 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 versi 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 versi 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 versi 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 versi 13.0
Mint 13 fix available ---> libc6-2.15-0ubuntu10.10
Fedora Linux versi 19 (atau yang lebih lama harus ditingkatkan)
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 (versi yang lebih tua dari 11 harus ditingkatkan)
11.4 Evergreen fix available ---> glibc-2.11.3-12.66.1
12.3 fix available ---> glibc-2.17-4.17.1
Paket / aplikasi apa yang masih menggunakan glibc yang terhapus?
( kredit untuk Gilles )
Untuk 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}'
Untuk 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}'
Versi C library (glibc) apa yang digunakan sistem Linux saya?
Cara termudah untuk memeriksa nomor versi adalah dengan menjalankan perintah berikut:
ldd --version
Contoh keluaran dari 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.
Contoh keluaran dari 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.
Contoh keluaran dari 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.
Pemeriksaan kerentanan GHOST
University of Chicago menyelenggarakan skrip di bawah ini untuk memudahkan pengunduhan:
$ 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);
}
Kompilasi dan jalankan sebagai berikut:
$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]
Red Hat Access Lab: Alat GHOST Jangan gunakan alat ini, pelaporannya salah, pemeriksa kerentanan dari Qualys akurat.
Menambal
CentOS / RHEL / Fedora / Scientific Linux
sudo yum clean all
sudo yum update
Sekarang restart untuk mengambil efek:
sudo reboot
Atau, jika mirror Anda tidak mengandung paket-paket terbaru, cukup unduh secara manual. * catatan: Untuk pengguna yang lebih mahir
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
Mengulang kembali:
sudo reboot
SUSE Linux Enterprise
Untuk menginstal Pembaruan Keamanan SUSE ini gunakan YaST online_update. Atau gunakan perintah berikut sesuai versi Anda:
SUSE Kit Pengembangan Perangkat Lunak Perusahaan Linux 11 SP3
zypper in -t patch sdksp3-glibc-10206
SUSE Linux Enterprise Server 11 SP3 untuk 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
Terakhir jalankan untuk semua versi SUSE linux untuk membuat sistem Anda mutakhir:
zypper patch
OpenSUSE Linux
Untuk melihat daftar pembaruan yang tersedia termasuk glibc di OpenSUSE Linux, masukkan:
zypper lu
Untuk memperbarui paket glibc yang terinstal dengan versi terbaru yang tersedia, jalankan:
zypper up
Hampir setiap program yang berjalan pada mesin Anda menggunakan glibc. Anda perlu memulai kembali setiap layanan atau aplikasi yang menggunakan glibc untuk memastikan tambalan berlaku. Karena itu, disarankan untuk reboot.
Bagaimana cara me-restart init tanpa memulai ulang atau memengaruhi sistem?
telinit u
'man telinit' - U atau u untuk meminta daemon init (8) mengeksekusi ulang dirinya sendiri. Ini tidak disarankan karena Upstart saat ini tidak dapat melakukan pra-servis kondisinya, tetapi diperlukan saat memutakhirkan pustaka sistem.
Untuk segera mengurangi ancaman secara terbatas adalah dengan menonaktifkan cek DNS terbalik di semua layanan yang Anda hadapi di depan umum. Misalnya, Anda dapat menonaktifkan pemeriksaan DNS terbalik di SSH dengan mengatur UseDNS
ke no
dalam /etc/ssh/sshd_config
.
Sumber (dan informasi lebih lanjut):
- 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- server
- https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://security-tracker.debian.org/tracker/CVE-2015-0235