Skip to main content

Command Palette

Search for a command to run...

Lỗ hổng leo thang đặc quyền root không để lại dấu vết trên Linux

Updated
8 min readView as Markdown
Lỗ hổng leo thang đặc quyền root không để lại dấu vết trên Linux

Vừa qua, nhóm nghiên cứu bảo mật JFrog Security Research đã công bố phân tích kỹ thuật chi tiết cùng mã khai thác proof-of-concept (PoC) hoạt động đầy đủ cho lỗ hổng leo thang đặc quyền cục bộ (LPE) mang tên "DirtyClone" (CVE-2026-43503) trong Linux kernel. Lỗ hổng này là biến thể thứ tư của họ lỗ hổng DirtyFrag được phát hiện trong chưa đầy sáu tuần, tiếp nối DirtyFrag (CVE-2026-43284, CVE-2026-43500), Fragnesia (CVE-2026-46300) và Copy Fail. Điểm đặc biệt nguy hiểm của DirtyClone là cuộc tấn công hoàn toàn im lặng: không tạo ra bất kỳ kernel log hay audit trace nào, và không để lại dấu vết trên đĩa, khiến các công cụ file-integrity monitoring truyền thống hoàn toàn mù quáng trước khai thác này. Bản vá upstream đã có từ ngày 24/05/2026, tuy nhiên nhiều bản phân phối Linux phổ biến vẫn chưa triển khai đầy đủ chuỗi bản vá, khiến các hệ thống cloud server, Kubernetes cluster và CI/CD runner vẫn đang trong vùng nguy hiểm.

![](https://cdn.hashnode.com/uploads/covers/669e7a2f2c109ecd663148bd/445143e5-e991-43a3-8904-85b57cfb09f2.png align="middle")

Thông tin chi tiết

  • Định danh lỗ hổng: CVE-2026-43503

  • Điểm CVSS(3.1): 8.8

  • Mức độ nghiêm trọng: HIGH – Nghiêm trọng cao

  • Mô tả: CVE-2026-43503 là lỗ hổng leo thang đặc quyền trong networking stack của Linux kernel, cụ thể là trong cách xử lý socket buffer fragments (skb) khi tham chiếu đến bộ nhớ page cache chia sẻ. Lỗ hổng phát sinh do hàm __pskb_copy_fclone()skb_shift() không propagate đúng cách flag SKBFL_SHARED_FRAG khi chuyển fragment giữa các packet. Flag này đóng vai trò đánh dấu rằng một packet fragment đang tham chiếu đến bộ nhớ file-backed (page cache), khi flag bị mất, các subsystem thực hiện cryptographic transformation in-place (như XFRM/IPsec) xử lý bộ nhớ đó như thể nó là writable network buffer thông thường, dẫn đến ghi trực tiếp vào page cache của file read-only. Kẻ tấn công khai thác điều này bằng cách: tải một SUID binary đặc quyền (ví dụ: /usr/bin/su) vào bộ nhớ, gắn các memory page đó vào một network packet, sau đó ép kernel clone packet này qua một IPsec tunnel loopback do kẻ tấn công kiểm soát. Bước giải mã IPsec (in-place decryption) ghi đè các byte kiểm tra xác thực trong binary bằng dữ liệu do kẻ tấn công chọn. Khi SUID binary bị thao túng này được thực thi, kẻ tấn công giành được root shell. Vì chỉ có bản sao in-memory (page cache) bị sửa đổi, không có gì được ghi xuống đĩa, on-disk binary vẫn nguyên vẹn và các công cụ file-integrity monitoring sẽ báo cáo binary là sạch.

  • Phiên bản bị ảnh hưởng: Linux kernel 6.1 đến 6.12 (được xác nhận); các LTS branch 5.15 và 5.10 đang được điều tra thêm. Một hệ thống chỉ được bảo vệ đầy đủ khi áp dụng toàn bộ chuỗi bản vá của họ DirtyFrag, vá CVE-2026-43284/CVE-2026-43500 mà thiếu CVE-2026-46300 và CVE-2026-43503 vẫn còn vulnerable với các bypass cụ thể.

Bản phân phối Phiên bản kernel đã vá
Ubuntu 26.04 LTS 7.0.0-22.22 trở lên
Ubuntu 25.10 6.17.0-35.35 trở lên
Ubuntu 24.04 LTS 6.8.0-124.124 trở lên
Ubuntu 22.04 LTS 5.15.0-181.191 trở lên
  • Điều kiện khai thác: Kẻ tấn công cần quyền CAP_NET_ADMIN. Trên Debian và Fedora, quyền này được cài đặt mặc định, bất kỳ người dùng nào đều có thể tự cấp quyền này thông qua unprivileged user namespaces (unshare -Urn). Ubuntu 24.04 trở lên có AppArmor namespace confinement giúp tăng độ khó nhưng không loại trừ hoàn toàn vector tấn công.

![](https://research.jfrog.com/img/RealTimePostImage/post/dirtyclone-cve-2026-43503/image1.png align="middle")

Tổng quát quá trình khai thác CVE-2026-43503

Quá trình khai thác có thể được chia thành các giai đoạn sau:

Bước 1: Thu thập thông tin (Reconnaissance)

  • Mục tiêu: Xác định hệ thống mục tiêu chạy Linux kernel bị ảnh hưởng với unprivileged user namespaces được bật.

  • Hành động: Kẻ tấn công đã có quyền truy cập cục bộ (local access) qua tài khoản thấp quyền, SSH, hoặc web shell từ lỗ hổng khác. Kiểm tra kernel version (uname -r) và trạng thái unprivileged user namespaces (cat /proc/sys/kernel/unprivileged_userns_clone).

Bước 2: Thiết lập Môi trường Mạng (Network Environment Setup)

  • Sử dụng unprivileged user namespaces (unshare -Urn) để tạo network namespace mới với quyền CAP_NET_ADMIN.

  • Cấu hình IPsec tunnel loopback do kẻ tấn công kiểm soát trong namespace mới, do đây là điều kiện cần để kích hoạt in-place decryption path.

Bước 3: Tải Binary Đặc quyền vào Page Cache (Page Cache Loading)

  • Đọc một SUID-root binary (ví dụ: /usr/bin/su, /usr/bin/sudo) để kéo nội dung vào kernel page cache (bộ nhớ in-memory của file).

  • Gắn các page cache memory này vào một network packet socket buffer (skb), tận dụng tính năng zero-copy của kernel, không cần copy dữ liệu.

Bước 4: Kích hoạt Lỗi Flag (Flag Drop via Packet Clone)

  • Clone packet qua path sử dụng __pskb_copy_fclone() hoặc skb_shift().

  • Do lỗi không propagate flag SKBFL_SHARED_FRAG, packet clone mất đi thông tin rằng nó đang tham chiếu đến file-backed page cache.

  • IPsec subsystem nhận packet clone và coi bộ nhớ đó là writable network buffer thông thường.

Bước 5: Ghi Đè Page Cache (In-Place Decryption Overwrite)

  • IPsec decryption thực hiện in-place transformation, ghi attacker-controlled bytes trực tiếp vào page cache của SUID binary.

  • Cụ thể, ghi đè các byte kiểm tra xác thực (authentication checks) trong code của binary bằng dữ liệu bypass.

  • Không có gì được ghi xuống đĩa — binary trên disk vẫn nguyên vẹn. File-integrity monitoring báo cáo clean.

Bước 6: Leo thang Đặc quyền (Privilege Escalation)

  • Thực thi SUID binary đã bị thao túng trong page cache.

  • Binary thực thi với quyền root (vì là SUID), nhưng logic kiểm tra xác thực đã bị bypass → kẻ tấn công nhận được root shell.

  • Toàn bộ quá trình không tạo ra kernel log, audit trace, hay dấu vết trên đĩa.

Bước 7: Hậu khai thác (Post-Exploitation)

  • Cài đặt backdoor hoặc persistence mechanism với quyền root.

  • Trong môi trường containerized: thoát khỏi container isolation và compromise host system.

  • Lateral movement vào các node khác trong Kubernetes cluster hoặc mạng nội bộ.

  • Đánh cắp secrets, API key, credential từ môi trường runtime.

  • Vì tấn công không để lại dấu vết, compromise có thể tồn tại lâu dài mà không bị phát hiện bởi các công cụ giám sát truyền thống.

![](https://research.jfrog.com/img/RealTimePostImage/post/dirtyclone-cve-2026-43503/image3.png align="middle")

Khuyến nghị & Khắc phục

Đội ngũ FPT Threat Intelligence khuyến nghị người dùng và quản trị viên cần cân nhắc thực hiện ngay các hành động sau:

  • Cập nhật bản vá — áp dụng toàn bộ chuỗi DirtyFrag: Cài đặt ngay bản cập nhật kernel từ kênh bảo mật chính thức.

  • Biện pháp tạm thời (nếu chưa vá kịp): Vô hiệu hóa unprivileged user namespaces để loại bỏ vector tấn công chính, tuy nhiên biện pháp này có thể ảnh hưởng tới container runtime, sandbox tools, và build systems phụ thuộc vào user namespaces, cần kiểm tra tác động trước khi triển khai trên production:

  sysctl -w kernel.unprivileged_userns_clone=0
  echo "kernel.unprivileged_userns_clone=0" >> /etc/sysctl.conf
  • Ưu tiên môi trường có nguy cơ cao: DirtyClone đặc biệt nguy hiểm trong các môi trường mà isolation là ranh giới bảo mật cốt lõi. Ưu tiên vá ngay:

    • Multi-tenant cloud server và shared hosting.

    • Kubernetes worker node và container host.

    • CI/CD runner thực thi untrusted code.

    • Dev server đa người dùng.

  • Giám sát hành vi (Behavioral Detection): Vì DirtyClone không để lại dấu vết trên đĩa và không tạo kernel log, file-integrity monitoring truyền thống hoàn toàn không hiệu quả. Chuyển sang behavioral detection:

    • Giám sát tiến trình đột ngột chạy với UID 0 từ context người dùng thấp quyền.

    • Phát hiện SUID binary (/usr/bin/su, /usr/bin/sudo) được thực thi theo cách bất thường.

    • Giám sát network namespace creation (unshare -Urn) từ tài khoản không có đặc quyền.

    • Phát hiện IPsec/XFRM configuration changes bất thường trong network namespace.

    • Kernel OOPS hoặc panic liên quan đến __pskb_copy_fclone(), skb_shift(), hoặc XFRM path.

  • Kiểm tra dấu hiệu xâm phạm (nếu phát hiện compromise): Do tấn công không để lại dấu vết trên đĩa, forensic analysis cần tập trung vào: memory forensics, process history, shell history, SSH auth log, và các thay đổi bất thường trong scheduled task, service, hoặc SSH authorized_keys. Treat hệ thống như bị compromise hoàn toàn nếu có bằng chứng khai thác.

Tham khảo

More from this blog

F

FPT IS Security

891 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.