Katalog CVE

CVE-2026-89715

Niskie ryzyko· EPSS 10%
Opublikowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.20%

Percentyl 10 - wyżej niż 10% wszystkich znanych CVE

Streszczenie

W jądrze Linux w mechanizmie NFS/localio występuje wyciek referencji, gdy funkcja nfs_uuid_add_file() napotka wyścig z nfs_uuid_put() i zwróci błąd -ENXIO. W takiej sytuacji ścieżka obsługi błędu nie zwalnia referencji do nfsd_file oraz nfsd_net, co uniemożliwia poprawne zamknięcie zasobów sieciowych.

Ocena ryzyka

Każde wystąpienie podatności powoduje trwałe zablokowanie referencji do pliku, dentry, inode oraz struktur sieciowych, co może uniemożliwić zwolnienie nfsd_net i przestrzeni nazw sieci (netns). W dłuższej perspektywie prowadzi to do wycieku zasobów i problemów ze stabilnością systemu.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która zwalnia referencje do pliku i sieci na ścieżce błędu oraz zwraca -ENXIO. Po aktualizacji zaleca się ponowne uruchomienie systemu w celu zwolnienia wcześniej wyciekłych zasobów.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: NFS/localio: fix ref leak on nfs_uuid_add_file failure When nfs_uuid_add_file() races with nfs_uuid_put() tearing down uuid->net, it returns -ENXIO without publishing nfl->nfs_uuid via rcu_assign_pointer(). nfs_open_local_fh() then enters its error branch and only releases the slot's file ref and its paired net ref plus its own entry-time net ref, while the close path is a no-op: nfs_close_local_fh() nfs_uuid = rcu_dereference(nfl->nfs_uuid); if (!nfs_uuid) { rcu_read_unlock(); return; } /* always */ nfsd_open_local_fh() returns localio holding a caller-owned +1 nfsd_file reference (from nfsd_file_get() after nfsd_file_acquire_local()) and an entry-time nfsd_net reference (from its first nfsd_net_try_get()) embedded as nf->nf_net. Both are leaked on the failure path, pinning one nfsd_file (and the underlying struct file, dentry, inode) and one nfsd_net_ref per occurrence, which blocks nfsd_net and netns teardown. Fix by releasing the caller-owned file ref and its net ref through the existing helper, using a stack-local RCU pointer so the helper can xchg it out, then returning -ENXIO so callers do not dereference a localio whose slot has been cleared: struct nfsd_file __rcu *tmp = RCU_INITIALIZER(localio); nfs_to_nfsd_file_put_local(pnf); nfs_to_nfsd_file_put_local(&tmp); localio = ERR_PTR(-ENXIO); The trailing nfs_to_nfsd_net_put(net) continues to release the outer net ref, so all three nfsd_net_try_get() increments are balanced on the error branch.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS