Vulnerabilități în PAM și libblockdev care permit obținerea de drepturi root în sistem.

Compania Qualys a identificat o vulnerabilitate (CVE-2025-6019) în biblioteca libblockdev, care permite prin manipularea procesului de fond udisks obținerea de privilegii root în sistem. Funcționarea prototipului exploit-ului a fost demonstrată în Ubuntu, Debian, Fedora și openSUSE Leap 15.

Procesul udisks este folosit în aproape toate distribuțiile Linux și oferă o interfață D-Bus pentru a efectua operații cu unitățile de stocare, cum ar fi montarea și formatarea. Pentru a efectua acțiuni cu unitățile de stocare, udisks apelează la funcțiile bibliotecii libblockdev. Accesul la udisks este, în mod implicit, deschis doar pentru utilizatorii care operează în contextul „allow_active”, adică au acces fizic la computer și s-au conectat prin consola locală sau au inițiat o sesiune grafică. Utilizatorii care se conectează de la distanță, de exemplu prin ssh, nu intră în acest context și nu pot exploata direct vulnerabilitatea.

Pentru a ocoli această restricție, se poate folosi un truc care permite ridicarea nivelului de autentificare la „allow_active” prin manipularea lansării utilitarului systemctl al unui serviciu utilizator, pe care polkitd îl percepe ca un semn al unei sesiuni locale. Esența metodei este că polkitd determină existența accesului fizic și atribuie nivelul „allow_active” pe baza unor indicii indirecte, asupra cărora se poate influența. Limitările metodei sunt că, pentru a păcăli polkitd, este necesară activarea unei sesiuni locale a unui utilizator cu acces fizic în sistem.

A doua metodă de obținere a privilegiilor „allow_active” este exploatarea vulnerabilității (CVE-2025-6018) în PAM (Module de Autentificare Pluggable), pe care cercetătorii de la Qualys au identificat-o în timpul analizei vulnerabilității în libblockdev. Vulnerabilitatea permite oricărui utilizator, inclusiv celor conectați prin SSH, să efectueze operații în contextul „allow_active”. Problema este specifică setărilor PAM în openSUSE Leap 15 și SUSE Linux Enterprise 15, și se manifestă doar în aceste distribuții.

În modulul pam_env din openSUSE și SUSE, citirea fișierului ~/.pam_environment este activată implicit. Prin acest fișier, utilizatorul poate seta variabilele de mediu XDG_SEAT=seat0 și XDG_VTNR=1, care, în gestionarea ulterioară, vor fi percepute ca un indiciu al prezenței fizice a utilizatorului, chiar dacă autentificarea a fost efectuată prin SSH. Modulul pam_env este de asemenea apelat la conectarea prin ssh în Debian 12 și Ubuntu 24.04 (în Debian 13 și Ubuntu 24.10+ este dezactivat), dar setarea variabilelor de mediu în aceste distribuții nu poate fi utilizată pentru a obține un nivel de acces „allow_active”, deoarece pam_env este apelat în etapa finală, după încărcarea modulului pam_systemd, iar variabilele de mediu setate nu pot influența parametrii sesiunii.

În ceea ce privește vulnerabilitatea din libblockdev, un atacator poate monta o imagine a unui sistem de fișiere arbitrar în modul loop, plasând într-o astfel de imagine un fișier executabil cu flagul SUID root sau un dispozitiv special (/dev/mem) pentru acces de nivel scăzut la discuri sau memorie. Pentru a bloca astfel de atacuri, imaginile FS sunt montate de sistem cu flagurile nosuid și nodev, dar vulnerabilitatea din libblockdev permite montarea unei imagini fără flagurile nosuid și nodev. Esența vulnerabilității este că udisks permite unui utilizator cu nivel de acces „allow_active” să schimbe dimensiunea sistemelor sale de fișiere, iar libblockdev în timpul acestei operațiuni montează temporar FS fără a seta flagurile nosuid și nodev.

Astfel, atacul se reduce la crearea unui dispozitiv loop bazat pe imaginea FS XFS, în care este plasat un fișier suid root, inițierea operațiunii de schimbare a dimensiunii dispozitivului loop și urmărirea momentului în care este montat în directorul /tmp/blockdev*: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup —file ./xfs.image —no-user-interaction Mapped file ./xfs.image as /dev/loop0. victim> while true; do /tmp/blockdev*/bash -c ‘sleep 10; ls -l /tmp/blockdev*/bash’ && break; done 2>/dev/null & victim> gdbus call —system —dest org.freedesktop.UDisks2 —object-path /org/freedesktop/UDisks2/block_devices/loop0 —method org.freedesktop.UDisks2.Filesystem.Resize 0 ‘{}’ Error: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Error resizing filesystem on /dev/loop0: Failed to unmount ‘/dev/loop0’ after resizing it: target is busy -r-sr-xr-x. 1 root root 1406608 Jun 18 09:42 /tmp/blockdev.RSM429/bash victim> /tmp/blockdev*/bash -p victim# id uid=65534(nobody) gid=65534(nobody) euid=0(root) groups=65534(nobody)

Vulnerabilitatea din libblockdev a fost remediată doar sub formă de patch-uri. Poate fi verificat starea noii versiuni a pachetului sau pregătirea unei soluții în distribuții pe următoarele pagini (dacă pagina nu este disponibilă, înseamnă că dezvoltatorii distribuției nu au început încă examinarea problemei): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo și Arch (1, 2). Ca soluții alternative pentru a bloca vulnerabilitatea, se poate modifica regula de acces pentru operațiunea „org.freedesktop.udisks2.modify-device” în polkit, schimbând în fișierul /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy valoarea parametrului „allow_active” de la „yes” la „auth_admin”.

În plus, se poate menționa vulnerabilitatea descoperită acum câteva ore (CVE-2025-6020) în pachetul linux-pam, care permite unui utilizator local să obțină drepturi de root. Modulul pam_namespace nu verifica corect căile fișierelor controlate de utilizator, permițând prin manipularea legăturilor simbolice și ajungerea la o stare de competiție să se obțină rescrierea fișierelor privilegiate în sistem. Vulnerabilitatea a fost remediată în versiunea linux-pam 1.7.1. Poate fi verificat starea noii versiuni a pachetului sau pregătirea unei soluții în distribuții pe următoarele pagini: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo și Arch (1, 2).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster