CVE-2026-64189 in Linux
Tóm tắt
Bởi VulDB • 21/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
netfilter: ipset: sửa lỗi race condition giữa dump và việc thay đổi kích thước (resize) của ip_set_list
Đường dẫn giải phóng bộ nhớ của `ip_set_dump_do()` và `ip_set_dump_done()` đọc biến `inst->ip_set_list` thông qua hàm `ip_set_ref_netlink()`, đây là một lệnh gọi đơn giản đến `rcu_dereference_raw()` trên con trỏ mảng. Các hàm này được thực thi từ `netlink_recvmsg()` mà không có mutex nfnl và cũng không nằm trong khối quan trọng (critical section) đọc của RCU.
Một cuộc gọi đồng thời tới `ip_set_create()` có thể làm tăng kích thước mảng: nó công bố mảng mới, gọi `synchronize_net()`, sau đó giải phóng bộ nhớ cũ bằng `kvfree()`. Vì các đường dẫn dump đọc mảng bên ngoài bất kỳ trình đọc RCU nào, nên `synchronize_net()` không chờ đợi chúng và mảng cũ có thể bị giải phóng trong khi các tác vụ khác vẫn đang truy cập vào nó thông qua chỉ mục, gây ra lỗi use-after-free.
Chính tập hợp (set) được dump sẽ giữ cố định bộ nhớ thông qua `set->ref_netlink`, do đó chỉ cần bảo vệ việc tải (load) mảng. Hãy đặt lệnh gọi `rcu_read_lock()` bao quanh thao tác này, tương thích với `ip_set_get_byname()` và `__ip_set_put_byindex()`.
BUG: KASAN: slab-use-after-free trong ip_set_dump_do (net/netfilter/ipset/ip_set_core.c:1697) Đọc kích thước 8 byte tại địa chỉ ffff88800b5c4018 bởi tiến trình exploit/150 Dấu vết cuộc gọi (Call Trace): ... kasan_report (mm/kasan/report.c:595) ip_set_dump_do (net/netfilter/ipset/ip_set_core.c:1697) netlink_dump (net/netlink/af_netlink.c:2325) netlink_recvmsg (net/netlink/af_netlink.c:1976) sock_recvmsg (net/socket.c:1159) __sys_recvfrom (net/socket.c:2315) ... Oops: lỗi bảo vệ chung (general protection fault), có thể do địa chỉ không hợp lệ (non-canonical address)... KASAN NOPTI KASAN: khả năng truy cập bộ nhớ hoang dã (wild-memory-access) trong khoảng [0x02d6...d0-0x02d6...d7]
RIP: 0010:ip_set_dump_do (net/netfilter/ipset/ip_set_core.c:1698) Kernel panic - not syncing: Lỗi nghiêm trọng
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.