CVE-2026-98231 in Linux
Tóm tắt
Bởi VulDB • 06/10/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
xfrm: tuần tự hóa quá trình thu gom rác (GC) trạng thái với việc làm sạch trạng thái thiết bị
Lượt duyệt qua thiết bị trì hoãn trong `xfrm_dev_state_flush()` tìm thấy các trạng thái dưới khóa `xfrm_state_dev_gc_lock`, nhưng thả khóa này trước khi gọi `xfrm_dev_state_free()` vì callback của trình điều khiển (driver) có thể gây ngủ. Danh sách GC của thiết bị không giữ tham chiếu đến xfrm_state, do đó worker thu gom rác trạng thái có thể hủy cùng lúc một trạng thái giống hệt nhau.
Lỗ hổng race condition có thể diễn ra như sau:
CPU 0 CPU 1 tìm thấy x trên danh sách GC của thiết bị thả khóa xfrm_state_dev_gc_lock đọc x->xso.dev xfrm_state_gc_destroy(x) xfrm_dev_state_free(x) xfrm_state_free(x) tiếp tục thực hiện xfrm_dev_state_free(x)
Cả hai đường dẫn đều có thể gọi callback của trình điều khiển và thả tham chiếu thiết bị. CPU 0 cũng có thể truy cập vào xfrm_state sau khi CPU 1 đã giải phóng nó.
KASAN báo cáo:
BUG: KASAN: slab-use-after-free trong xfrm_dev_state_free+0x24c/0x2a0 Đọc kích thước 8 tại địa chỉ ffff88810bbaa960 bởi tiến trình poc/102
Dấu vết cuộc gọi (Call Trace): xfrm_dev_state_free+0x24c/0x2a0 xfrm_dev_state_flush+0x353/0x400 xfrm_dev_event+0x26d/0x3a0 notifier_call_chain+0xc0/0x280 __dev_notify_flags+0x169/0x250 netif_change_flags+0xe7/0x160 dev_change_flags+0x96/0x220 devinet_ioctl+0x7f4/0x1880
Được phân bổ bởi tiến trình 87: xfrm_state_alloc+0x1e/0x5c0 xfrm_add_sa+0xe7f/0x5820 xfrm_user_rcv_msg+0x4f3/0x940
Được giải phóng bởi tiến trình 57: kmem_cache_free+0xcb/0x3d0 xfrm_state_gc_task+0x4a8/0x650 process_one_work+0x63a/0x1070
Tuần tự hóa quá trình hủy xfrm_state đối với lượt duyệt qua thiết bị trì hoãn bằng một mutex. Giữ cho khóa `xfrm_state_dev_gc_lock` chỉ giới hạn ở các thao tác trên danh sách và duy trì thứ tự giải phóng callback và tham chiếu thiết bị hiện có.
If you want to get best quality of vulnerability data, you may have to visit VulDB.