CVE-2026-89540
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
sunrpc: init gssp_lock przed opublikowaniem wpisu proc
create_use_gss_proxy_proc_entry() publikuje /proc/net/rpc/use-gss-proxy
poprzez proc_create_data() zanim init_gssp_clnt() uruchomi mutex_init()
sn->gssp_lock. Gdy dentysta zostanie połączona w proc_subdir_lock, tak jest
natychmiast dostępny z przestrzeni użytkownika, więc zapis, który wyląduje w
window kieruje set_gssp_clnt() do mutex_lock() przy inicjacji zerowej
muteks struktury.
create_use_gss_proxy_proc_entry(net)
proc_create_data("use-gss-proxy", ...) /* Dentry Live */
init_gssp_clnt(sn)
mutex_init(&sn->gssp_lock) /* za późno */
write_gssp()
set_gssp_clnt(net)
mutex_lock(&sn->gssp_lock) /* niezainicjowany */
gssp_rpc_create(...)
sn->gssp_clnt = clnt
mutex_unlock(&sn->gssp_lock)
Okno obejmuje tylko dwie instrukcje pomiędzy proc_create_data()
return i init_gssp_clnt(), więc piszący osiąga to tylko wtedy, gdy
wątek rejestracyjny jest tam wywłaszczony, podczas gdy inne zadanie już jest
otwarcie świeżo opublikowanego pliku. Register_pernet_subsys() działa
kontekst możliwy do wywłaszczenia w pernet_ops_rwsem, więc wywłaszczanie jest
możliwe, a okno rozszerza się po załadowaniu modułu auth_rpcgss, gdy plik
proc wpis jest tworzony dla każdej aktywnej przestrzeni nazw sieci, której zadaniami są
już działa. Pisarz, który wygra wyścig, zamyka pole wypełnione zerem
muteks struktury. W CONFIG_DEBUG_MUTEXES wyłącza się brakująca wartość magiczna
ikona „blokada używana bez inicjacji”; w jądrze produkcyjnym szybka ścieżka
uzyskuje blokadę poprzez CMPXCHG (właściciel, 0, prąd). W tym drugim przypadku
drugi zapis, który pojawia się, zanim init_gssp_clnt() ponownie wyzeruje właściciela
może jednocześnie wejść do set_gssp_clnt(), zamknij pierwszego pisarza
clnt, gdy jest on nadal używany i wycieka clnt przegranego.
Napraw, inicjując sn->gssp_lock w sunrpc_init_net(), aby zapewnić jego żywotność
odpowiada sieci sunrpc_net, w której się znajduje. sn->gssp_clnt ma już wartość NULL
kzalloc obsługujący pamięć net_generic, więc leniwy pomocnik to nie
już potrzebne; upuść funkcję init_gssp_clnt(), jej prototyp i wywołanie z
utwórz_use_gss_proxy_proc_entry(). sunrpc.ko to czas kompilacji
zależność auth_rpcgss.ko, więc sunrpc_init_net() zawsze działała
co netns zanim jakakolwiek init auth_gss pernet będzie mogła opublikować proc
wpis.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org