В 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, поскольку используются для host-based аутентификации.
Второй пример — chage, который может открывать /etc/shadow, затем сбрасывать эффективные права и завершаться. В результате атака не обязательно сразу даёт shell с root-правами, но позволяет получить содержимое файлов, которое обычно считается критически закрытым. Утечка /etc/shadow опасна возможностью последующего офлайн-подбора паролей, а утечка приватных SSH host-ключей — риском подмены хоста или проведения атак на доверенные SSH-сценарии.
Исправление уже принято в основную ветку Linux. Коммит 31e62c2ebbfd с заголовком ptrace: slightly saner 'get_dumpable()' logic меняет поведение проверки 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-уязвимостей. Достаточно локального непривилегированного доступа к системе и наличия подходящего привилегированного helper-процесса. Разработчик 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 upstream-коммита в trixie-fastforward-backports и об отправке merge request для Debian sid. В merge request прямо указано, что переносится коммит 31e62c2 для исправления ptrace-логики dumpability, позволяющей читать root-файлы непривилегированному пользователю.
>>> Источник
