Odebrany

CVE-2026-89542

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

SUNRPC: wzmocnij gss_krb5_unwrap_v2 przed krótkimi tokenami

gss_krb5_unwrap_v2() odczytuje pola nagłówka EC i RRC w ptr+4 i
ptr+6 przed sprawdzeniem, czy token ma co najmniej GSS_KRB5_TOK_HDR_LEN
(16) bajtów długości, a jego pomocnik obracania_left() przekazuje buf->len - base
do xdr_buf_subsegment() bez sprawdzania tej podstawy <= buf->len. Kiedy
osoba wywołująca przekazuje token o długości poniżej 16 bajtów lub token o zadeklarowanej długości
opuszcza bazę za końcem bufora, następują trzy wyraźne awarie:

gss_krb5_unwrap_v2(offset, dł., buf)
ptr = buf->head[0].iov_base + przesunięcie
ec = *(ptr + 4) /* OOB odczyt na krótkiej głowie */
rrc = *(ptr + 6) /* OOB odczyt na krótkiej głowie */
obrót_w lewo(przesunięcie + 16, buf, rrc)
xdr_buf_subsegment(buf, &subbuf,
base, buf->len - baza) /* u32 wrap gdy baza > len */
_rotate_left(&podbuf, przesunięcie)
shift %= buf->len /* dzielenie przez zero, gdy podstawa == len */

Po odszyfrowaniu arytmetyka czyszczenia ma ten sam kształt:

movelen = min_t(unsigned int, buf->head[0].iov_len, len);
movelen -= przesunięcie + GSS_KRB5_TOK_HDR_LEN + przeskok;
BUG_ON (przesunięcie + GSS_KRB5_TOK_HDR_LEN + przeskok + przesunięcie >
buf->głowa[0].iov_len);

BUG_ON ponownie dodaje właśnie odjętą wartość, więc redukuje się do
min(A, B) > A i jest trwale fałszywe; nie może złapać niepodpisanego
niedostatek movelen, który następnie steruje memmove() o wartości ~UINT_MAX-bajtów.

Dodaj cztery osłony zapewniające głęboką obronę wewnątrz rozpakowanego rdzenia, aby był bezpieczny
niezależnie od tego, co potwierdzają jego rozmówcy:

- odrzuć tokeny z len - offset < GSS_KRB5_TOK_HDR_LEN wcześniej
dotykanie ptr+4/ptr+6;
- wycofanie się z funkcji turn_left(), gdy buf->len <= baza, obejmująca oba
przypadki niedomiaru i długości zerowej;
- wróć wcześniej z _rotate_left(), gdy buf->len wynosi zero, więc
shift %= buf->len modulo nie może nic zarzucić;
- zamień martwy BUG_ON na czek na żywo, który powraca
GSS_S_DEFECTIVE_TOKEN przed odjęciem ruchu.

>_ 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