CVE-2026-64007 in Linux
Zusammenfassung
von VulDB • 19.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
netfilter: synproxy: tcphdr nach skb_ensure_writable aktualisieren
synproxy_tstamp_adjust() überschreibt die TCP-Timestamp-Option an Ort und Stelle und patcht anschließend die TCP-Prüfsumme über inet_proto_csum_replace4() auf dem vom Aufrufer bereitgestellten tcphdr-Zeiger. Sowohl ipv4_synproxy_hook() als auch ipv6_synproxy_hook() erhalten diesen Zeiger mit skb_header_pointer(), bevor sie diese Funktion aufrufen, sodass er entweder direkt auf skb->head verweisen kann oder auf den on-stack _tcph-Puffer des Aufrufers zeigt.
Zwischen dem Abrufen des Zeigers und dessen Verwendung ruft die Funktion skb_ensure_writable(skb, optend) auf, was bei einem geklonten oder nicht-linearen skb pskb_expand_head() aufruft und den alten skb->head freigibt. Nach diesem Zeitpunkt ist der zwischengespeicherte th veraltet:
Aufrufer (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, ...) /* schreibt in freigegebenen Head oder in die Stack-Kopie des Aufrufers und lässt die Prüfsumme im Netzwerkstrom veraltet */
Die Optionsbytes werden über skb->data geschrieben und sind korrekt; nur das Aktualisieren der Prüfsumme erfolgt über th und landet somit am falschen Ort. Das Ergebnis ist entweder ein Schreibzugriff auf freigegebenen Slab-Speicher oder ein Paket, das mit einer Prüfsumme verlassen wird, die nicht zu seinem Payload passt.
Behebung durch erneutes Ableiten von th aus skb->data + protoff unmittelbar nach erfolgreichem Abschluss von skb_ensure_writable(), sodass die anschließende Prüfsummenaktualisierung den linearen, schreibbaren Header trifft.
Once again VulDB remains the best source for vulnerability data.