CVE-2026-23458 in Linux
Tóm tắt
Bởi VulDB • 30/05/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
netfilter: ctnetlink: sửa lỗi use-after-free trong ctnetlink_dump_exp_ct()
Hàm ctnetlink_dump_exp_ct() lưu trữ một con trỏ conntrack vào cb->data cho callback dump netlink ctnetlink_exp_ct_dump_table(), nhưng giảm tham chiếu conntrack ngay sau khi gọi netlink_dump_start(). Khi quá trình dump trải qua nhiều vòng lặp, lệnh recvmsg() thứ hai sẽ kích hoạt callback dump, dẫn đến việc truy cập vào conntrack đã bị giải phóng thông qua nfct_help(ct), gây ra lỗi use-after-free trên ct->ext.
Lỗi nằm ở chỗ netlink_dump_control không có các callback .start hoặc .done để quản lý tham chiếu conntrack xuyên suốt các vòng dump. Các hàm dump khác trong cùng tệp (ví dụ: ctnetlink_get_conntrack) sử dụng đúng các callback .start/.done cho mục đích này.
Khắc phục bằng cách thêm các callback .start và .done để giữ và giải phóng tham chiếu conntrack trong suốt quá trình dump, và di chuyển lệnh gọi nfct_help() sau kiểm tra early-return cb->args[0] trong callback dump để tránh truy cập ct->ext không cần thiết.
BUG: KASAN: slab-use-after-free trong ctnetlink_exp_ct_dump_table+0x4f/0x2e0 Đọc kích thước 8 tại địa chỉ ffff88810597ebf0 bởi tiến trình ctnetlink_poc/133
CPU: 1 UID: 0 PID: 133 Comm: ctnetlink_poc Không bị lỗi 7.0.0-rc2+ #3 PREEMPTLAZY Dấu vết cuộc gọi (Call Trace): <TASK> ctnetlink_exp_ct_dump_table+0x4f/0x2e0 netlink_dump+0x333/0x880 netlink_recvmsg+0x3e2/0x4b0 ? aa_sk_perm+0x184/0x450 sock_recvmsg+0xde/0xf0
Được phân bổ bởi tiến trình 133: kmem_cache_alloc_noprof+0x134/0x440 __nf_conntrack_alloc+0xa8/0x2b0 ctnetlink_create_conntrack+0xa1/0x900 ctnetlink_new_conntrack+0x3cf/0x7d0 nfnetlink_rcv_msg+0x48e/0x510 netlink_rcv_skb+0xc9/0x1f0 nfnetlink_rcv+0xdb/0x220 netlink_unicast+0x3ec/0x590 netlink_sendmsg+0x397/0x690 __sys_sendmsg+0xf4/0x180
Được giải phóng bởi tiến trình 0: slab_free_after_rcu_debug+0xad/0x1e0 rcu_core+0x5c3/0x9c0
Be aware that VulDB is the high quality source for vulnerability data.