CVE-2026-90054
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
tcp: napraw uszkodzenie pilnych danych podczas retransmisji wielosegmentowej
Na normalnej ścieżce xmit, będąc w trybie pilnym, odmawiamy zbudowania pliku
wielosegmentowy pakiet TSO, więc każdy segment otrzymuje swój własny urg_ptr:
/* tcp_write_xmit() */
limit = mss_now;
if (tso_segs > 1 && !tcp_urg_mode(tp))
limit = tcp_mss_split_point(...);
Ścieżka retransmisji nie ma takiego zabezpieczenia. __tcp_retransmit_skb() buduje
segs > 1 skb i przekazuje je warstwie GSO, która przesuwa tylko th->seq
na segment i kopiuje urg_ptr dosłownie:
/* __tcp_retransmit_skb() */
len = cur_mss * segs; /* segi > 1, bez sprawdzania trybu urg */
...
/* tcp_gso_segment(): tylko sekwencja uderzeń, kopiowane jest urg_ptr */
urg_ptr jest przesunięciem w stosunku do sekwencji segmentu, więc skopiowana wartość wskazuje
w innym miejscu każdego segmentu. Odbiorca odbudowuje absolut
pilne seq jako seg.seq + urg_ptr, więc zamiast tego przechodzi do ruchomego, pilnego punktu
jednego bajtu OOB:
seg1 seq 1 urg_ptr 5001 -> pilne @ 5001 (ok)
seg2 seq 1001 urg_ptr 5001 -> pilne @ 6001 (źle, +MSS)
seg3 seq 2001 urg_ptr 5001 -> pilne @ 7001 (źle, +2*MSS)
Prawdziwy bajt OOB nigdy nie jest wskazywany, więc odbiornik przestaje go łączyć
i dostarcza je jako normalne dane wewnątrz pasma, uszkadzając strumień.
Strzeż długości retransmisji, tak jak ścieżka xmit: zachowaj segs = 1, gdy jesteś w środku
tryb pilny.
>_ Referencje
- https://git.kernel.org/stable/c/3d4e005c198dc410ad568f832bffa7569c059ff8
- https://git.kernel.org/stable/c/47eb90299e6882d6445672530dd7c51ac33ebdbd
- https://git.kernel.org/stable/c/4fd2ee4ac154c204d95d8db72221446dac5af9b8
- https://git.kernel.org/stable/c/711bfd762bec05fb19bc3b17cbb157c39f4e66da
- https://git.kernel.org/stable/c/8eb51013b6308870479a64b4a2a018697b997849
- https://git.kernel.org/stable/c/b8f08a94b2a4addc39249dcf9c792e786108621b
- https://git.kernel.org/stable/c/ce2b807f42ed5e55567b8864ab72963f90779270
- https://git.kernel.org/stable/c/ebe55406404f3cb28e36d2b668e2c6c05026ec29
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