net/sched: act_ct: don't WARN on benign flow_offload_alloc() failure
- 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.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, 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: net/sched: act_ct: don't WARN on benign flow_offload_alloc() failure flow_offload_alloc() returns NULL when the conntrack entry is dying (e.g. raced with a conntrack flush) or when the GFP_ATOMIC allocation fails; both are expected under load and neither is a kernel bug. This path runs from softirq on every committed packet, so with panic_on_warn=1 an unprivileged user can panic the box just by racing a conntrack flush against a `tc ... action ct commit` classifier. Reproduced with a custom repro under QEMU: a small, fixed set of UDP flows through `tc filter ... action ct commit` on lo, raced against threads flooding bare ctnetlink CT_DELETE (flush) requests. Hits WARNING: net/sched/act_ct.c:437 (tcf_ct_flow_table_add(), inlined into tcf_ct_act() in this build) within ~15s on the unpatched kernel; same setup is clean on the patched kernel. The fix itself is behavior-preserving: both branches already did `goto err_alloc` before and after, only the WARN is removed.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in e8fcf3f08834e939b797311742ee72b1e2a08096; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in af475f599270e59313552e6c6f3af8507da672b8; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in 424ba52c0058deeb940d02cba52eb0aeb288db33; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in d512c484bd93a5f2794aa03c9faeb7bcb82dbd4a; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in d805560ad69cb266d669341ca01e26bffb0d2c67; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in 00734f3684fcec42c319bedfe68a5d357c720b53; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in 650787233c2fd6e515a7c5f371019a9fa080ccd2; From 64ff70b80fd403110b67dd9f7184a604fdb0da43 · fixed in 47abe7a5c4eb53269aca3506446f851572a059a3
- Linux Linux
5.7
- KernelLinux
From 5.7.0 · fixed in 5.10.271; From 5.11.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.112; From 6.13.0 · fixed in 6.18.55; From 6.19.0 · fixed in 7.2.9
References 8
git.kernel.org
- stable/c/e8fcf3f08834e939b797311742ee72b1e2a08096
- stable/c/af475f599270e59313552e6c6f3af8507da672b8
- stable/c/424ba52c0058deeb940d02cba52eb0aeb288db33
- stable/c/d512c484bd93a5f2794aa03c9faeb7bcb82dbd4a
- stable/c/d805560ad69cb266d669341ca01e26bffb0d2c67
- stable/c/00734f3684fcec42c319bedfe68a5d357c720b53
- stable/c/650787233c2fd6e515a7c5f371019a9fa080ccd2
- stable/c/47abe7a5c4eb53269aca3506446f851572a059a3