În miez Linux A cincea vulnerabilitate critică (1, 2, 3) din ultimele două săptămâni a fost identificată, permițând unui utilizator să își escaladeze privilegiile în sistem. Au fost publicate două vulnerabilități funcționale: sshkeysign_pwn permite unui utilizator neprivilegiat să citească conținutul cheilor SSH private ale gazdei /etc/ssh/ssh_host_*_key, iar chage_pwn permite unui utilizator neprivilegiat să citească conținutul fișierului /etc/shadow care conține hash-uri ale parolei utilizatorului.
Vulnerabilitatea nu a fost destinată dezvăluirii, dar un cercetător în domeniul securității a reușit să o identifice, pe baza unui patch propus pentru kernel, care permite citirea fișierelor accesibile doar utilizatorului root, cum ar fi /etc/shadow. Modificarea kernelului a ajustat logica pentru utilizarea funcției get_dumpable() în ptrace la determinarea nivelurilor de acces în funcția ptrace_may_access().
Vulnerabilitatea este cauzată de o condiție de concurență care permite acces neprivilegiat la descriptorul de fișier pidfd după accesarea unui fișier dintr-un proces root suid. Între deschiderea fișierului și resetarea privilegiilor în programul suid (de exemplu, prin intermediul funcției setreuid), apare o situație în care o aplicație care rulează programul root suid poate accesa un fișier deschis de programul suid prin intermediul descriptorului pidfd, chiar dacă permisiunile fișierului nu permit acest lucru.
Fereastra exploatabilă apare deoarece funcția „__ptrace_may_access()” omite verificarea accesului la fișiere dacă câmpul task->mm este setat la NULL după exit_mm(), dar înainte de apelarea funcției exit_files(). În prezent, apelul de sistem pidfd_getfd presupune că ID-ul de utilizator (uid) al procesului apelant corespunde cu ID-ul de utilizator autorizat să acceseze fișierul. Este demn de remarcat faptul că această problemă a fost abordată anterior în 2020, dar rămâne nerezolvată.
În exploit-ul care obține conținutul fișierului /etc/shadow, atacul constă în lansarea repetată a aplicației /usr/bin/chage prin fork+execl cu indicatorul suid root, care citește conținutul fișierului /etc/shadow. După ce procesul se bifurcă, se execută apelul de sistem pidfd_open, iar o buclă a descriptorilor pidfd disponibili este efectuată prin apelul de sistem pidfd_getfd și verificarea acestora prin /proc/self/fd. În exploit-ul sshkeysign_pwn, manipulări similare sunt efectuate cu programul suid root ssh-keysign.
Problemei nu i-a fost încă atribuit un identificator CVE, iar actualizările kernelului și ale pachetului nu au fost publicate în distribuții. Vulnerabilitatea rămâne nepachetată în kernelurile 7.0.7, 6.18.30 și 6.12.88, lansate acum câteva ore. În momentul scrierii acestui articol, doar patch-ul poate fi utilizat. Se discută posibile soluții alternative, cum ar fi setarea sysctl kernel.yama.ptrace_scope=3 sau eliminarea indicatorului root suid din executabilele din sistem (cel puțin din utilitarele ssh-keysign și chage utilizate în exploit-uri).
Actualizare: Vulnerabilității i s-a atribuit identificatorul CVE-2026-46333. Au fost generate actualizări ale kernelului. Linux 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 și 5.10.256 cu remedieri de vulnerabilități. Starea remedierilor de vulnerabilități pentru aceste distribuții poate fi evaluată pe aceste pagini: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.
Sursa: opennet.ru
