CVE-2026-99191
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
calipso: zachowaj BIG TCP payload_len w calipso_skbuff_setattr()
calipso_skbuff_setattr() dostosowuje payload_len o długość
opcja wstawia lub zmienia rozmiar:
ładunek = ntohs(ip6_hdr->ładunek_len);
ip6_hdr->ładunek_len = htons(ładunek + len_delta);
GRO może budować DUŻE pakiety TCP większe niż IPV6_MAXPLEN i przechowywać je
payload_len == 0 dla nich; ipv6_payload_len() następnie powraca do
skb->len. W przypadku takiego pakietu przekazywanego do zamapowanego miejsca docelowego
CALIPSO, powyższy kod zapisuje len_delta (lub 65536 + len_delta, gdy
zmniejsza się) do payload_len, a ipv6_payload_len() już nie spada
wróć do skb->len. Polegają na nim nf_tables, conntrack i sch_cake.
Ta sama arytmetyka kończy się również, gdy pakiet przekracza IPV6_MAXPLEN,
i DUŻY pakiet TCP, który zmniejsza się poniżej IPV6_MAXPLEN, powinien go otrzymać
rzeczywista długość tyłu.
Ustaw payload_len na podstawie długości skb za pomocą ipv6_set_payload_len(), który
przechowuje 0 powyżej IPV6_MAXPLEN i rzeczywistą długość w przeciwnym razie, as
ipv6_gro_complete() tak. Nagłówek sieciowy został właśnie zresetowany
skb->data, więc skb->len - sizeof(*ip6_hdr) to długość ładunku.
Testowane na jednym jądrze (arm64, QEMU) z SELinux permissive, minimalna
Polityka wygenerowana przez mdp (network_peer_controls=1), "netlabelctl calipso
dodaj pass doi:16" i mapowanie NetLabel fd00:2::/64 do CALIPSO
DOI 16. Wywołano calipso_skbuff_setattr().
netlbl_skbuff_setattr() z haka debugfs przeznaczonego tylko do testów (nie jest częścią
ta poprawka) dodanie etykiety tylko dla poziomu; payload_len po wywołaniu:
przypadek przed poprawką po naprawieniu rzeczywistej długości
1000, bez etykiety 1016 1016 1016
70000 GSO, ładowność_len 0 16 0 70016
65530 GSO, przekracza MAXPLEN 10 0 65546
65540 GSO z 24-bajtowym przeskokiem
nagłówek, kurczy się poniżej MAXPLEN 65528 65532 65532
1000 z 24-bajtowym nagłówkiem przeskoku 992 992 992
(0 oznacza, że ipv6_payload_len() zwraca rzeczywistą długość.) Dalej
path, przy czym klient wstrzykuje nieoznakowany UDP przez router do a
serwer, router dodaje opcję CALIPSO, a serwer dostarcza wszystko
datagramy (Udp6InDatagrams 5, Ip6InTruncatedPkts 0) za pomocą tej poprawki.
>_ 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