Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Network-reachable with no authentication needed; only availability impacted via unbounded kernel memory leak from malformed packet stream.
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Lifecycle Timeline
5DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
net/sched: act_ct: fix sk_buff leak when the header checks reject a packet
tcf_ct_handle_fragments() runs its header sanity checks before handing anything to the defragmentation engine:
if (family == NFPROTO_IPV4) err = tcf_ct_ipv4_is_fragment(skb, &frag); else err = tcf_ct_ipv6_is_fragment(skb, &frag); if (err || !frag) return err;
tcf_ct_ipv4_is_fragment() returns -EINVAL or -ENOMEM; tcf_ct_ipv6_is_fragment() adds -EPROTO when ipv6_find_hdr() fails. None of them frees or queues the skb, so on that path the caller still owns it.
tcf_ct_act() however funnels every non-zero return into the ownership-transfer exit:
err = tcf_ct_handle_fragments(net, skb, family, p->zone, &defrag); if (err) goto out_frag; ... out_frag: if (err != -EINPROGRESS) tcf_action_inc_drop_qstats(&c->common); return TC_ACT_CONSUMED;
TC_ACT_CONSUMED means the action took ownership of the skb, so no caller frees it - sch_handle_ingress(), sch_handle_egress() and tcf_qevent_handle() all deliberately skip the free for that verdict. The skb is therefore orphaned: one sk_buff plus its data buffer is leaked per malformed packet, unbounded. Note the drop counter is already incremented for these errors, so the statistics claim a drop that never happens.
Three different ownership states reach out_frag: today - the skb may be queued by the defrag engine (-EINPROGRESS), already freed by nf_ct_handle_fragments(), or still owned by us. Tell the caller which of those it is, and free the packet ourselves in the last case, which restores the TC_ACT_SHOT behaviour that predated the Fixes: commit.
Reproduced on v7.2-rc6 with a 54-byte frame carrying a 40-byte IPv6 header with nexthdr = 0 (hop-by-hop) and nothing after it, on a clsact ingress chain with "action ct". kmemleak reports one leaked 232-byte skbuff_head_cache object plus its 704-byte data buffer per packet; with this patch it reports none.
AnalysisAI
Unbounded kernel memory exhaustion in the Linux kernel's traffic control connection tracking action (act_ct) allows unauthenticated remote attackers to leak one sk_buff plus its data buffer per malformed IP packet on systems with a clsact TC chain configured with 'action ct'. The defect in tcf_ct_act() causes error paths from header sanity checks to return TC_ACT_CONSUMED - signaling ownership transfer - while the sk_buff is still owned by the caller and never freed, resulting in progressive kernel memory exhaustion. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Exploitation requires the target system to have a Linux kernel TC clsact qdisc attached to at least one network interface (ingress or egress) with an 'action ct' rule - this is an explicitly non-default configuration that must be intentionally provisioned, typical in container orchestration platforms (Kubernetes nodes using kube-proxy in iptables/nftables mode with ct offload, or Cilium in legacy mode), software firewalls, or NAT appliances. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The NVD-assigned CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately captures the network-accessible denial-of-service potential but overstates exploitability for most environments because it does not account for the non-default prerequisite: the target must have a clsact TC chain configured with 'action ct', which is typical of firewalls, NAT gateways, and Kubernetes/container hosts using NetworkPolicy, but absent from general-purpose Linux servers. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | An attacker who can send packets to a network interface with a clsact ingress chain and 'action ct' rule crafts a 54-byte IPv6 frame with a 40-byte header specifying nexthdr=0 (hop-by-hop) and no following extension headers or payload. When received, tcf_ct_ipv6_is_fragment() calls ipv6_find_hdr(), which fails and returns -EPROTO; tcf_ct_act() routes this to out_frag: and returns TC_ACT_CONSUMED, orphaning the sk_buff. … |
| Remediation | Upgrade to a patched stable kernel release: 6.6.152, 6.12.104, 7.1.9, 7.2, or 6.18.45, applying the branch-appropriate stable commit from https://git.kernel.org/stable/c/. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, identify and catalog all Linux systems in your infrastructure with traffic control (TC) chains configured with 'action ct' to scope the exposure and prioritize remediation efforts. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-64558
GHSA-pjmq-j37r-3mm4