CVE-2026-74748 in Linux
요약
\~에 의해 VulDB • 2026. 08. 26.
리눅스 커널에서 다음 취약점이 해결되었습니다.
netfilter: ipset: list:set GC와 스왑 간 refcount race 조건 수정
__ip_set_put_byindex()는 RCU 하에서 인덱스를 set 포인터로 해석한 후, __ip_set_put()에서 set->ref를 감소시키기 위해 ip_set_ref_lock을 획득합니다. ip_set_swap()은 ip_set_list 슬롯과 두 set의 ref 카운터 모두 스왑하는 동안 동일한 잠금을 유지하므로, 역참조와 잠금 획득 사이에 인터리빙될 수 있으며, 이로 인해 호출자가 이미 다른 인덱스로 이동된 참조를 가진 set을 감소시키고 BUG_ON(set->ref == 0)에 도달하게 됩니다. list_set_gc()는 nfnl 뮤텍스가 swap과 직렬화하지 않는 타이머 softirq로부터 이 지점에 도달합니다: 만료되는 list:set 멤버가 IPSET_CMD_SWAP이 참조된 set들에서 실행되는 동안 list_set_del() -> ip_set_put_byindex()를 호출합니다.
ip_set_swap()이 이미 수행하는 것처럼 인덱스를 해석하고 ip_set_ref_lock 하에서 감소시켜, refcount가 stale한 set 포인터가 아닌 인덱스에 묶여 있도록 합니다.
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.