Lỗ Hổng Sudo 12 Năm: Leo Thang Đặc Quyền Root Dễ Dàng Trên Linux

Một lỗ hổng mới được công bố trong công cụ dòng lệnh Sudo, tồn tại trong hơn 12 năm qua, đã khiến vô số hệ thống Linux và Unix-like đối mặt với nguy cơ leo thang đặc quyền cục bộ. Lỗ hổng này cho phép kẻ tấn công giành quyền truy cập gốc (root) mà không cần đến các kỹ thuật khai thác phức tạp.

Tổng quan về Lỗ hổng CVE-2025-32462

Lỗ hổng này được định danh là CVE-2025-32462, được phát hiện bởi Đơn vị Nghiên cứu An ninh Mạng Stratascale (CRU). Nó ảnh hưởng đến cả các phiên bản Sudo ổn định (từ v1.9.0 đến v1.9.17) và các phiên bản cũ (từ v1.8.8 đến v1.8.32). Sudo là một tiện ích gần như phổ biến trong các môi trường Linux, là một công cụ cực kỳ quan trọng.

Bối cảnh Sudo và Chức năng Chính

Sudo (superuser do) là một tiện ích cho phép người dùng được ủy quyền thực thi các lệnh với đặc quyền cao hơn, thường là với tư cách người dùng root, mà không cần phải chia sẻ mật khẩu của tài khoản root. Điều này giúp tăng cường bảo mật và khả năng kiểm soát trong các hệ thống đa người dùng.

Cấu hình của Sudo được quản lý thông qua tệp sudoers. Tệp này cho phép kiểm soát chi tiết về việc ai có thể chạy lệnh gì trên các máy chủ nào, đảm bảo tuân thủ nguyên tắc đặc quyền tối thiểu (principle of least privilege) và cung cấp khả năng kiểm tra (audit trail) các hoạt động đã thực hiện.

Thông tin chi tiết về Lỗ hổng

Lỗ hổng tập trung vào tùy chọn -h hoặc --host của Sudo, được giới thiệu lần đầu trong phiên bản 1.8.8 vào năm 2013. Theo thiết kế ban đầu, tùy chọn -h này chỉ được sử dụng kết hợp với cờ -l hoặc --list. Mục đích là cho phép người dùng xem các quyền Sudo của họ trên một máy chủ khác mà không thực sự thực thi lệnh trên máy chủ đó.

Tuy nhiên, do một lỗi logic tồn tại lâu năm, tùy chọn -h không chỉ giới hạn ở các hoạt động liệt kê quyền. Thay vào đó, nó cũng có thể được sử dụng khi thực thi các lệnh hoặc chỉnh sửa tệp, mở ra một kẽ hở nghiêm trọng trong cơ chế kiểm soát đặc quyền.

Cơ chế Hoạt động của Lỗ hổng

Trong các môi trường mà quy tắc Sudo được giới hạn theo tên máy chủ hoặc mẫu hình máy chủ cụ thể – một thực tiễn phổ biến trong các doanh nghiệp lớn nhằm phân chia quyền truy cập dựa trên môi trường (ví dụ: máy chủ phát triển, thử nghiệm, sản xuất) – lỗ hổng này cho phép người dùng chỉ định một máy chủ khác bằng cách sử dụng tùy chọn -h.

Vai trò của Tùy chọn -h / –host

Khi tùy chọn -h được sử dụng, Sudo sẽ đánh giá các quy tắc trong tệp sudoers như thể lệnh đang được chạy trên đã chỉ định, chứ không phải trên máy chủ hiện tại của người dùng. Điều này tạo ra một sự sai lệch trong quá trình kiểm tra quyền, dẫn đến việc bỏ qua các hạn chế dựa trên host được cấu hình trong tệp sudoers.

Ví dụ về cách sudo -h bị lạm dụng:

sudo -h <host_cho_phep_root> <lệnh_cần_thực_thi_với_root_trên_máy_hiện_tại>

Bỏ qua Hạn chế dựa trên Host trong sudoers

Hãy xem xét một kịch bản cụ thể: một người dùng có quyền chạy lệnh với tư cách root trên máy chủ phát triển (ví dụ: dev_server.example.com), nhưng không có quyền tương tự trên máy chủ sản xuất (ví dụ: prod_server.example.com). Theo lẽ thường, người dùng này không thể thực hiện các tác vụ root trực tiếp trên máy chủ sản xuất.

Tuy nhiên, với lỗ hổng CVE-2025-32462, người dùng có thể khai thác lỗi này để giành quyền truy cập root trên hệ thống sản xuất. Họ chỉ cần tham chiếu đến máy chủ phát triển trong lệnh Sudo của mình. Ví dụ, nếu người dùng muốn chạy một shell với quyền root trên máy chủ sản xuất của mình (nơi mà họ không có quyền), họ có thể thử lệnh như sau:

sudo -h dev_server.example.com /bin/bash

Trong trường hợp này, Sudo sẽ kiểm tra quy tắc như thể lệnh /bin/bash đang được thực thi trên dev_server.example.com. Nếu quy tắc cho dev_server.example.com cho phép người dùng chạy /bin/bash với đặc quyền root, thì lệnh sẽ được thực thi thành công trên máy chủ sản xuất hiện tại của người dùng, bất chấp các hạn chế dành riêng cho máy chủ sản xuất.

Điều kiện Tiên quyết để Khai thác

Điểm đáng chú ý của lỗ hổng này là không yêu cầu mã khai thác (exploit code) phức tạp. Lỗ hổng nằm ngay trong logic đánh giá quy tắc của Sudo. Điều kiện tiên quyết duy nhất là người dùng phải có ít nhất một mục nhập trong tệp sudoers, ngay cả khi mục nhập đó không liên quan đến máy chủ hiện tại của họ hoặc lệnh cụ thể mà họ muốn thực thi.

Sự hiện diện của bất kỳ mục nhập sudoers nào, dù là nhỏ nhất, đã đủ để kích hoạt lỗ hổng này. Điều này làm tăng đáng kể phạm vi các tài khoản người dùng có thể bị lợi dụng để leo thang đặc quyền.

Phạm vi Ảnh hưởng và Khả năng Khai thác

Mức độ Phơi nhiễm Hệ thống

Lỗ hổng này đã được xác minh trên các bản phân phối lớn, bao gồm Ubuntu 24.04.1macOS Sequoia, với các phiên bản Sudo mới nhất như 1.9.16p2. Do Sudo là tiện ích mặc định trên hầu hết các hệ thống Linux, mức độ phơi nhiễm là rất rộng. Từ các máy trạm cá nhân đến các máy chủ doanh nghiệp lớn, mọi hệ thống sử dụng Sudo trong các phiên bản bị ảnh hưởng đều có nguy cơ.

Phương thức Khai thác và Tính dễ dàng

Như đã đề cập, lỗ hổng này không đòi hỏi mã khai thác phức tạp. Kẻ tấn công không cần phải viết shellcode phức tạp, thực hiện tràn bộ đệm, hay các kỹ thuật hack tinh vi khác. Khả năng khai thác nằm ở sự hiểu biết về cách Sudo xử lý tùy chọn -h và việc cấu hình sudoers trong môi trường mục tiêu.

Tính chất đơn giản của việc khai thác làm cho lỗ hổng này trở nên đặc biệt nguy hiểm. Một người dùng cục bộ có thể nhanh chóng leo thang đặc quyền lên root nếu họ có kiến thức về cấu trúc mạng nội bộ và các quy tắc sudoers được áp dụng trong đó. Điều này biến lỗ hổng thành một mối đe dọa nghiêm trọng đối với an ninh hệ thống nội bộ.

Biện pháp Khắc phục và Giảm thiểu

Hiện tại, không có giải pháp tạm thời (workaround) hiệu quả nào cho CVE-2025-32462 có thể ngăn chặn hoàn toàn khả năng khai thác mà không làm ảnh hưởng đến chức năng của Sudo.

Cập nhật Sudo

Các quản trị viên hệ thống được khuyến nghị mạnh mẽ nên cập nhật ngay lập tức lên phiên bản Sudo 1.9.17p1 hoặc các phiên bản mới hơn. Trong các phiên bản này, tùy chọn -h đã được hạn chế đúng cách để chỉ sử dụng cho các hoạt động liệt kê quyền, loại bỏ khả năng lạm dụng nó để bỏ qua các hạn chế dựa trên host.

Quá trình cập nhật Sudo thường đơn giản và có thể thực hiện thông qua trình quản lý gói của hệ điều hành:

  • Trên hệ thống Debian/Ubuntu:
    sudo apt update && sudo apt upgrade sudo
  • Trên hệ thống Red Hat/CentOS/Fedora:
    sudo dnf update sudo
  • Trên macOS (nếu cài đặt thông qua Homebrew, cần kiểm tra phiên bản Sudo mặc định):
    brew upgrade sudo

Kiểm tra Cấu hình sudoers

Ngoài việc cập nhật phần mềm, các đội ngũ bảo mật và quản trị viên cũng nên tiến hành xem xét kỹ lưỡng các cấu hình tệp sudoers của họ. Đặc biệt chú ý đến việc sử dụng các chỉ thị Host hoặc Host_Alias.

Nên kiểm tra tất cả các quy tắc để đánh giá tiềm năng phơi nhiễm. Đảm bảo rằng các quy tắc được định nghĩa rõ ràng và không có kẽ hở nào có thể bị lợi dụng ngay cả sau khi cập nhật Sudo. Việc rà soát định kỳ cấu hình sudoers là một phần quan trọng của quản lý bảo mật hệ thống.

Sự cố này một lần nữa nhấn mạnh tầm quan trọng thiết yếu của việc cập nhật phần mềm thường xuyên và quản lý cấu hình cảnh giác, ngay cả đối với các công cụ nền tảng, đáng tin cậy như Sudo.