CVE-2026-89612
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 45 - wyżej niż 45% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może zamontować spreparowany obraz NTFS, powodując dostęp poza granicami pamięci w alokatorze strefy MFT i potencjalną awarię systemu lub wykonanie kodu.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę dekodującą LCN jako unsigned 64-bit i odrzucającą nieprawidłowe wartości.
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-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.
- CVE-2026-98135Średnie
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.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ntfs: reject invalid MFT LCNs from boot sector The NTFS boot sector stores the MFT and MFTMirr locations as unsigned 64-bit LCNs, but parse_ntfs_boot_sector() decoded them into an s64. A crafted high-bit value could therefore become negative and pass the existing upper-bound check. The invalid value then propagated into the MFT zone allocator and could result in an out-of-bounds access to lcn_empty_bits_per_page.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

