Ranljivost u Linux pod-sistemu pidfd, koja omogućava čitanje datoteka koje nisu dostupne korisniku

V jedru Linux je bila odkrita peta (1, 2, 3) kritična ranljivost v zadnjih dveh tednih, ki omogoča uporabniku povečanje svojih privilegijev v sistemu. Objavljena sta bila dva delujoča eksploita: sshkeysign_pwn omogoča neprivilegiranemu uporabniku dostop do vsebine zasebnih gostiteljskih SSH ključev /etc/ssh/ssh_host_*_key, medtem ko chage_pwn omogoča branje vsebine datoteke /etc/shadow s hash-ji uporabniških gesel.

Podrobnosti o ranljivosti niso bile predvidene za razkritje, vendar je eden od raziskovalcev v varnosti na podlagi predlaganega popravka za jedro uspel določiti naravo ranljivosti, ki omogoča branje datotek, dostopnih le uporabniku root, na primer /etc/shadow. V dodanem popravku za jedro je bila popravljena logika uporabe funkcije get_dumpable() v ptrace pri določanju ravni dostopa v funkciji ptrace_may_access().

Sama ranljivost je povzročena z stanje dirke, ki povzroča možnost neprivilegiranega dostopa do datotečnega descriptorja pidfd po dostopu do datoteke iz suid root procesa. V trenutku med odpiranjem datoteke in ponastavitvijo privilegijev v suid programu (na primer preko funkcije setreuid) nastane situacija, ko se lahko aplikacija, ki je zagnala suid root program, preko descriptorja pidfd obrne na odprto datoteko v suid programu, tudi če pravice dostopa do datoteke tega ne dovoljujejo.

Okno za izkoriščanje nastane, ker funkcija '__ptrace_may_access()' preskoči preverjanje možnosti dostopa do datoteke, če je polje task->mm nastavljeno na NULL po izvedbi exit_mm(), vendar pred klicem exit_files(). V tistem trenutku sistemski klic pidfd_getfd meni, da se identifikator uporabnika (uid) klicnega procesa ujema z identifikatorjem, kateremu je dovoljeno dostopati do datoteke. Omeniti velja, da so se na težavo prvič opozorili še leta 2020, vendar je ta ostala nepoboljšana.

V eksploitu, ki pridobi vsebino /etc/shadow, napad temelji na cikličnem zagonu preko fork+execl aplikacije /usr/bin/chage s flagom suid root, ki bere vsebino /etc/shadow. Ko se proces odvije, se izvede sistemski klic pidfd_open in zaključi se ciklično preverjanje razpoložljivih pidfd-deskriptorjev preko sistemskega klica pidfd_getfd in njihovih preverjanj preko /proc/self/fd. V eksploitu sshkeysign_pwn se podobne manipulacije izvajajo s suid root programom ssh-keysign.

CVE identifier for the issue has not been assigned yet, and updates for the core and packages in the distributions have not been released. In the kernels released a few hours ago, 7.0.7, 6.18.30, and 6.12.88, the vulnerability remains unpatched. As of this writing, only a patch can be used. Possible workarounds to mitigate the vulnerability are being discussed, such as setting sysctl kernel.yama.ptrace_scope=3 or removing the suid root flag from executable files in the system (at least from the utilities ssh-keysign and chage used in exploits).

Update: The vulnerability has been assigned the CVE-2026-46333 identifier. Updates to the Linux kernel 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207, and 5.10.256 have been released to address the vulnerability. The status of vulnerability remediation in distributions can be assessed on the following pages: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster