Qualys je identificirao ranjivost (CVE-2025-6019) u biblioteci libblockdev koja omogućuje dobivanje root privilegija manipuliranjem pozadinskog procesa udisks. Prototip ranjivosti demonstriran je u Ubuntu, Debian, Fedora i openSUSE Leap 15.
Proces udisks se koristi u gotovo svim distribucijama. Linux i pruža D-Bus sučelje za izvođenje operacija pohrane, kao što su montiranje i formatiranje. Za izvođenje operacija pohrane, udisks poziva funkcije biblioteke libblockdev. Prema zadanim postavkama, pristup udisksu dostupan je samo korisnicima koji rade u kontekstu "allow_active", tj. onima s fizičkim pristupom računalu i povezani su putem lokalne konzole ili grafičke sesije. Korisnici koji se spajaju na daljinu, na primjer putem SSH-a, nisu dodijeljeni ovom kontekstu i ne mogu izravno iskoristiti ranjivost.
Kako biste zaobišli ovo ograničenje, možete upotrijebiti trik koji vam omogućuje podizanje razine autentifikacije na "allow_active" manipuliranjem pokretanja korisničkog servisa pomoću uslužnog programa systemctl, što će polkitd percipirati kao znak lokalne sesije. Bit metode je u tome što polkitd određuje prisutnost fizičkog pristupa i dodjeljuje razinu "allow_active" na temelju neizravnih znakova na koje se može utjecati. Ograničenja metode su u tome što je za prevaru polkitd-a potrebno da je lokalna korisnička sesija s fizičkim pristupom već aktivna u sustavu.
Druga metoda za dobivanje privilegija "allow_active" je iskorištavanje ranjivosti (CVE-2025-6018) u PAM-u (Pluggable Authentication Modules), koju su istraživači tvrtke Qualys otkrili tijekom analize ranjivosti u libblockdev-u. Ranjivost omogućuje bilo kojem korisniku, uključujući one povezane putem SSH-a, izvođenje operacija u kontekstu "allow_active". Problem je specifičan za postavke PAM-a u openSUSE Leap 15 i SUSE-u. Linux Enterprise 15 i pojavljuje se samo u tim distribucijama.
Modul pam_env u openSUSE-u i SUSE-u je prema zadanim postavkama omogućen za čitanje datoteke ~/.pam_environment. Ova datoteka omogućuje korisniku postavljanje varijabli okruženja XDG_SEAT=seat0 i XDG_VTNR=1, koje će se obraditi kao dokaz fizičke prisutnosti korisnika, čak i ako je korisnik zapravo prijavljen putem SSH-a. Modul pam_env se također poziva prilikom povezivanja putem SSH-a. Debian 12 i Ubuntu 24.04 (u Debian 13 i Ubuntu 24.10+ je onemogućeno), ali postavljanje varijabli okruženja u tim distribucijama ne može se koristiti za povećanje razine pristupa na "allow_active", budući da se pam_env poziva u završnoj fazi nakon učitavanja modula pam_systemd i postavljene varijable okruženja ne mogu utjecati na parametre sesije.
Što se tiče ranjivosti u libblockdevu, napadač može montirati sliku proizvoljnog datotečnog sustava u petlji, smještajući izvršnu datoteku sa SUID root zastavicama ili poseban uređaj (/dev/mem) za niskorazinski pristup diskovima ili memoriji u ovu sliku. Kako bi blokirao takve napade, FS slike montira sustav sa zastavicama nosuid i nodev, ali ranjivost u libblockdevu omogućuje montiranje slike bez zastavica nosuid i nodev. Bit ranjivosti je u tome što udisks omogućuje korisniku s razinom pristupa "allow_active" promjenu veličine svojih datotečnih sustava, a libblockdev privremeno montira FS bez postavljanja zastavica nosuid i nodev tijekom ove operacije.
Dakle, napad se svodi na stvaranje uređaja petlje na temelju slike XFS datotečnog sustava koja sadrži SUID korijensku datoteku, pokretanje operacije promjene veličine uređaja petlje i praćenje trenutka njegovog montiranja u direktorij /tmp/blockdev*: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup —file ./xfs.image —no-user-interaction Mapirana datoteka ./xfs.image as /dev/loop0. victim> while true; do /tmp/blockdev*/bash -c 'sleep 10; ls -l /tmp/blockdev*/bash' && break; gotovo 2>/dev/null & žrtva> gdbus poziv —sustav —odredište org.freedesktop.UDisks2 —putanja-objekta /org/freedesktop/UDisks2/block_devices/loop0 —metoda org.freedesktop.UDisks2.Filesystem.Resize 0 '{}' Greška: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Greška pri promjeni veličine datotečnog sustava na /dev/loop0: Nije uspjelo odmontirati '/dev/loop0' nakon promjene veličine: cilj je zauzet -r-sr-xr-x. 1 root root 1406608 18. lipnja 09:42 /tmp/blockdev.RSM429/bash žrtva> /tmp/blockdev*/bash -p žrtva# id uid=65534(nitko) gid=65534(nitko) euid=0(root) grupe=65534(nitko)
Ranjivost u libblockdevu je zasad samo zakrpana. Status nove verzije paketa ili proces pripreme zakrpe za vaše distribucije možete provjeriti na sljedećim stranicama (ako stranica nije dostupna, programeri distribucije još nisu započeli istraživanje problema): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo i Arch (1, 2). Kao zaobilazno rješenje za blokiranje ranjivosti, možete izmijeniti pravilo pristupa za operaciju "org.freedesktop.udisks2.modify-device" u polkitu promjenom parametra "allow_active" iz "yes" u "auth_admin" u datoteci /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy.
Osim toga, ranjivost (CVE-2025-6020) u paketu linux-pam, otkrivena prije nekoliko sati, omogućuje lokalnom korisniku dobivanje root privilegija. Modul pam_namespace nije ispravno provjeravao putanje datoteka koje kontrolira korisnik, što je omogućilo prepisivanje privilegiranih datoteka u sustavu putem manipulacije simboličkim vezama i uvjeta utrke. Ranjivost je ispravljena u verziji linux-pam 1.7.1. Status nove verzije paketa ili zakrpe koja se priprema za distribuciju možete provjeriti na sljedećim stranicama: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo i Arch (1, 2).
Izvor: opennet.ru
