CVE-2025-21959CWE-908

CVE-2025-21959

High · published April 1, 2025

CVSS v3.1
7.3
EPSS
0%
Percentile
37.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple in insert_tree()

Since commit b36e4523d4d5 ("netfilter: nf_conncount: fix garbage

collection confirm race"), `cpu` and `jiffies32` were introduced to

the struct nf_conncount_tuple.

The commit made nf_conncount_add() initialize `conn->cpu` and

`conn->jiffies32` when allocating the struct.

In contrast, count_tree() was not changed to initialize them.

By commit 34848d5c896e ("netfilter: nf_conncount: Split insert and

traversal"), count_tree() was split and the relevant allocation

code now resides in insert_tree().

Initialize `conn->cpu` and `conn->jiffies32` in insert_tree().

BUG: KMSAN: uninit-value in find_or_evict net/netfilter/nf_conncount.c:117 [inline]

BUG: KMSAN: uninit-value in __nf_conncount_add+0xd9c/0x2850 net/netfilter/nf_conncount.c:143

find_or_evict net/netfilter/nf_conncount.c:117 [inline]

__nf_conncount_add+0xd9c/0x2850 net/netfilter/nf_conncount.c:143

count_tree net/netfilter/nf_conncount.c:438 [inline]

nf_conncount_count+0x82f/0x1e80 net/netfilter/nf_conncount.c:521

connlimit_mt+0x7f6/0xbd0 net/netfilter/xt_connlimit.c:72

__nft_match_eval net/netfilter/nft_compat.c:403 [inline]

nft_match_eval+0x1a5/0x300 net/netfilter/nft_compat.c:433

expr_call_ops_eval net/netfilter/nf_tables_core.c:240 [inline]

nft_do_chain+0x426/0x2290 net/netfilter/nf_tables_core.c:288

nft_do_chain_ipv4+0x1a5/0x230 net/netfilter/nft_chain_filter.c:23

nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline]

nf_hook_slow+0xf4/0x400 net/netfilter/core.c:626

nf_hook_slow_list+0x24d/0x860 net/netfilter/core.c:663

NF_HOOK_LIST include/linux/netfilter.h:350 [inline]

ip_sublist_rcv+0x17b7/0x17f0 net/ipv4/ip_input.c:633

ip_list_rcv+0x9ef/0xa40 net/ipv4/ip_input.c:669

__netif_receive_skb_list_ptype net/core/dev.c:5936 [inline]

__netif_receive_skb_list_core+0x15c5/0x1670 net/core/dev.c:5983

__netif_receive_skb_list net/core/dev.c:6035 [inline]

netif_receive_skb_list_internal+0x1085/0x1700 net/core/dev.c:6126

netif_receive_skb_list+0x5a/0x460 net/core/dev.c:6178

xdp_recv_frames net/bpf/test_run.c:280 [inline]

xdp_test_run_batch net/bpf/test_run.c:361 [inline]

bpf_test_run_xdp_live+0x2e86/0x3480 net/bpf/test_run.c:390

bpf_prog_test_run_xdp+0xf1d/0x1ae0 net/bpf/test_run.c:1316

bpf_prog_test_run+0x5e5/0xa30 kernel/bpf/syscall.c:4407

__sys_bpf+0x6aa/0xd90 kernel/bpf/syscall.c:5813

__do_sys_bpf kernel/bpf/syscall.c:5902 [inline]

__se_sys_bpf kernel/bpf/syscall.c:5900 [inline]

__ia32_sys_bpf+0xa0/0xe0 kernel/bpf/syscall.c:5900

ia32_sys_call+0x394d/0x4180 arch/x86/include/generated/asm/syscalls_32.h:358

do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline]

__do_fast_syscall_32+0xb0/0x110 arch/x86/entry/common.c:387

do_fast_syscall_32+0x38/0x80 arch/x86/entry/common.c:412

do_SYSENTER_32+0x1f/0x30 arch/x86/entry/common.c:450

entry_SYSENTER_compat_after_hwframe+0x84/0x8e

Uninit was created at:

slab_post_alloc_hook mm/slub.c:4121 [inline]

slab_alloc_node mm/slub.c:4164 [inline]

kmem_cache_alloc_noprof+0x915/0xe10 mm/slub.c:4171

insert_tree net/netfilter/nf_conncount.c:372 [inline]

count_tree net/netfilter/nf_conncount.c:450 [inline]

nf_conncount_count+0x1415/0x1e80 net/netfilter/nf_conncount.c:521

connlimit_mt+0x7f6/0xbd0 net/netfilter/xt_connlimit.c:72

__nft_match_eval net/netfilter/nft_compat.c:403 [inline]

nft_match_eval+0x1a5/0x300 net/netfilter/nft_compat.c:433

expr_call_ops_eval net/netfilter/nf_tables_core.c:240 [inline]

nft_do_chain+0x426/0x2290 net/netfilter/nf_tables_core.c:288

nft_do_chain_ipv4+0x1a5/0x230 net/netfilter/nft_chain_filter.c:23

nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline]

nf_hook_slow+0xf4/0x400 net/netfilter/core.c:626

nf_hook_slow_list+0x24d/0x860 net/netfilter/core.c:663

NF_HOOK_LIST include/linux/netfilter.h:350 [inline]

ip_sublist_rcv+0x17b7/0x17f0 net/ipv4/ip_input.c:633

ip_list_rcv+0x9ef/0xa40 net/ip

---truncated---

The record
Technical detail
CVSS v3.1
7.3 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
CVSS v4.0
Not supplied
EPSS
0.00438 · 37.1th percentile
Weakness
CWE-908 · Use of Uninitialized Resource
Published
2025-04-01T20:15Z
Affected products (14)
ProductVersionsFixed in
linux/linux_kernel≥ 4.14.92, < 4.154.15
linux/linux_kernel≥ 4.18, < 5.4.2925.4.292
linux/linux_kernel≥ 5.5, < 5.10.2365.10.236
linux/linux_kernel≥ 5.11, < 5.15.1805.15.180
linux/linux_kernel≥ 5.16, < 6.1.1326.1.132
linux/linux_kernel≥ 6.2, < 6.6.846.6.84
linux/linux_kernel≥ 6.7, < 6.12.206.12.20
linux/linux_kernel≥ 6.13, < 6.13.86.13.8
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (12)
EPSS history
Timeline
  • 01 APR 15:46Z
    netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple in insert_tree()
    cvelistv5