Podatność w sterowniku protokołu 9P jądra Linux powoduje use-after-free lub underflow licznika referencji przez nieprawidłowe zwolnienie wskaźnika fid aliasującego oldfid w ścieżce błędu funkcji p9_client_walk(). Błąd otrzymał najwyższy możliwy wynik CVSS 10.0, co wskazuje na krytyczne ryzyko.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: 9p: avoid putting oldfid in p9_client_walk() error path When p9_client_walk() is called with clone set to false, fid aliases oldfid. If the walk subsequently fails after the request has been sent, the error path jumps to clunk_fid, which currently calls p9_fid_put(fid) unconditionally. This drops a reference to oldfid even though ownership of oldfid remains with the caller. If this is the last reference, oldfid can be clunked and destroyed while the caller still expects it to be valid. A later use or put of oldfid can then trigger a use-after-free or refcount underflow. Fix this by only putting fid in the clunk_fid error path when it does not alias oldfid, matching the existing guard in the error path below. This can be triggered when a multi-component walk is split into multiple p9_client_walk() calls and a later non-cloning walk fails. A reproducer and refcount warning logs are available on request.
Gdy funkcja p9_client_walk() jest wywoływana z parametrem clone ustawionym na false, zmienna fid staje się aliasem oldfid — obie wskazują na ten sam obiekt. Jeśli żądanie sieciowe zostanie wysłane, lecz operacja walk zakończy się niepowodzeniem, ścieżka obsługi błędu (etykieta clunk_fid) bezwarunkowo wywołuje p9_fid_put(fid), co zmniejsza licznik referencji obiektu należącego nadal do wywołującego. Gdy jest to ostatnia referencja, obiekt oldfid zostaje zniszczony, mimo że wywołujący nadal spodziewa się jego istnienia. Późniejsze użycie lub zwolnienie oldfid prowadzi do use-after-free bądź underflow licznika referencji. Scenariusz można wywołać, gdy wieloelementowa ścieżka (multi-component walk) jest dzielona na kilka wywołań p9_client_walk(), a późniejsze wywołanie bez klonowania kończy się błędem.
Atakujący lub złośliwy serwer 9P może doprowadzić do use-after-free w przestrzeni jądra, co potencjalnie umożliwia eskalację uprawnień, zdalne wykonanie kodu (RCE) lub destabilizację systemu (kernel crash).
Należy zastosować patche dostępne u producenta zgodnie z referencjami — commity opublikowane w repozytorium linux-stable: 1a3860d46e3e, 6dbe9443d9f5, 99c379ca1e22, a61bdcba4f64, a7656d368265.
Jądro Linux z obsługą protokołu 9P (moduł 9p/client); konkretne wersje wskazane w referencjach producenta (patche dostępne w repozytorium stable kernel).
Według opisu EN autor podatności dysponuje reproduktorem oraz logami ostrzeżeń licznika referencji, dostępnymi na żądanie. CVE posiada datę publikacji 2026-07-19, co może wskazywać na przyszłą datę lub błąd w metadanych.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HLinux Kernel
OSLinux6.0 – 6.1.177 (bez)6.2 – 6.6.144 (bez)6.7 – 6.12.95 (bez)6.13 – 6.18.38 (bez)6.19 – 7.1.3 (bez)
Powiązane podatności
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
RCE przez YAML deserialization w IBM Aspera Faspex
RCE w VMware Workspace ONE Access i Identity Manager poprzez server-side template injection
Command Injection w VMware Workspace One Access i Identity Manager