Lỗ Hổng CVE Nghiêm Trọng snap-confine Ubuntu: Nguy Cơ Root

Lỗ Hổng CVE Nghiêm Trọng snap-confine Ubuntu: Nguy Cơ Root

Hệ thống Ubuntu đang đối mặt với một lỗ hổng CVE leo thang đặc quyền cục bộ mới trong snap-confine, có thể cho phép bất kỳ người dùng cục bộ nào đạt được toàn quyền truy cập root trên các cài đặt máy tính để bàn nhất định. Sự phát hiện này nhấn mạnh tầm quan trọng của việc duy trì an ninh mạng chặt chẽ và cập nhật hệ thống thường xuyên.

Phân tích Lỗ Hổng CVE-2026-8933 trong snap-confine

Các nhà nghiên cứu của Qualys đã phát hiện ra một điều kiện tranh chấp (race condition) nghiêm trọng trong snap-confine.

Đây là chương trình trợ giúp được snapd sử dụng để chuẩn bị môi trường runtime cho các ứng dụng snap.

Cơ chế Hoạt Động của snap-confine và Các Thay Đổi Quan Trọng

Trong các phiên bản bị ảnh hưởng, snap-confine không còn hoạt động như một binary set-user-ID (setuid) root cổ điển.

Thay vào đó, nó dựa vào các khả năng Linux (Linux capabilities) như cap_setuid, cap_setgid, cap_sys_admincap_sys_ptrace.

Sự thay đổi này cho phép tiến trình thực thi với UID của người dùng nhưng vẫn duy trì các quyền gần như root.

Nó cho phép tạo và thao tác tạm thời các tệp thuộc sở hữu của người dùng không có đặc quyền.

Hệ Thống Bị Ảnh Hưởng

Chỉ những cài đặt snap-confine được cấu hình với các khả năng (capabilities) mới dễ bị tổn thương bởi lỗ hổng CVE này.

Các phiên bản mặc định của Ubuntu Desktop 26.0425.10, cũng như Ubuntu Desktop 24.04 đã được cập nhật, đều nằm trong diện rủi ro.

Các phiên bản này sử dụng một biến thể của snap-confine đã được đặt các khả năng.

Các cài đặt setuid-root truyền thống không bị ảnh hưởng bởi CVE-2026-8933.

Thông tin chi tiết về lỗ hổng có thể tham khảo tại báo cáo của Qualys: Qualys Advisory.

Quy Trình Khai Thác Điều Kiện Tranh Chấp

Lỗ hổng phát sinh khi snap-confine tạo một sandbox cho một snap bằng cách tạo một thư mục tạm thời dưới /tmp có tên snap.rootfs_XXXXXX sử dụng hàm mkdtemp().

Sau đó, nó thực hiện một loạt các thao tác mount và sao chép một hệ thống tệp gốc cơ sở vào thư mục tạm thời này.

Tiếp theo, nó gọi chown() để thay đổi quyền sở hữu trở lại thành root.

Tuy nhiên, có một khoảng thời gian ngắn trong đó thư mục tạm thời này và bất kỳ tệp mới tạo nào vẫn thuộc sở hữu của người dùng không có đặc quyền, tạo ra một điều kiện tranh chấp.

Tận dụng open() và Symbolic Links

Mẫu hình này cũng áp dụng cho các tệp thông thường.

Khi snap-confine xử lý hệ thống tệp gốc cơ sở, nó sử dụng open() với các cờ O_CREAT | O_TRUNC trên các đường dẫn trong thư mục scratch.

Tuy nhiên, vì open() không chỉ định cờ O_NOFOLLOW, nó có thể đi theo các liên kết tượng trưng (symbolic links) do người dùng kiểm soát trong khoảng thời gian nhạy cảm này.

Điều này tạo điều kiện thuận lợi cho các điều kiện tranh chấp có thể bị khai thác.

Khai thác bằng FUSE Filesystem

Kẻ tấn công có thể khai thác điều kiện tranh chấp này để đạt được khả năng tạo tệp tùy ý.

Sau khi /tmp/snap.rootfs_XXXXXX được tạo, kẻ tấn công mount một hệ thống tệp FUSE (FUSE filesystem) lên trên nó.

Điều này cho phép chúng unmount bất kỳ không gian tên mount riêng tư nào mà snap-confine cố gắng xây dựng, khôi phục quyền truy cập vào hệ thống tệp của kẻ tấn công khi snap-confine đạt đến giai đoạn tạo tệp.

Tạo Symbolic Link và Thay đổi Quyền Sở hữu

Kẻ tấn công sau đó có thể tạo một symlink bên trong thư mục scratch, trỏ đến một tệp đích mong muốn.

Symlink này sử dụng một tên tệp mà snap-confine dự kiến sẽ tạo (ví dụ: default256.png cho Firefox snap).

Khi snap-confine thực thi open() với các quyền cao hơn của nó, nó sẽ tạo tệp do kẻ tấn công chọn và sau đó thay đổi quyền sở hữu của nó thành root.

Kẻ tấn công nhanh chóng đặt chế độ tệp thành 0666, duy trì quyền ghi ngay cả sau khi quyền sở hữu đã thay đổi.

Đạt được Chiếm Quyền Điều Khiển Root

Do các hạn chế từ một hồ sơ AppArmor, không phải tất cả các vị trí hệ thống tệp đều có thể truy cập được, điều này hạn chế khả năng tạo tệp tùy ý.

Tuy nhiên, một đường dẫn có thể ghi là /run/udev/**, được xử lý bởi systemd-udevd.

Theo báo cáo của Qualys, exploit đặt một tệp .rules được tạo thủ công vào /run/udev/rules.d.

Điều này khiến udev thực thi một lệnh shell với đặc quyền root, cho phép kẻ tấn công đạt được chiếm quyền điều khiển hệ thống.

Ví dụ về cách một tệp .rules có thể được tạo để thực thi lệnh:

ACTION=="add", KERNEL=="sda", RUN+="/bin/bash -c 'echo pwned > /root/pwned.txt'"

Trong đoạn mã trên, lệnh /bin/bash -c 'echo pwned > /root/pwned.txt' sẽ được thực thi với đặc quyền root khi một thiết bị sda được thêm vào hệ thống, minh họa cách có thể đạt được quyền thực thi mã tùy ý.

Biện pháp Khắc phục và Cập nhật Bản vá Bảo mật

Để bảo vệ hệ thống khỏi lỗ hổng CVE-2026-8933, người dùng Ubuntu cần theo dõi và áp dụng các cập nhật bảo mật từ Canonical.

Các cập nhật này sẽ giải quyết lỗ hổng trong việc xử lý thư mục tạm thời của snap-confine và các điểm yếu đã xác định khác.

Việc cập nhật bản vá bảo mật là bước then chốt để duy trì an toàn thông tin và ngăn chặn các cuộc tấn công leo thang đặc quyền.

Hãy đảm bảo hệ thống luôn được cập nhật phiên bản mới nhất để phòng tránh các mối đe dọa tiềm tàng.

Kiểm tra và áp dụng các bản cập nhật bảo mật bằng lệnh sau:

sudo apt update
sudo apt upgrade
sudo snap refresh

Các lệnh này sẽ cập nhật các gói hệ thống và ứng dụng snap, bao gồm cả snap-confine, lên phiên bản an toàn nhất hiện có. Đây là một hành động thiết yếu trong quản lý rủi ro bảo mật.