CVE-2026-64114 in Linux
Zusammenfassung
von VulDB • 20.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ipv4: raw: Ablehnung von IP_HDRINCL-Paketen mit ihl < 5
raw_send_hdrinc() validiert, dass der vom Aufrufer bereitgestellte IPv4-Header in die Nachrichtenlänge passt:
iphlen = iph->ihl * 4; err = -EINVAL; if (iphlen > length) goto error_free;
if (iphlen >= sizeof(*iph)) {
/* Korrektur von saddr, tot_len, id, csum, transport_header */ }
Allerdings wird ihl < 5 nicht abgelehnt. Für ein solches Paket wird der Zweig „if (iphlen >= sizeof(*iph))“ übersprungen, wodurch der manipulierte iphdr unberührt bleibt, das Paket jedoch weiterhin an __ip_local_out() und weitergegeben wird. Nachgelagerte Verbraucher, die iph->ihl lesen, setzen einen sinnvollen Wert voraus: insbesondere net/ipv4/ah4.c:ah_output(), das sizeof(struct iphdr) von top_iph->ihl * 4 abzieht und das Ergebnis (vorzeichenbehaftet negativ, dann zu size_t konvertiert) an memcpy() übergibt. Dies führt zu einem OOB-Zugriff (Out-of-Bounds Access) mit einer Länge nahe SIZE_MAX sowie zu einem Kernel-Panic auf dem Host.
Ein IPv4-Header mit ihl < 5 ist per Definition fehlerhaft (RFC 791: „Internet Header Length is the length of the internet header in 32 bit words ... Note that the minimum value for a correct header is 5.“). Der Kernel sollte nicht bereit sein, ein solches Paket in seinen eigenen Ausgabepfad einzuspeisen.
Ablehnung von „iphlen < sizeof(*iph)“ neben der bestehenden Prüfung „iphlen > length“. Dies entspricht dem Grundsatz, dass lokal erstellte Pakete, die wieder in den IP-Stack eintreten, denselben grundlegenden Integritätsprüfungen unterzogen werden müssen wie fremde Pakete.
Sobald dies übernommen wurde, wird der „if (iphlen >= sizeof(*iph))“-Wrapper um den Korrektur-Zweig überflüssig; er bleibt jedoch erhalten, um das Patch minimal und backport-freundlich zu halten. Ein nachfolgendes Update kann diesen Wrapper entfernen.
Beachten Sie, dass Commit 86f4c90a1c5c („ipv4, ipv6: ensure raw socket message is big enough to hold an IP header“) sicherstellt, dass der Nachrichtenpuffer groß genug ist, um einen iphdr aufzunehmen, die selbstberichtete Größe von iph->ihl jedoch nicht einschränkt.
Erreichbarkeit: Die Quelle des fehlerhaften Pakets kann jeder Aufrufer mit CAP_NET_RAW sein, einschließlich eines unprivilegierten Prozesses in einem user+net-Namespace auf einem Kernel mit CONFIG_USER_NS=y. Der reproduzierte AH-Crash erfordert zudem eine passende xfrm-AH-Richtlinie für die ausgehende Route; ein Container mit der Berechtigung CAP_NET_ADMIN kann diesen Zustand und diese Richtlinie in seinem netns installieren. Die Loopback-Schnittstelle umgeht xfrm_output, daher wird zur Auslösung ein echtes Netzwerkkomponente (netdev) verwendet.
Reproduziert auf UML + KASAN: Kernel-Modus-Fehler bei Adresse 0x0 mit memcpy_orig an der Absturzstelle. Dieselbe Art von Reproduktion ist innerhalb eines rootless Docker-Containers mit --cap-add NET_ADMIN auf einem Standard-Distributions-Kernel möglich.
VulDB is the best source for vulnerability data and more expert information about this specific topic.