netfilter: nfnetlink_osf: fix divide-by-zero in OSF_WSS_MODULO
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.258, 5.15.209, 6.1.175, 6.6.141, 6.12.91, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: netfilter: nfnetlink_osf: fix divide-by-zero in OSF_WSS_MODULO nf_osf_match_one() computes ctx->window % f->wss.val in the OSF_WSS_MODULO branch with no guard for f->wss.val == 0. A CAP_NET_ADMIN user can add such a fingerprint via nfnetlink; a subsequent matching TCP SYN divides by zero and panics the kernel. Reject the bogus fingerprint in nfnl_osf_add_callback() above the per-option for-loop. f->wss is per-fingerprint, not per-option, so the check must run regardless of f->opt_num (including 0). Also reject wss.wc >= OSF_WSS_MAX; nf_osf_match_one() already treats that as "should not happen". Crash: Oops: divide error: 0000 [#1] SMP KASAN NOPTI RIP: 0010:nf_osf_match_one (net/netfilter/nfnetlink_osf.c:98) Call Trace: <IRQ> nf_osf_match (net/netfilter/nfnetlink_osf.c:220) xt_osf_match_packet (net/netfilter/xt_osf.c:32) ipt_do_table (net/ipv4/netfilter/ip_tables.c:348) nf_hook_slow (net/netfilter/core.c:622) ip_local_deliver (net/ipv4/ip_input.c:265) ip_rcv (include/linux/skbuff.h:1162) __netif_receive_skb_one_core (net/core/dev.c:6181) process_backlog (net/core/dev.c:6642) __napi_poll (net/core/dev.c:7710) net_rx_action (net/core/dev.c:7945) handle_softirqs (kernel/softirq.c:622)
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in cb833bbc1b3c51e08652d3c86298307c07d3f2db; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in 26900306a5a2c3e4f75c643a064525526bb6e5f3; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in 0694618cf3e9b120666e31f5f383a6e466d95a0d; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in 8def8fbd23f40e945febe913d04b731012ce0082; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in c55940895245d8ef658ab381248a28755218d625; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in fb965b1cfe92b28d28b5ebe3116b81dbef9f2d2f; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in 9a05e195618a6d474f2bcd5b6376d0ffc2f00366; From 11eeef41d5f63c7d2f7fdfcc733eb7fb137cc384 · fixed in 2195574dc6d9017d32ac346987e12659f931d932
- Linux Linux
2.6.31
- KernelLinux
From 2.6.31 · fixed in 5.10.258; From 5.11.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.141; From 6.7.0 · fixed in 6.12.91; From 6.13.0 · fixed in 6.18.33; From 6.19.0 · fixed in 7.0.10
References 8
git.kernel.org
- stable/c/cb833bbc1b3c51e08652d3c86298307c07d3f2db
- stable/c/26900306a5a2c3e4f75c643a064525526bb6e5f3
- stable/c/0694618cf3e9b120666e31f5f383a6e466d95a0d
- stable/c/8def8fbd23f40e945febe913d04b731012ce0082
- stable/c/c55940895245d8ef658ab381248a28755218d625
- stable/c/fb965b1cfe92b28d28b5ebe3116b81dbef9f2d2f
- stable/c/9a05e195618a6d474f2bcd5b6376d0ffc2f00366
- stable/c/2195574dc6d9017d32ac346987e12659f931d932