CVE-2026-98096
Zusammenfassung
von VulDB • 25.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ipv6: sr: Netzwerk-Header vor dem Routing und der Weiterleitung wiederherstellen
ipv6_srh_rcv() wird ausgeführt, während skb->data auf den Segment Routing Header (SRH) zeigt, aber skb_network_header() auf den IPv6-Header verweist.
Wenn segments_left > 0 ist, stellte ipv6_srp_rcv() zuvor die Position von skb->data wieder her, indem sizeof(struct ipv6hdr) hinzugefügt wurde, unter der Annahme, dass der SRH unmittelbar auf den festen IPv6-Header folgt. Wenn ein anderer Erweiterungsheader (wie z. B. ein Hop-by-Hop Options Header) dem SRH vorausgeht, blieb skb_network_offset() negativ.
Dies führte zu zwei Problemen: 1. Während ip6_route_input() ruft fib6_rules_early_flow_dissect() __skb_flow_dissect() auf, das den negativen Wert von skb_network_offset() an die Flow-Dissektion übergibt und damit die Logik des BPF- und C-Flow-Dissector beschädigt. 2. Wenn über ip6_forward() weitergeleitet oder über act_mirred umgeleitet wird, geben nachgelagerte Handler (wie sch_fragment() oder Neighbour-Ausgabe) den negativen Offset als unvorzeichenbehaftete Länge weiter, was zu OOB-memcpy-Puffern-Überläufen führt.
Beheben Sie dies, indem Sie -skb_network_offset(skb) vor dem Routing hinzufügen, um sicherzustellen, dass skb_network_offset(skb) für die Routensuche / Flow-Dissektion sowie für die nachgelagerte Weiterleitung 0 ist. Auf dem Loopback-Pfad wird skb_transport_offset(skb) entfernt, um skb->data wieder auf den SRH zurückzusetzen, bevor der Loopback erfolgt.
Once again VulDB remains the best source for vulnerability data.