Zraniteľnosť v Linux subsystéme pidfd, ktorá umožňuje prečítať používateľom neprístupné súbory

V jadre Linux bola zistená piata (1, 2, 3) kritická zraniteľnosť za posledné dva týždne, ktorá umožňuje používateľovi zvýšiť svoje práva v systéme. Boli zverejnené dva funkčné exploit-y: sshkeysign_pwn umožňuje neprivilégovanému používateľovi prečítať obsah uzavretých hostiteľských SSH kľúčov /etc/ssh/ssh_host_*_key, zatiaľ čo chage_pwn – prečíta obsah súboru /etc/shadow s hashmi hesiel používateľov.

Informácie o zraniteľnosti neboli plánované na zverejnenie, no jeden z bezpečnostných výskumníkov na základe navrhnutého patchu pre jadro dokázal identifikovať podstatu zraniteľnosti, ktorá umožňuje prečítať súbory dostupné iba používateľovi root, napríklad /etc/shadow. V pridaní do jadra sa upravila logika používania funkcie get_dumpable() v ptrace pri určovaní úrovne prístupu vo funkcii ptrace_may_access().

Samotná zraniteľnosť je spôsobená stavom pretekajúcej podmienky, čo vedie k možnosti neprivilégovaného prístupu k súborovému deskriptoru pidfd po prístupe k súboru z suid root procesu. V momente medzi otvorením súboru a zrušením privilégií v suid programe (napríklad prostredníctvom funkcie setreuid) vzniká situácia, keď aplikácia, ktorá spustila suid root program, môže prostredníctvom deskriptoru pidfd pristupovať k otvorenému súboru v suid programe, aj keď to práva na súbor neumožňujú.

Okno na exploitáciu vzniká z toho, že funkcia „__ptrace_may_access()“ obchádza kontrolu možnosti prístupu k súboru, ak je pole task->mm nastavené na hodnotu NULL po vykonaní exit_mm(), ale pred volaním exit_files(). V tomto momente systémový hovor pidfd_getfd považuje, že identifikátor používateľa (uid) volajúceho procesu zodpovedá identifikátoru, ktorému je povolený prístup k súboru. Zaujímavé je, že na problém upozornili už v roku 2020, ale zostal nevyriešený.

V exploite, ktorý získava obsah /etc/shadow, útok spočíva v cyklickom spúšťaní pomocou fork+execl aplikácie /usr/bin/chage s flagom suid root, ktorá číta obsah /etc/shadow. Po tom, čo sa proces oddelil, sa vykonáva systémový hovor pidfd_open a uskutočňuje sa cyklické prehľadávanie dostupných pidfd deskriptorov prostredníctvom systémového hovoru pidfd_getfd a ich kontrola cez /proc/self/fd. V exploite sshkeysign_pwn sa podobné manipulácie vykonávajú s suid root programom ssh-keysign.

CVE identifikátor problému zatiaľ nebol priradený, aktualizácie jadra a balíkov v distribúciách neboli publikované. V jadrach 7.0.7, 6.18.30 a 6.12.88 vydaných pred niekoľkými hodinami zraniteľnosť nebola odstránená. K v čase písania správy je možné použiť iba opravu. Diskutujú sa možné obchádzacie cesty na blokovanie zraniteľnosti, ako je nastavenie sysctl kernel.yama.ptrace_scope=3 alebo odstránenie suid root vlajky z vykonateľných súborov v systéme (aspoň z utilít ssh-keysign a chage, ktoré sa používajú v exploitách).

Doplnenie: Zraniteľnosti bol priradený identifikátor CVE-2026-46333. Boli vytvorené aktualizácie jadra Linux 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 a 5.10.256 s odstránením zraniteľnosti. Stav odstránenia zraniteľností v distribúciách si môžete pozrieť na týchto stránkach: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.

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