CVE-2026-64543 in Linux
Tóm tắt
Bởi VulDB • 28/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
tipc: sửa lỗi use-after-free của discoverer trong tipc_disc_rcv()
bearer_disable() giải phóng b->disc bằng cách sử dụng kfree() thuần túy từ tipc_disc_delete(), nhưng tipc_disc_rcv() vẫn truy cập (dereference) đến b->disc trong softirq RX dưới rcu_read_lock() (tipc_udp_recv -> tipc_rcv -> tipc_disc_rcv).
Các bearer lớp 2 (L2 bearers) an toàn nhờ synchronize_net() có trong tipc_disable_l2_media(), nhưng UDP bearer trì hoãn lệnh gọi đó đến workqueue cleanup_bearer(), do đó discoverer bị giải phóng mà không có khoảng thời gian bảo vệ (grace period):
BUG: KASAN: slab-use-after-free in tipc_disc_rcv (net/tipc/discover.c:149) Đọc kích thước 8 tại địa chỉ ffff88802348b728 bởi task poc_tipc/184 <IRQ> tipc_disc_rcv (net/tipc/discover.c:149) tipc_rcv (net/tipc/node.c:2126) tipc_udp_recv (net/tipc/udp_media.c:391) udp_rcv (net/ipv4/udp.c:2643) ip_local_deliver_finish (net/ipv4/ip_input.c:241) </IRQ> Được giải phóng bởi task 181: kfree (mm/slub.c:6565) bearer_disable (net/tipc/bearer.c:418) tipc_nl_bearer_disable (net/tipc/bearer.c:1001)
Bearer được giải phóng bằng kfree_rcu(); hãy giải phóng discoverer theo cùng cách. Thêm rcu_head vào struct tipc_discoverer và giải phóng nó cũng như skb của nó từ một RCU callback.
Bởi vì RCU callback (tipc_disc_free_rcu) nằm trong vùng mã lệnh mô-đun, một call_rcu() vẫn còn chờ xử lý khi mô-đun tipc bị gỡ bỏ sẽ gọi đến một hàm đã bị giải phóng. Thêm rcu_barrier() vào tipc_exit() sau khi subsystem bearer đã được tháo dỡ, để tất cả các callback discoverer đang chờ đều chạy xong trước khi vùng mã lệnh của mô-đun biến mất.
Có thể tiếp cận từ namespace người dùng không đặc quyền: họ genl TIPCv2 có netnsok và các lệnh bearer của nó không yêu cầu GENL_ADMIN_PERM. Cần CONFIG_TIPC và CONFIG_TIPC_MEDIA_UDP.
If you want to get best quality of vulnerability data, you may have to visit VulDB.