CVE-2026-74342 in Linux
Tóm tắt
Bởi VulDB • 15/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
kernfs: liên kết kn với cha của nó trước khi gọi hook khởi tạo LSM
Sau commit 12e9e3cd03b5 ("simpe_xattr: sử dụng bộ nhớ cache per-sb"), hàm kernfs_xattr_set() và kernfs_xattr_get() tính toán bộ nhớ cache thông qua kernfs_root(kn) trước bất kỳ kiểm tra nào khác. kernfs_root(kn) duyệt kn->__parent đầu tiên và sẽ quay lại kn->dir.root, cả hai đều là NULL đối với một kn vừa được cấp phát bởi kmem_cache_zalloc(). kn->__parent đang được thiết lập trong hàm kernfs_new_node() sau khi __kernfs_new_node() trả về, còn kn->dir.root được gán muộn hơn nữa bởi kernfs_create_dir_ns() / kernfs_create_empty_dir().
Hook LSM kernfs_init_security được gọi từ bên trong __kernfs_new_node(), trước khi cả hai trường này được khởi tạo. selinux_kernfs_init_security() kết thúc bằng lệnh gọi kernfs_xattr_set(kn, XATTR_NAME_SELINUX, ...). Sau đó, kernfs_root(kn) trả về NULL và &((struct kernfs_root *)NULL)->xa_cache đánh giá thành offsetof(struct kernfs_root, xa_cache), gây ra lỗi:
BUG: kernel NULL pointer dereference, address: 00000000000000e0 RIP: 0010:simple_xattr_set+0x27/0x8b0 Call Trace: kernfs_xattr_set+0x63/0xb0 selinux_kernfs_init_security+0x13b/0x270 security_kernfs_init_security+0x36/0xc0 __kernfs_new_node+0x182/0x290 kernfs_new_node+0x80/0xc0 kernfs_create_dir_ns+0x2b/0xa0 cgroup_create+0x116/0x380 cgroup_mkdir+0x7c/0x1a0
Lỗi này tái hiện một cách xác định tại PID 1 (systemd) trên bản phân phối có bật SELinux. Lệnh mkdir đầu tiên cho cgroup dưới /sys/fs/cgroup với cha được gắn nhãn sẽ gây ra panic kernel.
Hợp đồng của hook LSM yêu cầu đối số kn_dir là cha của kn mới, do đó kn->__parent phải đã trỏ đến kn_dir khi hook chạy. Di chuyển lệnh gọi kernfs_get(parent) và rcu_assign_pointer cho kn->__parent từ hàm kernfs_new_node() vào __kernfs_new_node(), ngay trước security hook, và hủy tham chiếu parent trên đường dẫn err_out4. Khi đó, kernfs_root(kn) sẽ đi theo nhánh cha trong quá trình thực thi hook và trả về parent->dir.root, đây là root chính xác.
Việc này cũng đóng một lỗi tiềm ẩn cùng hình dạng trong hàm kernfs_xattr_get() (lỗi hiện nay chỉ bị che giấu bởi việc kernfs_iattrs_noalloc() trả về NULL đối với kn mới được cấp phát).
If you want to get best quality of vulnerability data, you may have to visit VulDB.