GHOST là gì? Mức độ nguy hiểm và cách vá lỗ hổng GHOST trên Linux
GHOST là một lỗ hổng bảo mật từng gây nhiều chú ý trong cộng đồng quản trị hệ thống Linux vì có thể liên quan đến nguy cơ thực thi mã từ xa. Lỗ hổng này nằm trong thư viện glibc, cụ thể ở các hàm xử lý tên miền như gethostbyname(). Vậy GHOST là gì, mức độ nghiêm trọng ra sao và người quản trị server cần làm gì để kiểm tra, vá lỗi? Cùng Bizfly Cloud tìm hiểu ngay bài viết dưới đây!
GHOST là gì?
GHOST là tên gọi của lỗ hổng bảo mật CVE-2015-0235 trong thư viện GNU C Library, thường được gọi là glibc. Đây là thư viện chuẩn rất quan trọng trên các hệ điều hành Linux, được nhiều chương trình sử dụng để thực hiện các tác vụ cơ bản như xử lý chuỗi, quản lý bộ nhớ, thao tác hệ thống và phân giải tên miền.
Lỗ hổng GHOST xuất phát từ lỗi tràn bộ đệm trong hàm __nss_hostname_digits_dots(), một hàm nội bộ được sử dụng khi các chương trình gọi đến gethostbyname() hoặc gethostbyname2() để phân giải hostname.

Ghost (ghosting) là thuật ngữ lóng chỉ hành vi một người đột ngột cắt đứt mọi liên lạc
Tên gọi GHOST cũng bắt nguồn từ chính hàm gethostbyname. Nói đơn giản, nếu một ứng dụng trên Linux sử dụng phiên bản glibc bị ảnh hưởng và xử lý dữ liệu hostname không an toàn, kẻ tấn công có thể lợi dụng lỗi này để làm ứng dụng hoạt động bất thường, thậm chí thực thi mã với quyền của ứng dụng đó trong một số trường hợp.
Glibc là gì và vì sao liên quan đến GHOST?
glibc là thư viện C chuẩn được sử dụng rất rộng rãi trên các hệ thống Linux. Nhiều phần mềm, dịch vụ và tiến trình hệ thống đều phụ thuộc vào glibc để hoạt động.
Vì glibc nằm ở tầng rất cơ bản của hệ điều hành, một lỗ hổng trong thư viện này có thể ảnh hưởng đến nhiều phần mềm khác nhau. Đây là lý do GHOST từng được đánh giá là nghiêm trọng: Vấn đề không chỉ nằm ở một ứng dụng riêng lẻ, mà nằm ở một thư viện nền tảng mà rất nhiều ứng dụng cùng sử dụng.

Glibc (GNU C Library) là thư viện chuẩn của ngôn ngữ C do Dự án GNU phát triển
Tuy nhiên, không phải cứ hệ thống có glibc bị lỗi là chắc chắn bị khai thác. Điều kiện khai thác còn phụ thuộc vào việc ứng dụng có gọi đến các hàm bị ảnh hưởng hay không, dữ liệu đầu vào được xử lý như thế nào và dịch vụ đó có mở ra Internet hay không.
Mức độ nghiêm trọng của GHOST
GHOST được đánh giá nghiêm trọng vì trong một số kịch bản, kẻ tấn công có thể gửi dữ liệu được tạo đặc biệt đến một ứng dụng có sử dụng hàm bị ảnh hưởng, từ đó thực thi mã với quyền của user đang chạy ứng dụng.
Ví dụ, nếu một dịch vụ mạng chạy trên Linux sử dụng hàm gethostbyname() để xử lý hostname từ bên ngoài, lỗ hổng có thể trở thành điểm tấn công từ xa. Đây là lý do các nhà cung cấp hệ điều hành như Red Hat, Debian, Ubuntu, SUSE đều từng phát hành bản vá cho glibc.

