TL;DR

DirtyFree là kỹ thuật khai thác kernel Linux mới được trình bày tại NDSS 2026 bởi Yoochan Lee, Hyuk Kwon và Thorsten Holz (Max Planck Institute for Security and Privacy + Theori). Thay vì cần đủ 3 primitive kinh điển của Data-Oriented Programming (heap leak + arbitrary read + arbitrary write), DirtyFree chỉ cần một primitive duy nhất: arbitrary free — buộc kernel deallocate một object do attacker chọn. Nhóm tác giả đã catalogue 14 arbitrary-free object trải đều các kmalloc cache phổ thông, weaponize 24 CVE thật (chủ yếu nf_tables, overlayfs giai đoạn 2023–2024), và đề xuất 2 mitigation với overhead chỉ 0.28%−0.55%.

What's new

Data-Oriented Programming (DOP) là chiêu khai thác không bẻ control flow nên đi vòng được mọi cơ chế CFI/kCFI. Vấn đề: DOP cổ điển trong kernel cực phiền — phải xích lần lượt rò địa chỉ heap, đọc tuỳ ý, ghi tuỳ ý, mỗi bước lại yêu cầu chọn được object phù hợp. Nhiều bug có khả năng làm hỏng heap nhưng không thoả đủ ba điều kiện thì xem như không exploit được.

DirtyFree đảo ngược bài toán: thay vì xây chuỗi 3 bước, tận dụng một kfree trên con trỏ do attacker kiểm soát (hoặc partial overwrite con trỏ đó) để giải phóng một object có giá trị bảo mật. Sau khi slot bị free, ta nhồi vào đó một bản sao cred đặc quyền — y hệt ý tưởng DirtyCred nhưng tổng quát hoá hẳn lên thành phương pháp hệ thống.

Why it matters

Hệ quả thực tế: rất nhiều CVE từng bị xếp loại "khó/không khai thác" (chỉ có double-free hoặc UAF nông) giờ trở thành ứng viên LPE (local privilege escalation) ngay trên distro kernel đã bật kCFI. DirtyFree không yêu cầu read/write tuỳ ý, không yêu cầu rò KASLR theo nghĩa cổ điển — đây là sự thay đổi đáng kể về exploitability bar của một class lỗi rất phổ biến.

Ở chiều ngược lại, đây là tài liệu vàng cho kernel maintainer: 14 struct được liệt kê là chỉ dấu rõ ràng cần siết chặt logic free và memory tagging.

Technical facts

  • Primitive yêu cầu: arbitrary free duy nhất (có thể đến từ partial overwrite con trỏ).
  • Đối tượng tấn công cuối: struct cred (credential) — leo quyền lên root.
  • Threat model: kernel có kCFI bật; DirtyFree là DOP nên không bị CFI cản.
  • Số object tìm được: 14, phủ hầu hết general-purpose kmalloc cache.
  • Validation thực tế: 24 CVE thật được khai thác end-to-end, gồm CVE-2023-3390, CVE-2023-4004, CVE-2023-5345, CVE-2023-6111, CVE-2024-26581, CVE-2024-53141.
  • Artifact: repo MPI-SysSec/DirtyFree với thư mục exploits/, afo/ và môi trường QEMU PoC.

14 arbitrary-free object đáng chú ý

ObjectCache / vai trò
landlock_hierarchy, landlock_rulesetLandlock LSM
async_poll, poll_listI/O polling
perf_event_pmu_context, callchain_cpus_entriesperf subsystem
pipe_inode_infopipe
mnt_idmapVFS / mount
msg_queue, msg_msg, msg_msgseg, sem_arraySysV IPC
io_ring_ctxio_uring
simple_xattrextended attributes

Comparison

Kỹ thuậtPrimitive cầnPhạm viVượt kCFI?
DOP cổ điểnLeak + arb-read + arb-writeHẹp, ràng buộc object
Dirty Pipe (CVE-2022-0847)Bug cụ thể trong pipe1 lỗi duy nhất
DirtyCred (CCS 2022)Double-free / UAF credHand-picked object
DirtyFree (NDSS 2026)Arbitrary free duy nhất14 object, hệ thống hoá

Use cases

  • LPE trên distro hardened: bypass kCFI để leo từ user thường lên root mà không cần arb-read/write.
  • Container escape: bất kỳ đường nào tới corrupt cred đều thoát namespace.
  • Hồi sinh bug "không exploit được": double-free / UAF nông trước đây bị bỏ qua nay là ứng viên LPE.
  • Defensive audit: 14 struct được công bố là danh sách ưu tiên cho hardening review.

Limitations & defenses

DirtyFree không phải universal exploit — bug phải có khả năng kiểm soát đối số cho kfree/kvfree (toàn phần hoặc partial overwrite). Lỗi info-leak thuần không áp dụng.

Nhóm tác giả đề xuất hai mitigation:

  1. Validate đường dẫn free đối với các object nhạy cảm về bảo mật, chặn việc free chúng từ context attacker kiểm soát.
  2. Hardening layout slab phá bước chèn cred giả vào slot vừa được free.

Overhead báo cáo: 0.28%−0.55% trên benchmark kernel chuẩn — gần như nằm trong noise, đủ rẻ để cân nhắc upstream.

What's next

Repo artifact MPI-SysSec/DirtyFree đã public với label "educational and defensive security research only". Hai hướng tiếp theo đáng theo dõi: (1) các mitigation có được upstream vào mainline kernel hay không, và (2) catalogue 14 object có mở rộng khi cộng đồng tìm thêm các struct dạng tương tự.

Với pentester và kernel security researcher, DirtyFree là công cụ phải đọc trong 2026 — nó định nghĩa lại ngưỡng "có exploit được không" cho cả một lớp lỗi nf_tables/io_uring/overlayfs đang xuất hiện liên tục.

Nguồn: paper PDF, NDSS 2026 abstract, artifact repo.