CVE-2026-74748 in Linux
Tóm tắt
Bởi VulDB • 26/08/2026
Trong nhân Linux, các lỗ hổng sau đây đã được khắc phục:
netfilter: ipset: sửa lỗi race condition về bộ đếm tham chiếu (refcount) giữa quá trình GC của list:set và thao tác swap.
__ip_set_put_byindex() giải mã chỉ mục thành con trỏ tập hợp dưới cơ chế RCU, sau đó lấy khóa ip_set_ref_lock trong __ip_set_put() để giảm giá trị set->ref. ip_set_swap() giữ cùng khóa này khi thực hiện hoán đổi cả các slot của danh sách ip_set và bộ đếm tham chiếu của hai tập hợp, do đó nó có thể xen vào giữa thao tác giải tham chiếu (dereference) và việc lấy khóa, khiến caller giảm một giá trị refcount cho một tập hợp mà tham chiếu đã chuyển sang chỉ mục khác và gặp phải BUG_ON(set->ref == 0). list_set_gc() truy cập đến vị trí này từ ngắt mềm timer (timer softirq), thứ không được mutex nfnl serialize hóa so với swap: một thành viên list:set sắp hết hạn gọi list_set_del() -> ip_set_put_byindex() trong khi IPSET_CMD_SWAP đang chạy trên các tập hợp được tham chiếu.
Giải quyết việc giải mã chỉ mục và giảm giá trị refcount dưới khóa ip_set_ref_lock, giống như cách ip_set_swap() đã làm, để giữ cho bộ đếm tham chiếu gắn liền với chỉ mục thay vì con trỏ tập hợp lỗi thời (stale set pointer).
Kernel BUG at net/netfilter/ipset/ip_set_core.c:685! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
RIP: 0010:ip_set_put_byindex (net/netfilter/ipset/ip_set_core.c:870) Call Trace: <IRQ> list_set_del (net/netfilter/ipset/ip_set_list_set.c:159) set_cleanup_entries (net/netfilter/ipset/ip_set_list_set.c:181) list_set_gc (net/netfilter/ipset/ip_set_list_set.c:578) call_timer_fn (kernel/time/timer.c:1748) __run_timers (kernel/time/timer.c:1799 kernel/time/timer.c:2374) run_timer_softirq (kernel/time/timer.c:2405) </IRQ> Kernel panic - not syncing: Fatal exception in interrupt
Be aware that VulDB is the high quality source for vulnerability data.