GHOST (CVE-2015-0235) là một lỗ hổng bảo mật cực kỳ nghiêm trọng trong thư viện glibc
Dù vậy, cần hiểu đúng mức độ rủi ro:
- GHOST là lỗ hổng nghiêm trọng, nhưng không phải mọi máy
- Linux đều có thể bị khai thác trực tiếp
- Các hệ thống dùng phiên bản
glibcđã được vá sẽ không còn chịu ảnh hưởng theo lỗ hổng này - Nhiều ứng dụng hiện đại đã chuyển sang dùng các hàm mới hơn như
getaddrinfo(), phù hợp hơn với IPv6 và an toàn hơn trong nhiều trường hợp - Rủi ro cao hơn với server cũ, hệ điều hành không còn được cập nhật hoặc dịch vụ public ra Internet nhưng chưa vá bảo mật
Những hệ thống nào có thể bị ảnh hưởng?
GHOST ảnh hưởng đến glibc 2.2 và nhiều phiên bản glibc 2.x trước 2.18. Tuy nhiên, trên thực tế, các bản phân phối Linux thường không chỉ dựa vào số phiên bản gốc của glibc, mà còn có cơ chế backport bản vá bảo mật.
Điều này có nghĩa là một hệ thống vẫn có thể hiển thị phiên bản glibc thấp hơn 2.18, nhưng đã được nhà phân phối vá lỗi. Vì vậy, khi kiểm tra GHOST, người quản trị không nên chỉ nhìn vào số phiên bản, mà nên kiểm tra bản cập nhật bảo mật từ hệ điều hành đang sử dụng.

Lỗ hổng bảo mật GHOST (CVE-2015-0235) ảnh hưởng đến hệ thống chạy hệ điều hành Linux
Các hệ thống cần đặc biệt chú ý gồm:
- Server Linux cũ chưa cập nhật trong thời gian dài
- VPS hoặc Cloud Server chạy bản phân phối đã hết vòng đời hỗ trợ
- Máy chủ public dịch vụ ra Internet
- Hệ thống dùng phần mềm cũ có gọi đến
gethostbyname()hoặcgethostbyname2() - Môi trường production không có quy trình cập nhật bảo mật định kỳ
Cách kiểm tra phiên bản glibc trên Linux
Để kiểm tra phiên bản glibc trên hệ thống Linux, có thể sử dụng lệnh:
ldd --versionKết quả sẽ hiển thị phiên bản glibc đang được sử dụng. Ví dụ:
ldd (Ubuntu GLIBC 2.35-0ubuntu3) 2.35Nếu hệ thống đang dùng bản phân phối Linux cũ, bạn nên kiểm tra thêm thông tin bản vá từ package manager.

