Zranitelnost v Linux- subsystém pidfd, který umožňuje čtení souborů, ke kterým uživatel nemá přístup

V jádru Linux V posledních dvou týdnech byla identifikována pátá (1, 2, 3) kritická zranitelnost, která umožňuje uživateli eskalovat svá oprávnění v systému. Byly publikovány dva funkční exploity: sshkeysign_pwn umožňuje neprivilegovanému uživateli číst obsah SSH klíčů privátního hostitele /etc/ssh/ssh_host_*_key a chage_pwn umožňuje neprivilegovanému uživateli číst obsah souboru /etc/shadow obsahujícího hashe uživatelských hesel.

Zranitelnost nebyla určena k odhalení, ale bezpečnostní výzkumník ji dokázal identifikovat na základě navrhované záplaty jádra, která umožňuje čtení souborů přístupných pouze uživateli root, jako například /etc/shadow. Změna jádra upravila logiku pro použití funkce get_dumpable() v ptrace při určování úrovní přístupu ve funkci ptrace_may_access().

Zranitelnost je způsobena soubojovým stavem, který umožňuje neoprávněný přístup k deskriptoru souboru pidfd po přístupu k souboru z kořenového procesu s oprávněním suid. Mezi otevřením souboru a resetováním oprávnění v programu suid (například pomocí funkce setreuid) vzniká situace, kdy aplikace spuštěná s kořenovým programem suid může přistupovat k souboru otevřenému programem suid prostřednictvím deskriptoru pidfd, i když to oprávnění souboru neumožňují.

Toto okno, ve kterém lze zneužít, vzniká, protože funkce „__ptrace_may_access()“ přeskakuje kontrolu přístupu k souboru, pokud je pole task->mm nastaveno na NULL po funkci exit_mm(), ale před voláním funkce exit_files(). V současné době systémové volání pidfd_getfd předpokládá, že ID uživatele (uid) volajícího procesu se shoduje s ID uživatele oprávněného k přístupu k souboru. Za zmínku stojí, že tento problém byl řešen již v roce 2020, ale dosud nebyl opraven.

V exploitu, který získává obsah souboru /etc/shadow, spočívá útok v opakovaném spouštění aplikace /usr/bin/chage pomocí fork+execl s příznakem suid root, která přečte obsah souboru /etc/shadow. Po forku procesu se provede systémové volání pidfd_open a pomocí systémového volání pidfd_getfd se provede smyčka dostupných deskriptorů pidfd a jejich ověření pomocí /proc/self/fd. V exploitu sshkeysign_pwn se podobné manipulace provádějí s programem suid root ssh-keysign.

Problému dosud nebyl přiřazen identifikátor CVE a aktualizace jádra a balíčků nebyly publikovány v distribucích. Zranitelnost zůstává neopravená v jádrech 7.0.7, 6.18.30 a 6.12.88, která byla vydána před několika hodinami. V době psaní tohoto článku lze použít pouze tuto opravu. Diskutují se možná řešení, jako je nastavení sysctl kernel.yama.ptrace_scope=3 nebo odstranění příznaku suid root ze spustitelných souborů v systému (alespoň z utilit ssh-keysign a chage používaných v exploitech).

Aktualizace: Zranitelnosti byl přiřazen identifikátor CVE-2026-46333. Byly vygenerovány aktualizace jádra. Linux 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 a 5.10.256 s opravami zranitelností. Stav oprav zranitelností pro tyto distribuce lze posoudit na těchto stránkách: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster