CVE-2026-99084
NieznaneStreszczenie
W jądrze Linux naprawiono problem w iterate_dir(), gdzie blokada i_rwsem katalogu była trzymana podczas odczytu katalogu, nawet jeśli katalog jest niezmienny i nigdy nie jest usuwany. Dla katalogu instancji nullfs (współdzielonego przez wiele przestrzeni nazw montowania i wątków jądra) złośliwy czytelnik mógł zablokować tę blokadę na dowolnie długo, blokując operacje mkdir, wyszukiwania i montowania dla innych użytkowników. Dodano flagę FOP_IMMUTABLE, która pozwala pominąć blokadę dla takich katalogów.
Ocena ryzyka
Podatność umożliwia jednemu użytkownikowi pustej przestrzeni nazw montowania zablokowanie wszystkich innych użytkowników współdzielących ten sam katalog (np. roota przestrzeni nazw jądra), co prowadzi do odmowy usługi (DoS) poprzez zawieszenie operacji na systemie plików.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę (wprowadzającą flagę FOP_IMMUTABLE i pomijanie blokady i_rwsem dla niezmiennych katalogów).
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-99087Nieznane
W jądrze Linux w dm-integrity występuje błąd, który powoduje dereferencję wskaźnika NULL, gdy urządzenie ma ustawioną flagę SB_FLAG_DIRTY_BITMAP i jest aktywowane w trybie 'R'. Funkcja dm_integrity_resume próbuje odczytać dziennik zawierający bitmapę, co prowadzi do awarii. Poprawka pomija zapisy do urządzenia w trybie 'R' podczas wznawiania.
- CVE-2026-99086Nieznane
W jądrze Linux dm-integrity nie waliduje superbloku podczas wznawiania urządzenia, co pozwala użytkownikowi zmodyfikować superblok na nośniku podczas zawieszenia urządzenia. Może to prowadzić do niezgodności rozmiarów struktur w pamięci i zapisu poza dziennik, w tym zapisu 512 bajtów przez wskaźnik NULL. Poprawka zapisuje zwalidowany superblok w konstruktorze i odmawia wznowienia, jeśli geometria na dysku uległa zmianie.
- CVE-2026-99085Nieznane
W jądrze Linux naprawiono błąd w schedulerze sched_ext, który powodował zawieszenie przy wyłączaniu CPU, gdy zadania wygasającego procesora pozostawały w kolejce BPF schedulera. Zadania te były nadal liczone w runqueue, ale nieaktywny CPU nie wywoływał ops.dispatch() i nie mógł ich przejąć, co blokowało wątek hotplug i cpu_down() trzymający cpu_hotplug_lock. Poprawka ponownie kolejkuje zadania z offline'owanego rq na lokalny DSQ, aby balance_push() mógł je przenieść.
- CVE-2026-99083Nieznane
W jądrze Linux serwer ksmbd ma błąd zapisu poza granice sterty w funkcji krb5_authenticate(). Gdy SMB2_SESSION_SETUP jest przetwarzane jako niepierwszy element złożonego żądania SMB2, obliczenie out_len pomija work->next_smb2_rsp_hdr_off, co zawyża dostępne miejsce w buforze i pozwala memcpy() zapisać blob AP-REP poza response_buf. Poprawka odejmuje tę wartość przy obliczaniu out_len.
- CVE-2026-99082Nieznane
W jądrze Linux naprawiono błąd w KVM na architekturze x86 dotyczący pamięci podręcznej MMIO dla poszczególnych vCPU. Cache był oznaczany generacją memslotów, ale zarówno przy wypełnianiu, jak i walidacji używano kvm_memslots() wybierającego bezwarunkowo przestrzeń adresową 0, nawet gdy vCPU działał w trybie SMM i korzystał z przestrzeni adresowej 1. W rezultacie aktualizacja memslotów SMM mogła pozostawić pozornie ważny wpis z dawnej przestrzeni SMM po powrocie vCPU do normalnej przestrzeni adresowej, co pozwalało gościowi wymusić wyjście KVM_EXIT_MMIO dla prawidłowego RAM.
- CVE-2026-99080Nieznane
W jądrze Linux w funkcji clear_inode() występuje wyciek węzłów xarray, który można wywołać m.in. przez madvise. Zamiast naprawiać wycieki w miejscach ich powstawania, poprawka wywołuje xa_destroy(), co dodatkowo cyklicznie zwalnia i pobiera blokadę i_pages.
- CVE-2026-99079Nieznane
W jądrze Linux sterownik net/mlx5e może zwolnić nieaktualny bufor XSK podczas ponownej próby uzupełnienia w legacy cyclic RQ. Gdy uzupełnienie powiedzie się tylko częściowo, WQE bez zamiennika zachowuje stary wskaźnik do bufora, który może zostać przydzielony innemu WQE, co prowadzi do zwolnienia aktywnego bufora i podwójnego opublikowania tej samej ramki UMEM. Poprawka oznacza WQE jako zwolniony natychmiast po zwolnieniu po stronie sterownika.
- CVE-2026-99078Nieznane
W jądrze Linux sterownik net/mlx5e może zwolnić nieaktualny bufor XSK podczas ponownej próby uzupełnienia MPWQE w striding RQ. Gdy alokacja XSK zwróci -ENOMEM, actual_wq_head nie jest przesuwany, a późniejsza próba NAPI może ponownie wywołać xsk_buff_free() przez nieaktualne wskaźniki po zwróceniu ramek do puli XSK. Poprawka ustawia wszystkie bity skip_release_bitmap w ścieżce błędu mlx5e_xsk_alloc_rx_mpwqe().
- CVE-2026-99077Nieznane
W jądrze Linux naprawiono podatność w obsłudze protokołu IPv4/UDP, która pozwalała atakującemu spoza ścieżki na przeprowadzenie ataku side-channel na cache wyjątków FIB (FNHE). Poprzednio wyjątek był tworzony tylko wtedy, gdy pakiet UDP można było dopasować do istniejącego gniazda, co umożliwiało odkrycie efemerycznego portu używanego przez połączone gniazdo UDP. Poprawka polega na zawsze tworzeniu FNHE przed próbą dopasowania gniazda.
- CVE-2026-99076Nieznane
W jądrze Linux naprawiono podatność w obsłudze IPv6/UDP, która pozwalała atakującemu spoza ścieżki na atak side-channel na pamięć podręczną wyjątków (exception cache). Poprzednio wyjątek był tworzony tylko wtedy, gdy pakiet UDP dało się dopasować do istniejącego gniazda, co umożliwiało odkrycie efemerycznego portu używanego przez połączone gniazdo UDP. Poprawka polega na zawsze tworzeniu wyjątku przed próbą dopasowania gniazda.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: readdir: take no inode lock on an immutable directory iterate_dir() takes the directory's i_rwsem shared and holds it across ->iterate_shared(). For a directory that never has an entry and is never removed the lock keeps nothing still, it only orders every reader and every writer of that inode behind each other. For the directory of a nullfs instance that matters. The instance of the initial mount namespace is the root of every empty mount namespace and the private instance is the root of every kernel thread, so one inode is shared across users who have nothing else in common. And a reader can hold the lock for as long as it likes: back the getdents() buffer with a mapping of a file on a FUSE mount of your own, let the copy of "." and ".." fault and let the server wait. Queue an exclusive taker behind it, a mkdir() in that directory goes through start_dirop() before the read-only mount is reported, and from then on every lookup that misses the dcache in that directory, every create and every mount on it waits until the server answers. One user of an empty mount namespace stalls all the others. Add FOP_IMMUTABLE for the file operations of a directory that never changes and is never removed and let iterate_dir() skip the lock for it. The flag never changes for a file, ->f_pos is protected by f_pos_lock since directories are FMODE_ATOMIC_POS, IS_DEADDIR can't be set on such a directory and neither touch_atime() nor fsnotify take i_rwsem. Set it on the nullfs directory. The placeholder directories of libfs never have an entry either but their owners remove them, so they keep the lock.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

