Sårbarheder i PAM og libblockdev, der muliggør opnåelse af root-rettigheder i systemet

Firmaen Qualys har opdaget sårbarheden (CVE-2025-6019) i bibliotekerne libblockdev, der muliggør at opnå root-rettigheder i systemet gennem manipulation af baggrundsprocessen udisks. Prototypeudnyttelsen er demonstreret i Ubuntu, Debian, Fedora og openSUSE Leap 15.

Processen udisks anvendes nærmest i alle Linux-distributioner og giver et D-Bus-interface til at udføre operationer med lagringsenheder, såsom montering og formatering. For at udføre handlinger med lagringsenheder kalder udisks funktioner fra biblioteket libblockdev. Adgang til udisks er som standard kun åben for brugere, der arbejder i konteksten 'allow_active', dvs. dem, der har fysisk adgang til computeren og har tilsluttet sig via lokal konsol eller startet en grafisk session. Brugere, der tilslutter sig eksternt, for eksempel via ssh, falder ikke ind under denne kontekst og kan ikke direkte udnytte sårbarheden.

For at omgå denne begrænsning kan der anvendes et trick til at hæve autentificeringsniveauet til 'allow_active' gennem manipulation ved opstart af systemctl værktøjet for en brugerdefineret tjeneste, som polkitd vil opfatte som tegn på en lokal session. Essensen af metoden er, at polkitd bestemmer eksistensen af fysisk adgang og tildeler niveauet 'allow_active' baseret på indirekte tegn, som man kan påvirke. Begrænsningen af metoden er, at for at narre polkitd, skal der i systemet allerede være en aktiv session på en lokal bruger med fysisk adgang.

Den anden metode til at opnå 'allow_active' rettigheder er at udnytte sårbarheden (CVE-2025-6018) i PAM (Pluggable Authentication Modules), som forskere fra Qualys opdagede under analysen af sårbarheden i libblockdev. Sårbarheden tillader enhver bruger, herunder dem der tilslutter sig via SSH, at udføre operationer i konteksten 'allow_active'. Problemet er specifikt for PAM-konfigurationer i openSUSE Leap 15 og SUSE Linux Enterprise 15 og manifesterer sig kun i disse distributioner.

I modulet pam_env i openSUSE og SUSE er læsning af filen ~/.pam_environment aktiveret som standard. Gennem denne fil kan brugeren sætte miljøvariablerne XDG_SEAT=seat0 og XDG_VTNR=1, som ved videre behandling opfattes som tegn på brugerens fysiske tilstedeværelse, selvom login faktisk er foregået via SSH. Modulet pam_env kaldes også ved forbindelse via ssh i Debian 12 og Ubuntu 24.04 (i Debian 13 og Ubuntu 24.10+ er det deaktiveret), men variabelsætning i disse distributioner kan ikke bruges til at hæve adgangsniveauet til 'allow_active', da pam_env kaldes på det endelige stadie efter indlæsning af modulet pam_systemd, og de satte miljøvariabler kan ikke påvirke sessionens parametre.

Hvad angår sårbarheden i libblockdev, kan en angriber montere et billede af et vilkårligt filsystem i loop-tilstand ved at placere en eksekverbar fil med SUID root-flaget eller en speciel enhed (/dev/mem) for lavniveauadgang til diske eller hukommelse. For at blokere for sådanne angreb monterer systemet filsystembilleder med flagene nosuid og nodev, men sårbarheden i libblockdev giver mulighed for at montere et billede uden flagene nosuid og nodev. Sårbarheden består i, at udisks tillader brugeren med adgangsniveauet 'allow_active' at ændre størrelsen på deres filsystemer, og libblockdev midlertidigt monterer filsystemet uden at sætte flagene nosuid og nodev under udførelsen af denne operation.

Dermed reduceres angrebet til at skabe et loop-enhed baseret på et filsystembillede XFS, hvor suid root-filen er placeret, initiere en operation til at ændre størrelsen på loop-enheden og overvåge tidspunktet for dens montering i kataloget /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)

Sårbarheden i libblockdev er kun blevet udbedret i form af patches. Du kan tjekke tilstanden af den nye version af pakken eller forberedelsen af en rettelse i distributionerne på følgende sider (hvis siden ikke er tilgængelig, har distributionens udviklere endnu ikke påbegyndt behandling af problemet): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo og Arch (1, 2). Som en midlertidig løsning til at blokere sårbarheden kan adgangsreglen for operationen «org.freedesktop.udisks2.modify-device» i polkit ændres ved at ændre værdien af parameteren «allow_active» fra «yes» til «auth_admin» i filen /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy.

Det kan også nævnes, at der for flere timer siden blev afsløret en sårbarhed (CVE-2025-6020) i pakken linux-pam, som gør det muligt for en lokal bruger at opnå root-rettigheder. Modulet pam_namespace kontrollerede ikke filstier, der blev kontrolleret af brugeren, hvilket tillod manipulation med symbolske links og opnåelse af en race-forhold, hvilket kunne føre til overskrivning af privilegerede filer i systemet. Sårbarheden er blevet udbedret i udgivelsen af linux-pam 1.7.1. Du kan tjekke tilstanden af den nye version af pakken eller forberedelsen af en rettelse i distributionerne på følgende sider: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo og Arch (1, 2).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster