- Researcher 0xkato báo cáo lỗi out-of-bounds write trong driver ntfs3 khi xử lý WOF compressed data — chỉ cần mount một file ảnh NTFS độc hại rồi pread() là đủ trigger.
- Patch đã được maintainer accept và merge cho Linux 7.1.
TL;DR
Ngày 29/03/2026, researcher 0xkato gửi patch [PATCH] ntfs3: fix OOB write in attr_wof_frame_info() lên ntfs3 mailing list. Lỗi nằm ở code path đọc Windows Overlay Filter (WOF) compressed data trong driver ntfs3 — một NTFS image được craft cẩn thận có thể khiến kernel ghi quá biên slab chỉ bằng một lệnh pread(). Maintainer Konstantin Komarov (Paragon Software) đã accept và merge patch vào batch bugfix cho Linux 7.1.
Chuyện gì vừa xảy ra
0xkato phát hiện lỗi slab-out-of-bounds write (CWE-787) trong hàm attr_wof_frame_info() thuộc fs/ntfs3/attrib.c. Đây là hàm đọc metadata từng frame nén của stream phụ :WofCompressedData — cơ chế nén file Windows 10+ sử dụng LZX / XPRESS Huffman. Patch được gửi kèm mô tả đầy đủ root cause và một fix một dòng, nay đã vào ngăn xếp bugfix cho cửa sổ merge của Linux 7.1.
Vì sao quan trọng
ntfs3 là driver NTFS mặc định trong kernel từ 5.15 (2021), thay thế driver legacy ntfs cho mục đích đọc-ghi. Bất kỳ hệ thống Linux nào mount NTFS image không tin tưởng đều có risk: forensic analyst, malware researcher, desktop tự auto-mount USB, CI runner nhận disk image do user upload, Steam Deck cắm ổ Windows. Một OOB write thường nguy hiểm hơn OOB read — kết hợp với primitive khác có thể dẫn tới local privilege escalation.
Technical facts
Trong attr_wof_frame_info(), hai giá trị được tính cho mỗi frame request:
from = vbo[i] & ~(u64)(PAGE_SIZE - 1);
to = min(from + PAGE_SIZE, wof_size);Một NTFS image độc hại set WofCompressedData.nres.data_size = 0xfff nhưng vẫn cho phép request frame 1024 (offset 0x400000). Kết quả: from = 0x1000, to = 0xfff. Vì cả hai đều kiểu u64, phép (to - from) underflow về 0xffffffffffffffff, rồi được đẩy thẳng vào ntfs_read_write_run() làm memcpy ghi tràn một buffer kích thước một trang.
| Property | Value |
|---|---|
| Bug class | slab-out-of-bounds write (CWE-787) |
| Hàm bị ảnh hưởng | attr_wof_frame_info() |
| Driver | ntfs3 (in-tree, từ Linux 5.15) |
| Trigger | pread() trên file nén WOF trong image malicious |
| Primitive | Kernel heap write, độ dài do attacker chọn |
| Downstream | Slab OOB, use-after-free, panic, tiềm năng LPE |
| Submitter | 0xkato <0xkkato@gmail.com> |
| Maintainer ack | Konstantin Komarov (Paragon Software) |
Bản vá trông thế nào
Fix là một sanity check: nếu page offset của frame nằm ngoài stream size thì mark inode là bad và return -EINVAL thay vì tiếp tục.
if (from >= wof_size) {
_ntfs_bad_inode(&ni->vfs_inode);
err = -EINVAL;
goto out1;
}Gọn, không hot-path impact. Đúng tinh thần fix filesystem — validate trước khi tin metadata từ disk.
So sánh với các lỗi ntfs3 gần đây
- CVE-2025-71265 — DoS infinite loop trong
attr_load_runs_range(). Chỉ hang kernel, không corrupt bộ nhớ. - Slab-OOB read trong
run_unpack(2022) — leak / crash, nhưng là read, không phải write. - Patch lần này là write primitive với độ dài do attacker chi phối — chất lượng exploit cao hơn hẳn các issue trước.
Ai cần quan tâm
- Desktop Linux user cắm USB NTFS bừa — GNOME/KDE auto-mount qua udisks là đủ cho attack surface.
- Forensic / DFIR mount image evidence — cần dùng kernel đã vá hoặc mount read-only qua ntfs-3g (FUSE, không dính bug này).
- Sandbox / VM escape research — guest cung cấp virtio-blk với NTFS crafted có thể tấn công host kernel.
- CI/CD nhận disk image user-supplied (hiếm nhưng tồn tại).
- Steam Deck và handheld Linux dùng chung ổ game với Windows.
Limitations & pricing
Chưa có CVE ID tại thời điểm patch được accept — Linux kernel CVE team thường gán CVE sau khi commit merge vào mainline. Không có public PoC; mô tả trong patch đủ chi tiết nhưng không kèm disk image mẫu. Fix sẽ theo Linux 7.1 và được backport về các nhánh stable 6.x qua quy trình AUTOSEL thông thường — check changelog kernel của distro trước khi yên tâm.
Timeline
- 29/03/2026 — 0xkato gửi patch lên
ntfs3.lists.linux.devkèm phân tích primitive và crafted metadata layout. - Đầu tháng 4/2026 — Konstantin Komarov review và pick vào nhánh bugfix của Paragon cho cửa sổ merge 7.1.
- Tháng 4/2026 — Patch vào mainline qua NTFS3 bugfix pull. Cùng thời điểm, driver NTFS mới (từng có tên ntfsplus) cũng được merge song song, nhưng ntfs3 vẫn là default và vẫn nhận fix.
- 0xkato công bố kết quả merge trên X — một case study đáng chú ý cho security researcher muốn bước chân vào kernel disclosure.
Next steps cho bạn
- Theo dõi distro advisory (Debian DSA, Ubuntu USN, Fedora FEDORA-*) cho kernel 6.x stable update.
- Nếu auto-mount USB NTFS trên máy dùng chung, cân nhắc tạm chuyển sang driver ntfs-3g FUSE (không dính bug này) hoặc disable auto-mount.
- Admin forensic lab: mount mọi image NTFS bằng ntfs-3g hoặc loop read-only đến khi kernel host được vá.
Nguồn: lore.kernel.org — patch gốc, @0xkato (announcement), Spinics mirror, Phoronix — NTFS3 fixes for 7.1, Raymond Chen — WofCompressedData.
