CVE-2022-43945
WysokieStreszczenie
Implementacja NFSD w jądrze Linuxa przed wersjami 5.19.17 i 6.0.2 jest podatna na przepełnienie bufora. Klient może zmusić bufor wysyłania do zmniejszenia, wysyłając wiadomość RPC z nieprawidłowymi danymi, co prowadzi do zapisu poza przydzieloną przestrzenią bufora.
Ocena ryzyka
Przepełnienie bufora może prowadzić do awarii systemu lub umożliwić zdalnemu atakującemu wykonanie złośliwego kodu. To stwarza poważne zagrożenie dla integralności i dostępności systemu.
Rekomendacja
Zaleca się aktualizację jądra Linux do wersji 5.19.17 lub 6.0.2, aby usunąć tę podatność. Należy również monitorować systemy pod kątem nieautoryzowanych prób dostępu.
Inne podatności w Linux kernel NFSD
Zobacz wszystkie- CVE-2026-89706Nieznane
W jądrze Linux w module nfsd nie resetowano weryfikatora zapisu (write verifier) po niepowodzeniu asynchronicznego zapisu wstecznego operacji COPY. Gdy zapis wsteczny się nie powiódł, serwer zgłaszał klientowi NFS_UNSTABLE, ale nie rotował weryfikatora, przez co klient po wykonaniu COMMIT uznawał dane za trwałe, mimo że zapis się nie udał.
- CVE-2026-89705Nieznane
W jądrze Linux funkcja nfsd_dispatch() nie przywracała rq_status_counter do wartości parzystej na wszystkich ścieżkach wyjścia (cache-hit, drop, błąd kodowania). Pozostawiony nieparzysty licznik powodował, że bezblokadowy czytnik w nfsd_nl_rpc_status_get_dumpit() uznawał pola rqstp za stabilne i mógł odczytać dane poza końcem 8-elementowej tablicy ops.
- CVE-2026-89704Nieznane
W jądrze Linux funkcja _nfsd_copy_file_range() próbkowała kursor błędu zapisu wstecznego (dst->f_wb_err) po pętli kopiowania, a nie przed nią. Współbieżne COMMIT lub stabilny WRITE mogły przesunąć kursor, przez co błąd zapisu nie był wykrywany i ustawiano NFSD4_COPY_F_COMMITTED mimo niepowodzenia zapisu.
- CVE-2026-89703Nieznane
W jądrze Linux funkcja nfsd4_drop_revoked_stid() obsługująca FREE_STATEID dla delegacji odwołanych przez administratora nie ustawiała flagi SC_STATUS_FREED przed zwolnieniem cl_lock. Bez tej flagi zwolniona delegacja była dodawana do cl_revoked, co prowadziło do use-after-free przy późniejszym przechodzeniu po tej liście w __destroy_client().
- CVE-2026-89701Nieznane
W jądrze Linux ścieżki dekodowania TIME_DELEG_ACCESS i TIME_DELEG_MODIFY (oparte na xdrgen) zapisywały surową wartość uint32_t nseconds bezpośrednio do tv_nsec bez sprawdzenia warunku nseconds < NSEC_PER_SEC. Złośliwy klient mógł przesłać nieprawidłowy timespec, który propagował się przez notify_change() aż do dysku.
- CVE-2026-89700Nieznane
W jądrze Linux polityka nfsd_sock_nl_policy deklarowała NFSD_A_SOCK_ADDR jako NLA_BINARY bez minimalnej długości. Użytkownik z uprawnieniem CAP_NET_ADMIN mógł wysłać 16-bajtowy adres z sa_family=AF_INET6, powodując 12-bajtowy odczyt poza granicami bufora w trzech miejscach (rpc_cmp_addr_port, svc_find_listener, kernel_bind).
- CVE-2026-89699Nieznane
W jądrze Linux funkcja nfsd4_decode_create() przyjmowała nieograniczoną wartość cr_datalen z sieci dla celów dowiązań symbolicznych NF4LNK, umożliwiając klientowi wymuszenie alokacji kmalloc o rozmiarze do maksymalnego ładunku RPC (kilka MiB) na każdą operację COMPOUND. VFS odrzucał zbyt duże cele z ENAMETOOLONG, ale alokacja już się odbywała.
- CVE-2026-89698Nieznane
W jądrze Linux struktura nfsd_genl_rqstp deklarowała pola rq_daddr i rq_saddr jako zwykłe struct sockaddr (16 bajtów). Przy połączeniu klienta IPv6 funkcja nfsd_genl_rpc_status_compose_msg() rzutowała te pola na struct sockaddr_in6 (28 bajtów), odczytując 8 bajtów poza końcem pola i wysyłając do przestrzeni użytkownika obcięty adres IPv6 wraz z fragmentem rq_flags przez netlink.
- CVE-2026-89697Nieznane
W jądrze Linux gałąź BOTH_TIME_SET w nfsd_proc_setattr() wywoływała fh_verify() wcześnie, aby setattr_prepare() mógł sprawdzić dentry. Powodowało to pominięcie fh_want_write() w nfsd_setattr(), przez co notify_change() działał bez referencji zapisu do montowania.
- CVE-2026-89696Nieznane
W jądrze Linux w module nfsd występuje luka polegająca na tym, że po operacji FOREIGN PUTFH kolejne operacje mogą być wykonywane mimo że fh_dentry ma wartość NULL. Zdalny klient NFSv4.2 może spreparować żądanie COMPOUND, które doprowadzi do dereferencji wskaźnika NULL w wątku jądra nfsd. Problem dotyczy konfiguracji z włączonym CONFIG_NFSD_V4_2_INTER_SSC.
Oryginalny opis (angielski, źródło NVD)
The Linux kernel NFSD implementation prior to versions 5.19.17 and 6.0.2 are vulnerable to buffer overflow. NFSD tracks the number of pages held by each NFSD thread by combining the receive and send buffers of a remote procedure call (RPC) into a single array of pages. A client can force the send buffer to shrink by sending an RPC message over TCP with garbage data added at the end of the message. The RPC message with garbage data is still correctly formed according to the specification and is passed forward to handlers. Vulnerable code in NFSD is not expecting the oversized request and writes beyond the allocated buffer space. CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

