CVE-2026-98135
ŚrednieCVSS 5.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 1 - wyżej niż 1% wszystkich znanych CVE
Streszczenie
W jądrze Linux funkcja is_boot_sector_ntfs() sterownika ntfs sprawdza pole sectors_per_cluster sektora rozruchowego testem zakresowym, który odrzuca 0x81..0xf3, ale akceptuje 0 i inne wartości niebędące potęgami dwójki. Wartość zero trafia do parse_ntfs_boot_sector(), gdzie ffs(0) daje 0, przez co przesunięcie staje się niezdefiniowane.
Ocena ryzyka
Niezdefiniowane przesunięcie (shift-out-of-bounds) może prowadzić do awarii jądra lub nieprzewidywalnego zachowania podczas montowania złośliwego wolumenu NTFS.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę odrzucającą każdą wartość sectors_per_cluster niebędącą potęgą dwójki.
Inne podatności w Linux kernel (ntfs)
Zobacz wszystkie- CVE-2026-89614Krytyczne
W jądrze Linux sterownik ntfs ogranicza skanowanie bitmapy wolnych klastrów na podstawie rozmiaru $Bitmap, a nie liczby klastrów wolumenu. Obraz z $Bitmap obejmującą więcej klastrów niż wolumen pozwala na indeksowanie poza tablicą lcn_empty_bits_per_page.
- CVE-2026-89613Krytyczne
W jądrze Linux sterownik ntfs nie odrzuca atrybutów z pustymi mapping pairs, jeśli mają niespójne highest VCN i rozmiar. Brak walidacji może prowadzić do nieprawidłowego przetwarzania.
- CVE-2026-89612Krytyczne
W jądrze Linux funkcja parse_ntfs_boot_sector() dekoduje 64-bitowe LCN sektora rozruchowego NTFS do typu s64. Spreparowana wartość z wysokim bitem staje się ujemna i przechodzi sprawdzenie górnej granicy, co prowadzi do dostępu poza granicami tablicy lcn_empty_bits_per_page.
- CVE-2026-89611Krytyczne
W jądrze Linux funkcja ntfs_attr_update_meta() nie waliduje przesunięcia nazwy atrybutu podczas konwersji między atrybutami niesparsowanymi i sparowanymi. Złośliwy rekord MFT może ustawić name_offset tak, że nazwa wykracza poza granice atrybutu lub nakłada się na mapping pairs.
- CVE-2026-98141Średnie
W jądrze Linux w funkcji update_reparse_data() sterownika ntfs ignorowana jest wartość zwracana przez set_reparse_index(). Gdy wstawienie indeksu się nie powiedzie, kod usuwa zapisane dane reparse jako sprzątanie, ale nadal zwraca 0, więc symlink(2) zgłasza sukces mimo braku danych reparse na dysku.
- CVE-2026-98140Średnie
W jądrze Linux funkcja write_mft_record_nolock() sterownika ntfs mapuje folio rekordu MFT za pomocą kmap_local_folio(), ale ścieżki błędów pre_write_mst_fixup() i bio_add_folio() skaczą do etykiety błędu bez odmapowania. Ponieważ mapowania kmap_local są uporządkowane stosowo per zadanie, wyciek jednego psuje zagnieżdżenie dla zewnętrznych mapowań.
- CVE-2026-98139Średnie
W jądrze Linux funkcja ntfs_cluster_free_from_rl_nolock() sterownika ntfs dodaje długość zakresu do nr_freed zawsze gdy warunek księgowania błędów jest fałszywy, co obejmuje przypadki, w których ntfs_bitmap_clear_run() faktycznie zawiodło. Ponieważ nieudane ntfs_bitmap_clear_run() wycofuje częściowe modyfikacje, żadne bity nie zostały wyczyszczone, a mimo to długość zakresu zawyża vol->free_clusters.
- CVE-2026-98138Średnie
W jądrze Linux funkcja ntfs_sync_fs() sterownika ntfs bezwarunkowo czyści bit dirty, podczas gdy ntfs_put_super() i ścieżka ponownego montowania tylko do odczytu robią to tylko gdy NVolErrors(vol) jest fałszywe. W efekcie każde sync() na wolumenie z zapisanym błędem oznacza wolumen jako czysty, przez co nie jest przeprowadzane odzyskiwanie.
- CVE-2026-98137Średnie
W jądrze Linux funkcja ntfs_dio_zero_range() sterownika ntfs zwraca 0 lub ujemny errno z blkdev_issue_zeroout(), nigdy wartości dodatniej. Sprawdzenie błędu zerowania w ntfs_attr_fallocate() nigdy się więc nie uruchamiało, przez co nieudana operacja zerowania była po cichu ignorowana, a nowo przydzielone klastry były wliczane do initialized_size.
- CVE-2026-98136Wysokie
W jądrze Linux funkcja ntfs_attr_find_in_attrdef() sterownika ntfs przechodzi przez tablicę $AttrDef w pamięci, ale warunek pętli ogranicza tylko początek każdego wpisu, nie cały wpis. Wolumen którego rozmiar danych $AttrDef jest mniejszy niż jeden wpis (np. 120 bajtów) powoduje odczyt poza alokacją podczas tworzenia pliku.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ntfs: reject invalid sectors_per_cluster in the boot sector is_boot_sector_ntfs() checks the boot sector's sectors_per_cluster field with a range test that rejects 0x81..0xf3 but accepts 0 and other non-power-of-two counts. A zero value reaches parse_ntfs_boot_sector(): sectors_per_cluster_bits = ffs(sectors_per_cluster) - 1; ... vol->cluster_size = vol->sector_size << sectors_per_cluster_bits; ffs(0) is 0, so sectors_per_cluster_bits becomes (unsigned)-1 and the shift is undefined: UBSAN: shift-out-of-bounds in fs/ntfs/super.c:673:39 shift exponent 4294967295 is too large for 32-bit type 'int' This change rejects any non-power-of-two value, since it feeds the aforementioned shift via ffs() - 1, which only yields the correct shift for a power of two.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

