CVE-2026-89496
Niskie ryzyko· EPSS 7%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Wyciek pamięci może prowadzić do stopniowego wyczerpywania zasobów jądra i w konsekwencji do niestabilności lub awarii systemu na maszynach używających systemu plików ocfs2. W środowiskach wielokrotnego użytku może to zostać wykorzystane do przeprowadzenia ataku typu denial of service.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę dla CVE-2026-89496. Jeśli aktualizacja nie jest możliwa, rozważ ograniczenie użycia systemu plików ocfs2 lub monitorowanie zużycia pamięci jądra.
Inne podatności w Linux kernel (ocfs2)
Zobacz wszystkie- CVE-2026-89494Krytyczne
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-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-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: always run deallocs on copy-on-write completion Local fuzzing of 6.12.94 has found the following memory leak caused by doing 'copy_file_range()' within the same filesystem: unreferenced object 0xffff88812192c980 (size 32): comm "syz.0.49", pid 12095, jiffies 4294964143 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ c0 c5 92 21 81 88 ff ff 00 02 00 00 00 06 00 00 ...!............ backtrace (crc 7068d63f): kmemleak_alloc_recursive include/linux/kmemleak.h:42 [inline] slab_post_alloc_hook mm/slub.c:4152 [inline] slab_alloc_node mm/slub.c:4197 [inline] __kmalloc_cache_noprof+0x168/0x2c0 mm/slub.c:4358 kmalloc_noprof include/linux/slab.h:878 [inline] ocfs2_find_per_slot_free_list fs/ocfs2/alloc.c:6618 [inline] ocfs2_cache_block_dealloc+0x155/0x4b0 fs/ocfs2/alloc.c:6786 ocfs2_cache_extent_block_free fs/ocfs2/alloc.c:6819 [inline] ocfs2_unlink_path+0x286/0x450 fs/ocfs2/alloc.c:2613 ocfs2_rotate_subtree_left fs/ocfs2/alloc.c:2779 [inline] __ocfs2_rotate_tree_left+0x1f6f/0x2da0 fs/ocfs2/alloc.c:2985 ocfs2_rotate_tree_left+0x283/0xe00 fs/ocfs2/alloc.c:3237 ocfs2_try_to_merge_extent+0xf56/0x1a20 fs/ocfs2/alloc.c:3825 ocfs2_split_extent+0x15f4/0x2940 fs/ocfs2/alloc.c:5138 ocfs2_clear_ext_refcount+0x2f6/0x550 fs/ocfs2/refcounttree.c:3098 ocfs2_replace_clusters fs/ocfs2/refcounttree.c:3131 [inline] ocfs2_make_clusters_writable fs/ocfs2/refcounttree.c:3255 [inline] ocfs2_replace_cow+0x991/0x1660 fs/ocfs2/refcounttree.c:3349 ocfs2_refcount_cow_hunk fs/ocfs2/refcounttree.c:3427 [inline] ocfs2_refcount_cow+0x5e1/0x9f0 fs/ocfs2/refcounttree.c:3470 ocfs2_prepare_inode_for_write fs/ocfs2/file.c:2340 [inline] ocfs2_file_write_iter+0xbda/0x1880 fs/ocfs2/file.c:2451 iter_file_splice_write+0x890/0xf60 fs/splice.c:743 do_splice_from fs/splice.c:944 [inline] direct_splice_actor+0x232/0x480 fs/splice.c:1167 splice_direct_to_actor+0x4b4/0xb60 fs/splice.c:1111 do_splice_direct_actor fs/splice.c:1210 [inline] do_splice_direct+0x10f/0x1c0 fs/splice.c:1236 do_sendfile+0x430/0xbf0 fs/read_write.c:1388 unreferenced object 0xffff88812192c5c0 (size 32): comm "syz.0.49", pid 12095, jiffies 4294964143 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 29 70 00 00 00 00 00 00 19 00 00 00 00 00 00 00 )p.............. backtrace (crc afec850f): kmemleak_alloc_recursive include/linux/kmemleak.h:42 [inline] slab_post_alloc_hook mm/slub.c:4152 [inline] slab_alloc_node mm/slub.c:4197 [inline] __kmalloc_cache_noprof+0x168/0x2c0 mm/slub.c:4358 kmalloc_noprof include/linux/slab.h:878 [inline] kzalloc_noprof include/linux/slab.h:1014 [inline] ocfs2_cache_block_dealloc+0x25c/0x4b0 fs/ocfs2/alloc.c:6793 ocfs2_cache_extent_block_free fs/ocfs2/alloc.c:6819 [inline] ocfs2_unlink_path+0x286/0x450 fs/ocfs2/alloc.c:2613 ocfs2_rotate_subtree_left fs/ocfs2/alloc.c:2779 [inline] __ocfs2_rotate_tree_left+0x1f6f/0x2da0 fs/ocfs2/alloc.c:2985 ocfs2_rotate_tree_left+0x283/0xe00 fs/ocfs2/alloc.c:3237 ocfs2_try_to_merge_extent+0xf56/0x1a20 fs/ocfs2/alloc.c:3825 ocfs2_split_extent+0x15f4/0x2940 fs/ocfs2/alloc.c:5138 ocfs2_clear_ext_refcount+0x2f6/0x550 fs/ocfs2/refcounttree.c:3098 ocfs2_replace_clusters fs/ocfs2/refcounttree.c:3131 [inline] ocfs2_make_clusters_writable fs/ocfs2/refcounttree.c:3255 [inline] ocfs2_replace_cow+0x991/0x1660 fs/ocfs2/refcounttree.c:3349 ocfs2_refcount_cow_hunk fs/ocfs2/refcounttree.c:3427 [inline] ocfs2_refcount_cow+0x5e1/0x9f0 fs/ocfs2/refcounttree.c:3470 ocfs2_prepare_inode_for_write fs/ocfs2/file.c:2340 [inline] ocfs2_file_write_iter+0xbda/0x1880 fs/ocfs2/file.c:2451 iter_file_splice_write+0x890/0xf60 fs/splice.c:743 do_splice_from fs/splice.c:9 ---truncated---
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

