Skip to main content

Linux Kernel CVE-2026-64007

| EUVDEUVD-2026-45580 CRITICAL
2026-07-19 Linux GHSA-rf6c-225m-p2p4
9.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

Remote packets trigger it (AV:N/PR:N/UI:N) but only with SYNPROXY configured and a cloned/non-linear skb, so AC:H; most likely impact is a kernel crash (A:H) with limited/uncertain memory corruption (C:L/I:L).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N
SUSE
CRITICAL
qualitative
Red Hat
7.0 HIGH
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 16:48 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
9.8 (CRITICAL)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:56 cve.org
CRITICAL 9.8
CVE Published
Jul 19, 2026 - 14:56 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

netfilter: synproxy: refresh tcphdr after skb_ensure_writable

synproxy_tstamp_adjust() rewrites the TCP timestamp option in place and then patches the TCP checksum via inet_proto_csum_replace4() on the caller-supplied tcphdr pointer. Both ipv4_synproxy_hook() and ipv6_synproxy_hook() obtain that pointer with skb_header_pointer() before calling in, so it may either alias skb->head directly or point at the caller's on-stack _tcph buffer.

Between obtaining the pointer and using it, the function calls skb_ensure_writable(skb, optend), which on a cloned or non-linear skb invokes pskb_expand_head() and frees the old skb->head. After that point the cached th is stale:

caller (ipv[46]_synproxy_hook) th = skb_header_pointer(skb, ..., &_tcph) synproxy_tstamp_adjust(skb, protoff, th, ...) skb_ensure_writable(skb, optend) pskb_expand_head() /* kfree(old skb->head) */ ... inet_proto_csum_replace4(&th->check, ...) /* writes into freed head, or into the caller's stack copy leaving the on-wire checksum stale */

The option bytes are written through skb->data and are fine; only the checksum update goes through th and so lands in the wrong place. The result is either a write into freed slab memory or a packet leaving with a checksum that does not match its payload.

Fix by re-deriving th from skb->data + protoff immediately after skb_ensure_writable() succeeds, so the subsequent checksum update targets the linear, writable header.

AnalysisAI

Kernel memory corruption in the Linux netfilter SYNPROXY module (synproxy_tstamp_adjust) lets remote hosts trigger a use-after-free write against systems that deploy the SYNPROXY target for TCP SYN-flood mitigation. When processing a cloned or non-linear packet, skb_ensure_writable() reallocates and frees the old skb->head, but the code then writes the recomputed TCP checksum through a stale header pointer - landing in freed slab memory or leaving a wrong on-wire checksum. Rated CVSS 9.8 by the automated feed, but EPSS is only 0.18% (7th percentile), it is not in CISA KEV, and no public exploit identified at time of analysis.

Technical ContextAI

The affected component is the kernel's netfilter connection-tracking SYNPROXY facility (net/netfilter/nf_synproxy_core.c), reachable through ipv4_synproxy_hook() and ipv6_synproxy_hook(). SYNPROXY validates TCP handshakes on behalf of protected servers and must rewrite the TCP timestamp option and fix up the TCP checksum via inet_proto_csum_replace4(). The callers fetch the TCP header with skb_header_pointer(), which may return either a pointer aliasing skb->head or a pointer into an on-stack _tcph copy. synproxy_tstamp_adjust() then calls skb_ensure_writable(), which for cloned/non-linear skbs invokes pskb_expand_head() and kfree()s the original skb->head, invalidating the cached pointer. The root cause is a stale-pointer / use-after-free class issue (CWE-416 use-after-free, with a CWE-825 expired-pointer-dereference flavor); no CWE was assigned in the input. The fix re-derives the header from skb->data + protoff after the writability check so the checksum patch targets the now-linear, writable header.

RemediationAI

Vendor-released patch: upgrade to a fixed stable release for your branch - 7.1 or 7.0.12, 6.18.35, 6.12.93, 6.6.143, 6.1.176, 5.15.210, or 5.10.259, or a distribution kernel that backports the corresponding commit (see the git.kernel.org stable commits such as 9902a1058992 and dd206819f210). If you cannot patch immediately, the effective compensating control is to stop using the netfilter SYNPROXY target: remove nftables/iptables rules that invoke SYNPROXY (the '-j SYNPROXY' target or the nft 'synproxy' statement) and rely on alternative SYN-flood defenses such as syncookies (net.ipv4.tcp_syncookies) or an upstream scrubbing device; the trade-off is losing SYNPROXY's stateful handshake validation for the protected servers. Because the bug only manifests on cloned/non-linear skbs, hosts that never enable SYNPROXY are not exposed and need no workaround beyond routine patching. Given the current date (2026-07-20), 7.0.x users should move to 7.0.12 or later.

Vendor StatusVendor

SUSE

Severity: Critical
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-64007 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy