Cảnh báo lỗ hổng nguy hiểm "GHOST"
Vào ngày 27/1/2015 các chuyên gia bảo mật của Qualys đã phát hiện ra một lỗ hổng nguy hiểm mới được công bố với tên “GHOST”.
GHOST là một lỗ hổng nghiêm trọng được phát hiện trong bộ thư viện Linux glibc. GNU C Library hoặc gọi là glibc là thư viện phổ biến và thường có sẵn trong các hệ điều hành Linux. Lỗ hổng này cho phép kẻ tấn công kiểm soát từ xa hoàn toàn hệ thống đang bị tổn thương bằng cách khai thác lỗ hổng tràn bộ đệm trong chức năng GetHOST của glibc.
Cũng giống như Shellshock và Heartbleed thì lỗ hổng này rất nghiêm trọng và ảnh hưởng nhiều đến các máy chủ trên toàn thế giới.
Lỗ hổng GHOST có thể khai thác trên các máy chủ chạy hệ điều hành Linux mà có sử dụng thư viện glibc từ các phiên bản 2.18 trở về trước. Nhiều bản phân phối của Linux phổ biến đang được nhiều máy chủ sử dụng đang tồn tại lỗ hổng này như:
- RHEL (Red Hat Enterprise Linux) version 5.x, 6.x and 7.x
- CentOS Linux version 5.x, 6.x & 7.x
- Ubuntu Linux version 10.04, 12.04 LTS
- Debian Linux version 7.x
- Linux Mint version 13.0
- Fedora Linux version 19 or older
- SUSE Linux Enterprise 11 and older (also OpenSuse Linux 11 or older versions).
- Arch Linux glibc version <= 2.18-1
Viện Công nghệ An toàn thông tin (IST) cảnh báo các đơn vị, tổ chức đang sử dụng các hệ thống Linux cần kiểm tra và câp nhật ngay lập tức. Sau đây là một số phương pháp kiểm tra xem hệ thống có đang bị lỗ hổng GHOST hay không và cách thức khắc phục lỗ hổng này.
A: Kiểm tra xem hệ thống có đang bị lỗ hổng bảo mật này:
Có 2 cách kiểm tra lỗ hổng này:
Cách 1:
- Với Ubuntu & Debian
Kiểm tra phiên bản của glibc bằng câu lệnh dưới :
ldd –version
Dòng đầu tiên sẽ thể hiện phiên bản của eglibc. Như ví dụ dưới là phần bôi đậm
ldd (Ubuntu EGLIBC 2.15-0ubuntu10.7) 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.
Nếu phiên bản eglibc giống hoặc mới hơn các phiên bản được liệt kê dưới đây thì hệ thống của bạn không bị lỗ hổng GHOST và ngược lại bạn đang bị lỗ hổng cần cập nhật ngay:
- Ubuntu 12.04 LTS: 2.15-0ubuntu10.10
- Ubuntu 10.04 LTS: 2.11.1-0ubuntu7.20
- Debian 7 LTS: 2.13-38+deb7u7
- …
- CentOS & RHEL
Với phương pháp tương tự
Kiểm tra phiên bản của glibc bằng rpm :
rpm -q glibc
Nếu phiên bản glibc cũ hơn 2.18 thì hệ thống của bạn dễ bị tổng thương. Ngược lại nếu bạn đang sử dụng các phiên bản 2.18 hoặc mới hơn thì hệ thống an toàn với lỗ hổng GHOST.
Cách 2:
Sử dụng đoạn code C sau:
link : https://www.openwall.com/lists/oss-security/2015/01/27/9
/* ghosttest.c: GHOST vulnerability tester */
/* Credit: https://www.openwall.com/lists/oss-security/2015/01/27/9 */
#include
#include
#include
#include
#include#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);
}
Compile và chạy:
$ gcc ghosttest.c -o ghosttest
$ ./ghosttest
Nếu hệ thống bị lỗ hổng GHOST sẽ có kết quả:
vulnerable
Và ngược lại không bị lỗ hổng:
not vulnerable
B: Cách khắc phục lỗ hổng GHOST:
- Với Ubuntu / Debian:
sudo apt-get clean
sudo apt-get update
sudo apt-get dist-upgrade
Khởi động lại hệ thống sau khi cập nhật xong.
- Với CentOS / RHEL/ Fedora/ Scientific Linux
sudo yum update glibc
sudo yum update
Khởi động lại hệ thống sau khi cập nhật xong.
C: Sử dụng các cách như phần A đã trình bày để kiểm tra lỗ hổng
D: Tham khảo:
- https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://www.digitalocean.com/community/tutorials/how-to-protect-your-linux-server-against-the-ghost-vulnerability
- https://rhn.redhat.com/errata/RHSA-2015-0090.html
- https://launchpad.net/ubuntu/+source/eglibc
- https://security-tracker.debian.org/tracker/CVE-2015-0235
- https://www.gnu.org/software/libc/
Nguồn : Viện Công nghệ An toàn thông tin (IST)