В Linux е затворена уязвимостта ssh-keysign-pwn, позволяваща на локални потребители да четат root файлове

В ядрото на Linux е коригирана уязвимост, получила неофициално име ssh-keysign-pwn. Проблемата позволява на локален непривилегирован потребител да чете файлове, които трябва да са достъпни само за root, включително частни SSH host-ключове и, в някои сценарии, /etc/shadow. Към момента на публикуване отделен CVE за проблема все още не беше назначен.

Въпреки наименованието, става дума не за грешка в OpenSSH като мрежов сървър sshd, а за дефект в логиката на ядрото на Linux, свързан с проверките ptrace и достъпа до файлови дескриптори на друг процес чрез pidfd_getfd(2). OpenSSH инструментът ssh-keysign се оказа един от удобните примери за експлоатация, тъй като работи с частни host-ключове, които обикновено принадлежат на root и не са достъпни за обикновени потребители.

Същността на грешката е в това, че функцията __ptrace_may_access() неправилно обработва състоянието на процеса, при който вече е изчезнала структурата на паметта mm, но все още остават отворени файлови дескриптори. При завършване на процеса ядрото извиква exit_mm() по-рано от затварянето на файловете чрез exit_files(). В този кратък промеждутък процесът вече изглежда като без обичайното потребителско адресно пространство, но отворените му файлове все още съществуват. Поради това проверката за състояние на „dumpable“ може да бъде заобиколена, а pidfd_getfd() — да получи достъп до чужд файлов дескриптор при съвпадащ UID.

Практическият сценарий се изгражда около setuid програми, които първо отварят чувствителен файл с права root, след това свалят привилегиите и завършват, все още имайки отворен дескриптор. В публикуваното описание като пример се посочва ssh-keysign: той отваря /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key, след което сваля правата и може да завърши, ако EnableSSHKeysign е изключен. Тези ключове трябва да са достъпни само за root, тъй като се използват за аутентификация, базирана на хост.

Вторият пример е chage, който може да отваря /etc/shadow, след това да сваля ефективните права и да завърши. В резултат на това атаката не непременно веднага предоставя shell с root-права, но позволява достъп до съдържанието на файлове, което обикновено се счита за критично затворено. Изтичането на /etc/shadow е опасно поради възможността за последващо офлайн подбиране на пароли, а изтичането на частни SSH host-ключове — риск от подмяна на хоста или извършване на атаки на доверени SSH сценарии.

Корекция вече е приета в основната ветка на Linux. Комит 31e62c2ebbfd с заглавие ptrace: малко по-смислена логика на 'get_dumpable()' променя поведението при проверката за dumpability: ядрото вече запазва състоянието user_dumpable при изчезване на mm и изисква коректна проверка на CAP_SYS_PTRACE за заобикаляне. Патчът засяга include/linux/sched.h, kernel/exit.c и kernel/ptrace.c.

Уязвимостта беше докладвана от Qualys и коригирана от Линус Торвалдс на 14 май 2026 година. Phoronix отбелязва, че в момента на публикуване проблемът засяга всички версии на ядрото Linux до актуалното състояние на mainline-деревото преди въвеждането на корекцията. Авторът на PoC също така посочва, че уязвими са ядрата преди комит 31e62c2ebbfd, включително стабилните клонове към 14 май.

Отделно е важно, че за експлоатация не е нужно да се зареждат специфични модули на ядрото, както е при редица скорошни уязвимости LPE. Достатъчен е локален непривилегирован достъп до системата и наличието на подходящ привилегирован помощен процес. Разработчикът на Debian Даниел Бауманн отбеляза, че този проблем трябва да бъде отстранен чрез обновление на ядрото и последващо рестартиране в коригираната версия на ядрото.

В публикувания репозиторий с демонстрация е посочена проверка на Raspberry Pi OS Bookworm с ядрото 6.12.75, Debian 13, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Arch и CentOS 9. Към този списък трябва да се отнасяме като към данни от автора на PoC, а не като към изчерпателен списък: тъй като грешката е в общата логика на ядрото, действителното покритие зависи от версията на ядрото и наличието на backport-корекция в конкретния дистрибутив.

За администраторите основният съвет е прост: да инсталират обновен пакет на ядрото от своя дистрибутив и да рестартират системата. Ако има съмнения, че на машината вече е имало локален непривилегирован достъп от страна на злоумышленик, след обновлението е добре допълнително да се обмисли ротацията на SSH host-ключовете и проверката на /etc/shadow/учетни записи, тъй като самата уязвимост е свързана именно с четенето на чувствителни файлове, а не само с абстрактното заобикаляне на достъпа.

В Debian вече започна работа по прехвърлянето на корекцията: Бауманн съобщи за cherry-pick uplink комит в trixie-fastforward-backports и за изпращане на merge request за Debian sid. В merge request директно е посочено, че се прехвърля комит 31e62c2 за коригиране на ptrace-логиката на dumpability, позволяваща на непривилегирован потребител да чете root-файлове.

Източник: linux.org.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster