CVE-2026-89492
NieznaneStreszczenie
W jądrze Linux w module ocfs2 wykryto lukę polegającą na braku walidacji liczby wpisów w indeksie katalogu podczas odczytu metadanych. Funkcje ocfs2_validate_dx_leaf() i ocfs2_validate_dx_root() nie sprawdzają, czy pola de_num_used i de_count mieszczą się w pojemności bloku, co pozwala spreparowanemu obrazowi dysku ustawić je na 0xffff i doprowadzić do odczytu poza granicami bloku metadanych 4KB. Luka jest osiągalna przy każdej operacji wyszukiwania ścieżki, stat() lub open() na zaindeksowanym katalogu po zamontowaniu obrazu.
Ocena ryzyka
Podatność umożliwia zdalnemu lub lokalnemu atakującemu z dostępem do spreparowanego obrazu systemu plików wywołanie odczytu poza granicami pamięci (slab out-of-bounds read), co może prowadzić do wycieku danych jądra lub awarii systemu (odmowa usługi). W środowiskach montujących niezaufane obrazy ocfs2 ryzyko jest wysokie.
Rekomendacja
Należy jak najszybciej zaktualizować jądro Linux do wersji zawierającej poprawkę walidującą pola de_count i de_num_used w ocfs2_validate_dx_leaf() i ocfs2_validate_dx_root(). Do czasu aktualizacji unikać montowania niezaufanych obrazów systemów plików ocfs2.
Inne podatności w Linux kernel (ocfs2)
Zobacz wszystkie- CVE-2026-89496Nieznane
W jądrze Linux w systemie plików ocfs2 występuje wyciek pamięci podczas operacji copy-on-write wywoływanych przez copy_file_range() w obrębie tego samego systemu plików. Problem został wykryty przez fuzzing i polega na tym, że zwalnianie bloków (deallocs) nie jest zawsze uruchamiane po zakończeniu copy-on-write, co prowadzi do nieodwołanych alokacji pamięci.
- CVE-2026-89494Nieznane
W jądrze Linux w module ocfs2 funkcja dlm_mig_lockres_handler ufała polom num_locks i lockname_len z wiadomości DLM_MIG_LOCKRES bez ich walidacji. Prowadziło to do odczytu poza granicami bufora (panic BUG_ON) oraz zapisu poza granicami sterty przy kopiowaniu nazwy blokady do 32-bajtowego obiektu. Podatność może wykorzystać dowolny węzeł w domenie.
- CVE-2026-89493Nieznane
W jądrze Linux w module ocfs2 brakowało walidacji pól rl_used i rl_count w bloku refcount. Złośliwy lub uszkodzony obraz ocfs2 z rl_used ustawionym na 0xffff powoduje odczyt poza zakresem bloku metadanych, a następnie memmove poza bufor podczas operacji reflink (FICLONE). Podatność wymaga lokalnego dostępu (CAP_SYS_ADMIN przy montowaniu obrazu lub zapis do urządzenia blokowego).
- CVE-2026-89490Nieznane
W jądrze Linux w module ocfs2 funkcja ocfs2_dir_foreach_blk_el() na 32-bitowych jądrach błędnie obliczała maskę pozycji katalogu, co powodowało wyzerowanie górnych 32 bitów pozycji. Przy przekroczeniu granicy 4 GiB podczas readdir() pozycja była resetowana, co prowadziło do nieskończonego ponownego wyliczania tych samych wpisów katalogu.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate directory-index entry counts when reading metadata ocfs2_validate_dx_leaf() and ocfs2_validate_dx_root() check the ECC and signature of an indexed-directory block before it reaches higher-level callers, but neither validator bounds the ocfs2_dx_entry_list counts against the capacity of the block that holds them. ocfs2_dx_dir_search() then walks for (i = 0; i < le16_to_cpu(entry_list->de_num_used); i++) dx_entry = &entry_list->de_entries[i]; over de_num_used entries with no bounds check. entry_list is either dx_leaf->dl_list (from ocfs2_read_dx_leaf) or, for an inline root, dx_root->dr_entries. A crafted on-disk image can set de_num_used (and de_count, which is the __counted_by_le() bound of de_entries) to 0xffff and make the walk read far past the end of the 4KB metadata block, giving a slab out-of-bounds read reachable from any path lookup, stat() or open() on an indexed directory once the image is mounted. Commit 775c17386a6f ("ocfs2: validate dx_root extent list fields during block read") already bounds dr_list for the non-inline dx_root, but left the inline dr_entries path and the dx_leaf dl_list unchecked. Add the same read-time validation for both entry lists: de_count must equal the capacity of the block (ocfs2_dx_entries_per_leaf()/per_root()) and de_num_used must not exceed de_count, rejecting corrupted metadata with -EFSCORRUPTED before ocfs2_dx_dir_search() can walk an out-of-range entry array. de_count is always written as exactly the block capacity when a leaf or inline root is formatted, so the equality check does not reject any valid image. Found by 0sec automated security-research tooling (https://0sec.ai).

