CVE-2026-98954
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net: zawsze analizuj pakiety GSO w __virtio_net_hdr_to_skb()
Zatwierdź 9e8db5913264 („net: unikaj fałszywych alarmów w niezaufanych gso
walidacja”) dodał kontrolę „&& skb->network_header” przed analizą przepływu
Pakiety GSO bez VIRTIO_NET_HDR_F_NEEDS_CSUM w
__virtio_net_hdr_to_skb(), ponieważ niektórzy wywołujący (tacy jak tun_get_user(),
tun_xdp_one(), virtnet_receive_done() i raw_verify_header()) nazywane
virtio_net_hdr_*_to_skb() przed inicjalizacją skb->network_header i
skb->dev.
Ponieważ __alloc_skb() i __build_skb_around() inicjują zero
skb->network_header na 0 (w przeciwieństwie do mac_header i transport_header, które
są inicjalizowane na ~0U), ci czterej rozmówcy zawsze tak robili
skb->network_header == 0 i pominięta sekcja przepływu
__virtio_net_hdr_to_skb(). Mówiąc bardziej ogólnie, skb->network_header to plik
przesunięcie od skb->head (gdzie 0 jest także prawidłowym przesunięciem, gdy tylko
skb_headroom(skb) wynosi 0), a nie flagę logiczną.
Za każdym razem, gdy pomijano gałąź „if (gso_type && skb->network_header)”,
rezerwa „else if (gso_type)” ściągnęła tylko nh_min_len + thlen (40 bajtów
dla TCPv4) bez analizowania pakietu, bez sprawdzania poprawności ip_proto lub
n_proto i bez ustawiania skb->transport_header.
Jeśli pakiet ma zniekształcony nagłówek sieciowy, nie jest odrzucany i a
kolejna funkcja skb_probe_transport_header() również kończy się niepowodzeniem i kończy działanie
skb->transport_header w ~0U (0xffff). Podobnie, jeśli pakiet IPv4
przenosi opcje IP (ihl > 5) lub pakiet IPv6 przenosi nagłówki rozszerzeń,
pociągnięcie tylko nh_min_len + thlen może pozostawić nagłówek TCP na zewnątrz
skb->głowa. W obu przypadkach tcp_hdrlen(skb) w skb_gso_transport_seglen()
czyta poza granicami:
BŁĄD: KASAN: płyta poza granicami w skb_gso_transport_seglen
Przeczytaj rozmiar 2 w zadaniu poc/133
skb_gso_transport_seglen (net/core/gso.c:155)
skb_gso_validate_mac_len (net/core/gso.c:270)
tbf_enqueue (net/sched/sch_tbf.c:260)
dev_qdisc_enqueue (net/core/dev.c:4227)
__dev_queue_xmit (net/core/dev.c:4884)
Ponadto sprawdzanie virtio_net_hdr_match_proto() tylko w środku
'if (!skb->protocol)' przed sekcją przepływu oba pominęły weryfikację kiedy
skb->protocol został wstępnie ustawiony przez osobę wywołującą i odrzucał ramki ze znacznikiem VLAN
którego zewnętrzny protokół L2 to ETH_P_8021Q lub ETH_P_8021AD.
Napraw to poprzez:
1. Inicjalizacja skb->dev i skb->network_header (plus skb->protokół dla
IFF_TUN) przed virtio_net_hdr_*_to_skb() w tun_get_user(),
tun_xdp_one(), virtnet_receive_done() i raw_verify_header(). w
tun_get_user(), upuść zbędny skb_reset_mac_header(skb) w
Przypadek IFF_TUN, ponieważ __virtio_net_hdr_to_skb() bezwarunkowo resetuje się
mac_header.
2. Usuwanie „&& skb->network_header” i niezatwierdzonego pliku
„else if (gso_type)” rezerwa w __virtio_net_hdr_to_skb(), więc wszystkie GSO
pakiety bez VIRTIO_NET_HDR_F_NEEDS_CSUM są rozdzielane pod kątem przepływu, mają
ich nagłówek transportowy został wciągnięty do danych liniowych i ma
skb->ustawiono nagłówek transportowy.
3. Przeniesienie kontroli virtio_net_hdr_match_proto() na później
skb_flow_dissect_flow_keys_basic(), sprawdzanie poprawności kluczy.basic.n_proto
przeciwko hdr_gso_type.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org