Odebrany

CVE-2026-89650

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ę:

ceph: powiązana tablica num_export_targets dla informacji mds v2/v3

ceph_mdsmap_decode() w fs/ceph/mdsmap.c odczytuje num_export_targets z
każdy rekord informacji per-mds i przesuwa kursor dekodowania o
num_export_targets * sizeof(u32) bez uprzedniego sprawdzenia tylu bajtów
pozostać. Jedyna kontrola górnej granicy, która wyłapuje uciekający kursor
(*p > info_end) jest bramkowane na info_v >= 4, ponieważ info_end ma wartość NULL
dla info_v 2 i 3. Gdy monitor wysyła mapę MDS, której per-mds
info to wersja 2 lub 3 z przewymiarowanym kursorem num_export_targets
przechodzi obok bufora przedniego komunikatu i późniejszej pętli celów eksportu
wywołuje niesprawdzoną funkcję ceph_decode_32() w przypadku pamięci poza zakresem.

Klient jądra przetwarza CEPH_MSG_MDS_MAP ze swojej sesji monitora
(net/ceph/mon_client.c wysyła go; fs/ceph/super.c kieruje go do
ceph_mdsc_handle_mdsmap(), która ustawia koniec związanego przedniego bufora i
wywołuje ceph_mdsmap_decode()). Złośliwy lub zainfekowany monitor lub
atakujący na ścieżce w niepodpisanej/nieszyfrowanej sesji komunikatora, can
dlatego też w jądrze klienta wyprowadź odczyt poza granicami; na x86_64
w przypadku KASAN jest to zgłaszane jako wczytanie płyty poza boiskiem
ceph_mdsmap_decode(). Zdekodowane wartości lądują w pliku wewnętrznym
info->export_targets[] tablica, więc konsekwencją jest jądro
odczyt poza granicami, a nie wyciek informacji do atakującego.

Zagrożenie: złośliwy lub zainfekowany monitor Ceph wysyłający mapę MDS za pomocą
wersja informacji o per-mds 2 lub 3 i zbyt duży plik num_export_targets
pole wyzwala odczyt poza granicami w jądrze klienta CephFS.

Przed przejściem dalej dodaj funkcję ceph_decode_need() do tablicy eksport-targets
kursor, więc ograniczenie jest wymuszane dla każdego info_v >= 2, nie tylko
info_v >= 4. Odzwierciedla to używany już idiom „licz-to-potrzeba”.
m_data_pg_pools później w tej samej funkcji.

Oblicz liczbę bajtów celów eksportu za pomocą size_mul() i użyj jej ponownie
sprawdzana długość podczas przesuwania kursora, aby atakujący kontrolował
Mnożenie num_export_targets kończy się niepowodzeniem w przypadku przepełnienia, a nie
opierając się na późniejszej osłonie kcalloc().

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