CVE-2026-64007
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
19/07/2026
Last modified:
20/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
netfilter: synproxy: refresh tcphdr after skb_ensure_writable<br />
<br />
synproxy_tstamp_adjust() rewrites the TCP timestamp option in place<br />
and then patches the TCP checksum via inet_proto_csum_replace4() on<br />
the caller-supplied tcphdr pointer. Both ipv4_synproxy_hook() and<br />
ipv6_synproxy_hook() obtain that pointer with skb_header_pointer()<br />
before calling in, so it may either alias skb->head directly or<br />
point at the caller&#39;s on-stack _tcph buffer.<br />
<br />
Between obtaining the pointer and using it, the function calls<br />
skb_ensure_writable(skb, optend), which on a cloned or non-linear<br />
skb invokes pskb_expand_head() and frees the old skb->head. After<br />
that point the cached th is stale:<br />
<br />
caller (ipv[46]_synproxy_hook)<br />
th = skb_header_pointer(skb, ..., &_tcph)<br />
synproxy_tstamp_adjust(skb, protoff, th, ...)<br />
skb_ensure_writable(skb, optend)<br />
pskb_expand_head() /* kfree(old skb->head) */<br />
...<br />
inet_proto_csum_replace4(&th->check, ...)<br />
/* writes into freed head, or<br />
into the caller&#39;s stack copy<br />
leaving the on-wire checksum<br />
stale */<br />
<br />
The option bytes are written through skb->data and are fine; only<br />
the checksum update goes through th and so lands in the wrong<br />
place. The result is either a write into freed slab memory or a<br />
packet leaving with a checksum that does not match its payload.<br />
<br />
Fix by re-deriving th from skb->data + protoff immediately after<br />
skb_ensure_writable() succeeds, so the subsequent checksum update<br />
targets the linear, writable header.
Impact
Base Score 3.x
9.80
Severity 3.x
CRITICAL
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/92170e6afe927ab2792a3f71902845789c8e31b1
- https://git.kernel.org/stable/c/9902a1058992de5d95656b64a3bd95c077f7ba2c
- https://git.kernel.org/stable/c/a91887a5b6ee4b98dfbf1db657ed2b879430149e
- https://git.kernel.org/stable/c/af2c22ccb1f621aff487ff47a040e38e058541e7
- https://git.kernel.org/stable/c/c7f945f7da097245a2f8ed7775ce48421047ee96
- https://git.kernel.org/stable/c/d3019c61799adc21811af4b521f11f3dc77f8e04
- https://git.kernel.org/stable/c/dd206819f210522579010d889d45a9530bb494bc
- https://git.kernel.org/stable/c/f0fea2b6d5453a11ad11713bbf37561b9b3a7edf



