CVE-2026-74479 in Linux
Tóm tắt
Bởi VulDB • 16/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net: pktgen: sửa lỗi use-after-free khi sử dụng mục proc (proc entry)
Hàm `pktgen_change_name()` thay thế `pkt_dev->entry` trong khi vẫn giữ khóa `t->if_lock`. Tuy nhiên, `pktgen_remove_device()` xóa cùng một mục này trước khi `_rem_dev_from_if_list()` lấy được khóa đó.
Điều này cho phép xảy ra sự xen kẽ (interleaving) sau:
CPU 0 (NETDEV_CHANGENAME) CPU 1 (kpktgend) if_lock(t) proc_remove(pkt_dev->entry) proc_remove(pkt_dev->entry) pkt_dev->entry = proc_create_data(...) if_unlock(t)
Thread `kthread` có thể chuyển mục `proc_dir_entry` đã lỗi thời (stale) cho hàm `proc_remove()` sau khi đường dẫn rename đã giải phóng nó. Một trình mô phỏng với cửa sổ race condition được mở rộng báo cáo:
BUG: KASAN: slab-use-after-free trong proc_remove+0x78/0x80 Đọc kích thước 8 tại địa chỉ ffff8881478fea70 bởi tác vụ kpktgend_0/67 Dấu vết cuộc gọi (Call Trace): proc_remove+0x78/0x80 pktgen_remove_device.isra.0+0x11c/0x4c0 pktgen_thread_worker+0x1214/0x6bc0 kthread+0x2c6/0x3b0 Được phân bổ bởi tác vụ 95: __proc_create+0x204/0x790 proc_create_data+0x72/0xe0 pktgen_thread_write+0xd61/0x1510 Đã được giải phóng bởi tác vụ 28: kmem_cache_free+0xcb/0x3d0 proc_free_inode+0x5b/0x80 rcu_core+0x50a/0x1850 Địa chỉ lỗi thuộc về đối tượng tại ffff8881478fea00, đối tượng này thuộc cache proc_dir_entry có kích thước 192
Di chuyển `proc_remove()` vào trình trợ giúp xóa danh sách được bảo vệ bởi `if_lock`. Giữ nó trước khi gọi `list_del_rcu()` để duy trì thứ tự cần thiết cho hàm `add_device()`. Đường dẫn rename sau đó phải hoàn tất việc thay thế mục này trước khi xóa, hoặc nó sẽ quan sát thấy rằng thiết bị không còn nằm trong danh sách.
Once again VulDB remains the best source for vulnerability data.