Cách kiểm tra phiên bản glibc (GNU C Library) trên Linux nhanh chóng
Với Ubuntu hoặc Debian:
apt-cache policy libc6Với CentOS, RHEL hoặc AlmaLinux:
rpm -q glibcVới SUSE:
rpm -q glibcNếu hệ điều hành đã quá cũ hoặc không còn nhận bản vá bảo mật, phương án an toàn hơn là nâng cấp hệ điều hành hoặc chuyển dịch vụ sang môi trường server mới hơn.
Cách vá lỗ hổng GHOST
Red Hat đã đưa ra các bản vá cho các bản Red Hat Enterprise Linux x.5 server. Novell có một danh sách các bản SUSE Linux Enterprise Server bị ảnh hưởng bởi lỗ hổng bảo mật này. Debian cũng đã công bố bản nâng cấp cho các phần mềm để giải quyết lỗ hổng bảo mật này.
Không giống như các lỗi được biết đến nhiều trên Internet như Bash, vá lỗi cho glibc không không phức tạp như với Bash vì có nhiều phần thực hiện các lời gọi Bash một cách im lặng (silently call).
Để vá lỗ hỏng GHOST bạn chỉ cần update glibc lên bản mới nhất và restart lại các dịch vụ bị ảnh hưởng.
Để liệt kê các ứng dụng bị ảnh hưởng bởi lỗ hổng bảo mật glibc có thể sử dụng lệnh như sau:
lsof | grep libc | awk '{print $1}' | sort | uniq Ví dụ một đoạn kết quả chạy lệnh trên Ubuntu 14.04:
alsa-sinkalsa-sourat-spi-buAnalysis AudioThrebashawk
Có cần khởi động lại server sau khi vá GHOST không?
Có. Sau khi cập nhật glibc, các tiến trình đang chạy có thể vẫn sử dụng phiên bản thư viện cũ đã được nạp vào bộ nhớ trước đó. Vì vậy, nếu chỉ cập nhật package mà không restart dịch vụ hoặc reboot server, một số tiến trình vẫn có thể chưa thực sự được bảo vệ.
Bạn có thể kiểm tra các tiến trình đang dùng thư viện libc bằng lệnh:
lsof | grep libc | awk '{print $1}' | sort | uniqLệnh này giúp liệt kê các tiến trình có liên quan đến libc. Tuy nhiên, với môi trường production, nên đánh giá kỹ trước khi restart dịch vụ để tránh gián đoạn hệ thống.
GHOST hiện nay còn nguy hiểm không?
Với các hệ thống Linux hiện đại và được cập nhật thường xuyên, GHOST không còn là mối đe dọa phổ biến như thời điểm được công bố. Hầu hết bản phân phối lớn đã phát hành bản vá từ lâu.
Tuy nhiên, GHOST vẫn là ví dụ điển hình cho thấy các lỗ hổng trong thư viện nền tảng có thể ảnh hưởng rộng đến hệ thống. Nếu doanh nghiệp vẫn vận hành server cũ, hệ điều hành hết hỗ trợ hoặc không có lịch cập nhật bảo mật định kỳ, các lỗ hổng như GHOST vẫn có thể trở thành rủi ro thực tế.
Vì vậy, thay vì chỉ kiểm tra riêng GHOST, người quản trị nên xây dựng quy trình bảo mật tổng thể cho server Linux:
- Cập nhật hệ điều hành và package định kỳ
- Theo dõi cảnh báo CVE liên quan đến bản phân phối đang dùng
- Hạn chế public các dịch vụ không cần thiết ra Internet
- Phân quyền user chạy dịch vụ theo nguyên tắc tối thiểu
- Sao lưu dữ liệu trước khi cập nhật các package quan trọng
- Thay thế các hệ điều hành đã hết vòng đời hỗ trợ

Checklist bảo mật server Ghost (CMS) yêu cầu áp dụng các tiêu chuẩn an toàn cho cả hệ điều hành Linux (VPS)
Kết luận
GHOST là lỗ hổng bảo mật trong glibc trên Linux, có mã CVE-2015-0235, liên quan đến các hàm gethostbyname() và gethostbyname2(). Lỗ hổng này từng được đánh giá nghiêm trọng vì có thể dẫn đến thực thi mã từ xa trong một số điều kiện nhất định.
Với hệ thống đã được cập nhật, GHOST gần như không còn là vấn đề lớn. Nhưng nếu bạn đang quản trị VPS, Cloud Server hoặc máy chủ Linux cũ, việc kiểm tra phiên bản glibc, cập nhật bản vá và khởi động lại dịch vụ sau khi vá vẫn là bước cần thiết để giảm rủi ro bảo mật.
Câu hỏi thường gặp về GHOST
GHOST có phải virus không?
Không. GHOST không phải virus hay mã độc. Đây là một lỗ hổng bảo mật trong thư viện hệ thống. Kẻ tấn công có thể lợi dụng lỗ hổng này nếu hệ thống dùng phiên bản glibc bị ảnh hưởng và ứng dụng có điều kiện khai thác phù hợp.
Server Linux hiện nay có còn bị GHOST không?
Nếu server được cập nhật đầy đủ, nguy cơ từ GHOST rất thấp. Rủi ro chủ yếu nằm ở các hệ thống Linux cũ, lâu không cập nhật hoặc đã hết vòng đời hỗ trợ.
Vá GHOST có khó không?
Thông thường không khó. Người quản trị chỉ cần cập nhật package glibc thông qua trình quản lý gói của hệ điều hành, sau đó restart các dịch vụ bị ảnh hưởng hoặc reboot server theo kế hoạch bảo trì.
Có nên tự biên dịch glibc để vá lỗi không?
Không nên, trừ khi bạn có kinh nghiệm quản trị hệ thống sâu. glibc là thư viện nền tảng của Linux, việc biên dịch hoặc thay thế thủ công có thể gây lỗi hệ thống. Cách an toàn hơn là cập nhật qua repository chính thức của bản phân phối đang sử dụng.
Theo Bizfly Cloud chia sẻ























