CVE-2026-98955
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
flow_dissector: unikaj obcinania skb->len u16 podczas obliczania thoff
__skb_flow_dissect() oblicza key_control->thoff za pomocą:
key_control->thoff = min_t(u16, nhoff, skb ? skb->len: hlen);
min_t(u16, ...) rzutuje oba argumenty na u16 przed ich porównaniem.
Ilekroć skb->len (lub hlen) modulo 65536 jest mniejsze niż nhoff,
obcięta długość wygrywa, a thoff jest nawet ustawione na fałszywie małą wartość
kiedy sekcja się powiodła. Na przykład ramka IPv4/TCP z
skb->len == 65540 i nhoff == 34 dostaje thoff == 4, więc osoby wywołujące, takie jak
skb_probe_transport_header() wskazuje nagłówek transportu wewnątrz
Nagłówek Ethernet.
Takie skbs nie są egzotyczne:
- W momencie zatwierdzenia d0c081b49137 („flow_dissector: prawidłowo ogranicz
thoff”), AF_PACKET z PACKET_VNET_HDR mógł już zbudować GSO
skbs większy niż 64 KB (kontrole MTU są pomijane w przypadku GSO i
alloc_skb_with_frags() zaakceptowane do MAX_SKB_FRAGS (17) zamówienie-0
strony na górze części liniowej).
- BIG TCP powoduje teraz, że skbs jest większy niż 64 KB.
- Następująca poprawka sprawia, że tun_get_user() analizuje ramki IFF_TAP
zanim funkcja eth_type_trans() pobierze nagłówek Ethernet, a więc ramkę GSO
przewożący pakiet L3 o długości 65522..65535 bajtów zostanie poddany analizie
skb->len w [65536, 65549].
Zamiast tego porównaj z u32. Jeśli wynikowego przesunięcia nie można przedstawić
w u16 key_control->thoff, zmniejsz go do U16_MAX i zgłoś
sekcja jako nieudana, zamiast po cichu zwracać niewłaściwy transport
przesunięcie. thoff nadal jest ustawiony na niepowodzenie, ponieważ niektóre obiekty wywołujące (takie jak
eth_get_headlen()) użyj go niezależnie od zwracanej wartości.
>_ Referencje
- https://git.kernel.org/stable/c/50d0cd575cab763f833d6ac6eb6550b23a0b3dae
- https://git.kernel.org/stable/c/52efce4755a4b8b82039caa773645ffc80b25362
- https://git.kernel.org/stable/c/9993e6a0ac1b5b3101ffba702cacb9f42b9909d8
- https://git.kernel.org/stable/c/99bda1ecbd56905f8bd934b9cdccd3bd251192b1
- https://git.kernel.org/stable/c/d9e08836d06c84abb18470c94b12b131eaccdc7d
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