Trả lời câu hỏi của tôi, từ Qualys :
Trong quá trình thử nghiệm, chúng tôi đã phát triển một khái niệm bằng chứng trong đó chúng tôi gửi e-mail được tạo đặc biệt đến máy chủ thư và có thể nhận được một vỏ từ xa đến máy Linux. Điều này bỏ qua tất cả các biện pháp bảo vệ hiện có (như ASLR, PIE và NX) trên cả hệ thống 32 bit và 64 bit.
Nghiên cứu tổng hợp của tôi dưới đây cho bất cứ ai khác tìm kiếm:
Khước từ
Mặc dù rất nhiều chủ đề / blog khác có thể nói với bạn, tôi khuyên bạn không nên cập nhật ngay lập tức mọi hệ điều hành mà bạn có một cách mù quáng mà không kiểm tra kỹ các glibc
bản cập nhật này . Nó đã được báo cáo rằng các bản cập nhật glibc đã gây ra sự phân biệt ứng dụng lớn buộc mọi người phải quay lại các bản cập nhật glibc của họ về phiên bản trước.
Một người không chỉ đơn giản là cập nhật hàng loạt một môi trường sản xuất mà không cần thử nghiệm.
Thông tin lai lịch
GHOST là một lỗi 'tràn bộ đệm' ảnh hưởng đến các lệnh gọi hàm gethostbyname () và gethostbyname2 () trong thư viện glibc. Lỗ hổng này cho phép kẻ tấn công từ xa có thể thực hiện cuộc gọi ứng dụng đến một trong hai chức năng này để thực thi mã tùy ý với sự cho phép của người dùng chạy ứng dụng.
Sự va chạm
Các lệnh gọi hàm gethostbyname () được sử dụng để phân giải DNS, đây là một sự kiện rất phổ biến. Để khai thác lỗ hổng này, kẻ tấn công phải kích hoạt tràn bộ đệm bằng cách cung cấp đối số tên máy chủ không hợp lệ cho ứng dụng thực hiện độ phân giải DNS.
Danh sách hiện tại của các bản phân phối Linux bị ảnh hưởng
RHEL (Red Hat Enterprise Linux) phiên bản 5.x, 6.x và 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
Phiên bản CentOS Linux 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 phiên bản 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 phiên bản 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
Phiên bản Linux Mint 13.0
Mint 13 fix available ---> libc6-2.15-0ubuntu10.10
Fedora Linux phiên bản 19 (hoặc cũ hơn nên nâng cấp)
Fedora 19 - vulnerable - EOL on Jan 6, 2014 (upgrade to Fedora 20/21 for patch)
SUSE Linux doanh nghiệp
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 (phiên bản cũ hơn 11 nên nâng cấp)
11.4 Evergreen fix available ---> glibc-2.11.3-12.66.1
12.3 fix available ---> glibc-2.17-4.17.1
Những gói / ứng dụng nào vẫn đang sử dụng glibc đã bị xóa?
( tín dụng cho Gilles )
Đối với CentOS / RHEL / Fedora / Khoa học Linux:
lsof -o / | awk '
BEGIN {
while (("rpm -ql glibc | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
Đối với 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}'
Hệ thống Linux của tôi sử dụng phiên bản thư viện C nào (glibc)?
Cách dễ nhất để kiểm tra số phiên bản là chạy lệnh sau:
ldd --version
Các kết quả đầu ra mẫu từ 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.
Các kết quả đầu ra mẫu từ 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.
Các kết quả đầu ra mẫu từ 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.
Kiểm tra lỗ hổng GHOST
Đại học Chicago đang lưu trữ tập lệnh dưới đây để dễ dàng tải xuống:
$ 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);
}
Biên dịch và chạy nó như sau:
$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]
Red Hat Access Lab: Công cụ GHOST Không sử dụng công cụ này, báo cáo của nó là sai, trình kiểm tra lỗ hổng từ Qualys là chính xác.
Vá
CentOS / RHEL / Fedora / Khoa học Linux
sudo yum clean all
sudo yum update
Bây giờ khởi động lại để có ảnh hưởng:
sudo reboot
Ngoài ra, nếu gương của bạn không chứa các gói mới nhất, chỉ cần tải xuống thủ công. * lưu ý: Dành cho người dùng cao cấp hơn
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
Khởi động lại:
sudo reboot
SUSE Linux doanh nghiệp
Để cài đặt Cập nhật bảo mật SUSE này, hãy sử dụng YaST online_update. Hoặc sử dụng các lệnh sau theo phiên bản của bạn:
Bộ phát triển phần mềm SUSE Linux Enterprise 11 SP3
zypper in -t patch sdksp3-glibc-10206
SUSE Linux Enterprise Server 11 SP3 cho 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
Cuối cùng chạy cho tất cả các phiên bản SUSE linux để mang đến cho hệ thống của bạn cập nhật:
zypper patch
OpenSUSE Linux
Để xem danh sách các bản cập nhật khả dụng, bao gồm cả glibc trên OpenSUSE Linux, hãy nhập:
zypper lu
Để chỉ cập nhật các gói glibc đã cài đặt với các phiên bản mới hơn có sẵn, hãy chạy:
zypper up
Gần như mọi chương trình chạy trên máy của bạn đều sử dụng glibc. Bạn cần khởi động lại mọi dịch vụ hoặc ứng dụng sử dụng glibc để đảm bảo bản vá có hiệu lực. Do đó, một khởi động lại được khuyến khích.
Làm thế nào để khởi động lại init mà không khởi động lại hoặc ảnh hưởng đến hệ thống?
telinit u
'man telinit' - U hoặc u để yêu cầu init (8) daemon tự thực thi lại. Điều này không được khuyến khích vì Upstart hiện không thể phục vụ trước trạng thái của nó, nhưng là cần thiết khi nâng cấp thư viện hệ thống.
Để giảm thiểu mối đe dọa ngay lập tức theo cách hạn chế là bằng cách vô hiệu hóa kiểm tra DNS ngược trong tất cả các dịch vụ đối mặt công khai của bạn. Ví dụ: bạn có thể vô hiệu hóa kiểm tra DNS ngược trong SSH bằng cách đặt UseDNS
thành no
trong /etc/ssh/sshd_config
.
Nguồn (và thêm thông tin):
- https://access.redhat.com/articles/1332213
- http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubfox-fedora-centos-rhel-linux/
- http://www.openwall.com/lists/oss-security/2015/01/27/9
- /security/80210/ghost-orms-is-there-a-simple-way-to-test-if-my-system-is-secure
- http://bobcares.com/blog/ghost-hunting-resolve-glibc-remote-code-execut-vulnerability-cve-2015-0235-in-centos-red-hat-ubfox-debian-and-suse-linux- may chủ
- https://community.qualys.com/bloss/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://security-tracker.debian.org/tracker/CVE-2015-0235