CVE-2026-89494
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 53 - wyżej niż 53% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący węzeł w klastrze może wywołać panikę jądra (odmowa usługi) lub uszkodzić pamięć sterty, co potencjalnie prowadzi do wykonania kodu w kontekście jądra. Wpływa to na stabilność i bezpieczeństwo całego klastra OCFS2.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę walidującą pola lockname_len, num_locks oraz rozmiar ładunku w dlm_mig_lockres_handler. Jeśli aktualizacja nie jest możliwa, rozważ ograniczenie zaufania do węzłów w domenie DLM.
Inne podatności w Linux kernel (ocfs2)
Zobacz wszystkie- CVE-2026-89492Krytyczne
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.
- CVE-2026-90301Wysokie
W jądrze Linux w module ocfs2 (o2hb) występuje błąd use-after-free związany z cyklem życia regionu heartbeat. Region jest publikowany w tabeli handlerów o2net zanim jego opóźnione prace (delayed work) zostaną zainicjalizowane, a przy zamykaniu nie ma pełnej synchronizacji z trwającymi wywołaniami zwrotnymi o2net. Prowadzi to do wyścigu i użycia zwolnionej pamięci (KASAN slab-use-after-free w __run_timers).
- CVE-2026-89496Niskie ryzyko· EPSS 7%
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-89493Wysokie
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-89490Niskie ryzyko· EPSS 7%
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.
- CVE-2023-52590Wysokie
W jądrze Linux system plików ocfs2 nieprawidłowo obsługiwał zmianę nazwy katalogu, którego katalog nadrzędny się nie zmienia. VFS nie blokuje przenoszonego katalogu w takim przypadku, a kod ocfs2 dotykał go bez blokady, co mogło uszkodzić system plików.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate lengths in dlm_mig_lockres_handler A node receiving a DLM_MIG_LOCKRES message trusts several fields of the peer-supplied dlm_migratable_lockres without validation. num_locks and lockname_len are bounded only on the sending side, and the message is never checked to actually carry num_locks migratable_lock entries. As a result dlm_process_recovery_data() walks mres->ml[0..num_locks) past the kmalloc(data_len) copy of the message (an out-of-bounds read that ends in a BUG_ON panic), and dlm_init_lockres() copies lockname_len bytes into the fixed 32-byte o2dlm_lockname slab object (a heap out-of-bounds write). Both are reachable by any node in the domain. Validate these fields right after dlm_grab(), before anything uses them -- including the not-joined error path, which already prints mres->lockname with the unbounded lockname_len as a %.*s precision. Reject the message unless lockname_len <= DLM_LOCKID_NAME_MAX, num_locks <= DLM_MAX_MIGRATABLE_LOCKS (the bound the sender already asserts), and the payload is large enough to hold the claimed locks. Conforming recovery and migration messages are unaffected.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

