Tin công nghệ

Cảnh báo lỗ hổng bảo mật 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 thê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 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. 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: 

 Kiểm tra phiên bản của glibc bằng câu lệnh dưới :

ldd --version

 

Với Ubuntu & Debian

 

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ự 

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 : http://www.openwall.com/lists/oss-security/2015/01/27/9

/* 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(unsignedchar) - 2*sizeof(char *) - 1;
  char name[sizeof(temp.buffer)];
  memset(name, '0', len);
  name[len] = '';
 
  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:

vVớ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. 

 

vVớ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

·         http://www.gnu.org/software/libc/

Chia sẻ P.A Việt Nam:
TIN TỨC KHÁC:

Tư vấn miễn phí Xin chào.
P.A Việt Nam có thể giúp gì cho quý khách?
Tên miền đã có sở hữu !