CVE-2026-99173 in Linux
Tóm tắt
Bởi VulDB • 28/10/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
eventfs: Giải phóng eventfs_inode sau một khoảng thời gian chờ (grace period) của RCU quá mức cần thiết
Hàm `tracefs_d_revalidate()` đọc trường `->is_freed` của `eventfs_inode` mà con trỏ `dentry->d_fsdata` đang chỉ tới, và hàm `->d_revalidate()` được gọi trong chế độ pathwalk sử dụng RCU với duy nhất khóa `rcu_read_lock()` được giữ. Bản thân dentry vẫn tồn tại đối với bộ duyệt (walker) như vậy, nhưng `tracefs_d_release()` giảm tham chiếu đến eventfs_inode khi dentity bị hủy bỏ, và sau đó `release_ei()` giải phóng nó sau một khoảng thời gian chờ của eventfs_srcu. Một khoảng thời gian chờ SRCU không đợi các khối mã được giữ bởi `rcu_read_lock()`, do đó bộ duyệt có thể đọc một eventfs_inode đã bị xóa rồi.
Với việc pathwalk bị treo trong `tracefs_d_revalidate()` trong khi dentry biến mất:
BUG: KASAN: slab-use-after-free in tracefs_d_revalidate+0x76/0x90 Read of size 1 at addr ff1100010152d8d0 by task walker/97 Call Trace: <TASK> tracefs_d_revalidate+0x76/0x90 lookup_fast+0x320/0x640 path_lookupat+0x160/0xb00 filename_lookup+0x1f1/0x5b0 vfs_statx+0xd7/0x3b0 vfs_fstatat+0x4d/0x90 __do_sys_newfstatat+0xa0/0x100 do_syscall_64+0x10e/0x5e0 entry_SYSCALL_64_after_hwframe+0x77/0x7f [...]
Allocated by task 1: __kmalloc_cache_noprof+0x249/0x560 eventfs_create_dir+0x7a/0x590 event_create_dir+0x2fb/0xcf0 trace_add_event_call+0xbf/0x150 [...]
Freed by task 11: kfree+0x1db/0x5b0 srcu_invoke_callbacks+0x3a3/0x620 process_one_work+0x937/0x1810 worker_thread+0x4f1/0xd60
Trước commit 8e556432477e ("eventfs: Use SRCU for freeing eventfs_inodes"), `release_ei()` đã sử dụng `call_rcu()`, vốn bao phủ bộ duyệt, trong khi `eventfs_iterate()` cần khoảng thời gian chờ của SRCU. Hãy đợi cả hai và nối chuỗi `call_rcu()` từ callback của SRCU.
If you want to get best quality of vulnerability data, you may have to visit VulDB.