Zraniteľnosti v PAM a libblockdev, ktoré umožňujú získať práva root v systéme

Spoločnosť Qualys odhalila zraniteľnosť (CVE-2025-6019) v knižnici libblockdev, ktorá umožňuje získať práva root v systéme prostredníctvom manipulácie s pozadím procesu udisks. Fungovanie prototypu exploit-u bolo demonštrované na Ubuntu, Debian, Fedora a openSUSE Leap 15.

Proces udisks sa používa prakticky vo všetkých distribúciách Linuxu a poskytuje D-Bus rozhranie na vykonávanie operácií s úložiskami, ako je montovanie a formátovanie. Na vykonávanie akcií s úložiskami udisks volá funkcie knižnice libblockdev. Prístup k udisks je vo všeobecnosti otvorený len pre používateľov, ktorí pracujú v kontexte „allow_active“, teda tých, ktorí majú fyzický prístup k počítaču a pripojili sa cez lokálnu konzolu alebo spustili grafické prostredie. Používatelia pripojení na diaľku, napríklad cez ssh, sa do tohto kontextu nedostanú a nemôžu priamo zneužívať zraniteľnosť.

Na obídenie tohto obmedzenia je možné použiť trik, ktorý umožňuje zvýšiť úroveň autentifikácie na „allow_active“ prostredníctvom manipulácie so spúšťaním utilitky systemctl používateľskej služby, ktorú polkitd vníma ako znak lokálnej relácie. Podstata metódy spočíva v tom, že polkitd určuje prítomnosť fyzického prístupu a priraďuje úroveň „allow_active“ na základe nepriamych znakov, na ktoré je možné vplývať. Obmedzenie metódy spočíva v tom, že na oklamanie polkitd je potrebné, aby bol v systéme už aktívny lokálny relácia s fyzickým prístupom.

Druhým spôsobom, ako získať práva „allow_active“, je zneužitie zraniteľnosti (CVE-2025-6018) v PAM (Pluggable Authentication Modules), ktorú výskumníci zo spoločnosti Qualys odhalili počas analýzy zraniteľnosti v libblockdev. Zraniteľnosť umožňuje akémukoľvek používateľovi, vrátane tých, ktorí sa pripojili cez SSH, vykonávať operácie v kontexte „allow_active“. Problém je špecifický pre nastavenia PAM v openSUSE Leap 15 a SUSE Linux Enterprise 15, a prejavuje sa iba v týchto distribúciách.

V module pam_env v openSUSE a SUSE je predvolene povolené čítanie súboru ~/.pam_environment. Skrz tento súbor môže používateľ nastaviť premenné prostredia XDG_SEAT=seat0 a XDG_VTNR=1, ktoré budú pri ďalšom spracovaní považované za znak fyzickej prítomnosti používateľa, aj keď sa skutočný vstup uskutoční cez SSH. Modul pam_env sa tiež volá pri pripojení cez SSH v Debian 12 a Ubuntu 24.04 (v Debian 13 a Ubuntu 24.10+ je vypnutý), avšak nastavenie premenných prostredia v týchto distribúciách nemôže byť použité na zvýšenie prístupového levelu na „allow_active“, pretože pam_env je volaný na konečnej fáze po načítaní modulu pam_systemd a nastavené premenné prostredia nemôžu ovplyvniť parametre relácie.

Pokiaľ ide o zraniteľnosť v libblockdev, útočník môže pripojiť obraz ľubovoľného súborového systému v loop-režime a umiestniť do tohto obrazu spustiteľný súbor s príznakom SUID root alebo špeciálne zariadenie (/dev/mem) pre nízkoúrovňový prístup k diskom alebo pamäti. Na zablokovanie takýchto útokov sú obrazy FS pripojené systémom s príznakmi nosuid a nodev, avšak zraniteľnosť v libblockdev umožňuje pripojiť obraz bez príznakov nosuid a nodev. Podstata zraniteľnosti spočíva v tom, že udisks umožňuje používateľovi s úrovňou prístupu „allow_active“ meniť veľkosť svojich súborových systémov a libblockdev počas vykonávania tejto operácie dočasne montuje FS bez nastavenia príznakov nosuid a nodev.

Takže útok spočíva v vytvorení loop-zariadenia na základe obrazu FS XFS, v ktorom je umiestnený suid root súbor, iniciovaní operácie zmeny veľkosti loop-zariadenia a sledovaní okamihu jeho pripojenia do adresára /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)

Zraniteľnosť v knižnici libblockdev bola zatiaľ odstránená iba vo forme patchov. Stav novej verzie balíka alebo prípravy opravy v distribúciách si môžete overiť na nasledujúcich stránkach (ak stránka nie je dostupná, znamená to, že vývojári distribúcie sa ešte nezačali zaoberať problémom): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo a Arch (1, 2). Ako obchádzajúce riešenie na blokovanie zraniteľnosti môžete zmeniť pravidlo prístupu k operácii „org.freedesktop.udisks2.modify-device“ v polkit, zmenou v súbore /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy hodnoty parametra „allow_active“ z „yes“ na „auth_admin“.

Navyše môžeme spomenúť zraniteľnosť (CVE-2025-6020), ktorá bola odhalená pred niekoľkými hodinami v balíku linux-pam, ktorá umožňuje lokálnemu používateľovi získať práva root. Modul pam_namespace správne nekontroloval súborové cesty kontrolované používateľom, čo umožnilo manipulovať so symbolickými odkazmi a dosiahnuť stav závodu, čím došlo k prepisovaniu privilegovaných súborov v systéme. Zraniteľnosť bola odstránená v vydaní linux-pam 1.7.1. Stav novej verzie balíka alebo prípravy opravy v distribúciách si môžete overiť na nasledujúcich stránkach: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo a Arch (1, 2).

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster