Katalog CVE

CVE-2026-80869

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux w systemie plików NTFS podczas montowania partycji funkcja ntfs_read_inode_mount() nieprawidłowo sprawdza granice wpisów na liście atrybutów $MFT. Krótki wpis o długości kontrolowanej przez atakującego może spowodować odczyt poza zakresem bufora, gdy rozmiar listy atrybutów jest wielokrotnością rozmiaru sektora.

Ocena ryzyka

Podmontowanie specjalnie spreparowanego obrazu systemu plików NTFS może doprowadzić do odczytu poza zakresem pamięci jądra, co może skutkować wyciekiem informacji lub awarią systemu.

Rekomendacja

Zainstaluj poprawkę jądra Linux, która dodaje walidację wpisów listy atrybutów za pomocą funkcji ntfs_attr_list_entry_is_valid() przed ich użyciem.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: ntfs: bound the attribute-list entry in ntfs_read_inode_mount() The $MFT attribute-list walk in ntfs_read_inode_mount() validates each entry only with "(u8 *)al_entry + 6 > al_end" and "(u8 *)al_entry + le16_to_cpu(al_entry->length) > al_end", but then reads al_entry->lowest_vcn (an __le64 at offset 8) and al_entry->mft_reference (offset 16) -- fields beyond the 6 bytes proven in range. al_entry->length is attacker-controlled and only required non-zero, so a short entry (e.g. length 8) placed at the tail passes both checks while the lowest_vcn / mft_reference reads fall past al_end. al_end is ni->attr_list + attr_list_size (the on-disk size); the buffer is kvzalloc(round_up(attr_list_size, SECTOR_SIZE)), so the sector rounding usually absorbs the over-read -- but when attr_list_size is a multiple of SECTOR_SIZE there is no slack and a crafted $MFT attribute list produces an out-of-bounds read at mount time. Validate the entry with ntfs_attr_list_entry_is_valid() (added in patch 1/3) before dereferencing it, matching the bound the other attribute-list walks now use. The validator already requires the length to cover the fixed header, which makes the separate "!al_entry->length" check redundant, so drop it too.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS