Пятнадцатого мая 2026 года исследователи из компании Qualys раскрыли информацию о новой уязвимости в ядре Linux, получившей неофициальное название ssh-keysign-pwn. Проблема, зарегистрированная как CVE-2026-46333 и GHSA-pm8f-4p6p-6x53, оставалась незамеченной около шести лет. Она позволяет непривилегированному локальному пользователю получить доступ к конфиденциальным SSH-ключам и хешированным паролям из файла /etc/shadow. Угроза затрагивает миллионы серверов и рабочих станций под управлением Linux.
В чём суть проблемы: гонка за файловыми дескрипторами
В основе уязвимости лежит состояние гонки (race condition) в функции ядра __ptrace_may_access(). Эта функция определяет, может ли один процесс отслеживать или исследовать другой. Проблема связана с ошибочной логикой проверки "способности к дампу" (dumpability) - изначально этот механизм решал, может ли процесс создавать аварийный дамп памяти.
Беда возникает на этапе завершения работы привилегированного процесса. Когда такой процесс, например ssh-keysign или chage, начинает завершаться через вызов do_exit(), он первым делом выполняет exit_mm(), обнуляя указатель на область памяти (mm). Однако чувствительные файловые дескрипторы остаются открытыми ещё некоторое время, пока не отработает exit_files().
В этот короткий промежуток атакующий без повышенных привилегий может с помощью системного вызова pidfd_getfd() похитить эти открытые файловые дескрипторы до их закрытия. Поскольку функция ptrace_may_access() проверяет dumpability даже для потоков без активной карты памяти (включая потоки ядра), злоумышленник использует этот логический разрыв. Ядро в таких краевых случаях не требует наличия возможности CAP_SYS_PTRACE, то есть для атаки не нужно никаких дополнительных прав.
Реальные последствия: от перехвата SSH до взлома паролей
На практике эта уязвимость крайне опасна. Захватив файловые дескрипторы процесса ssh-keysign, атакующий получает доступ на чтение к закрытым SSH-ключам хоста. Это позволяет осуществлять атаки типа Man-in-the-Middle (перехват SSH-сессий) и выдавать себя за сервер до тех пор, пока скомпрометированные ключи не будут заменены.
Более того, та же гонка может открыть доступ к файлу /etc/shadow, в котором хранятся хешированные пароли пользователей. С помощью offline-атак на подбор паролей злоумышленник может восстановить исходные пароли для всех учётных записей системы.
Усугубляет ситуацию то, что публичный эксплойт (proof-of-concept) уже опубликован на GitHub по адресу github.com/0xdeadbeefnetwork/ssh-keysign-pwn. Это существенно снижает порог для проведения атаки.
Какие системы уязвимы
Все ядра Linux до коммита 31e62c2ebbfd (слитого в основную ветку 14 мая 2026 года) подвержены уязвимости. Под удар попадают многие популярные дистрибутивы: Ubuntu, Debian, Arch Linux, CentOS, Raspberry Pi OS и другие. Любая система с неприватным ядром, на которой запущены привилегированные процессы, связанные с OpenSSH или управлением учётными записями, находится в группе риска.
Стоит отметить, что уязвимость требует локального доступа к системе, поэтому атака возможна только в том случае, если злоумышленник уже имеет возможность запускать код на машине. Однако в условиях мультиарендных сред (облачные сервисы, хостинг, учебные лаборатории) это ограничение не является серьёзным препятствием.
Как защититься
Разработчики ядра уже выпустили исправления для нескольких стабильных веток. Патчи доступны в официальном Git-репозитории ядра. Администраторам рекомендуется немедленно обновить ядро до актуальной версии.
Если обновление по каким-то причинам невозможно, временным решением может стать ограничение локального доступа пользователей и аудит настроек ptrace с помощью политик безопасности, например с использованием LSM (модулей безопасности ядра). Однако эти меры лишь снижают, но не устраняют риск полностью.
Внесённое исправление улучшает логику dumpability: потоки без активной карты памяти теперь используют кэшированное значение последней dumpability, а переопределение этого поведения требует явной возможности CAP_SYS_PTRACE. Таким образом, окно для атаки закрывается.
Анализ и рекомендации специалистам
Этот инцидент - яркий пример того, как давно существующая уязвимость может оставаться незамеченной в критически важном компоненте операционной системы. Проблема затрагивает не только серверы, но и встраиваемые системы на Linux, включая устройства Интернета вещей, где обновления ядра устанавливаются реже.
Для специалистов по информационной безопасности сейчас первостепенная задача - убедиться, что все управляемые системы используют исправленное ядро. Следует также перегенерировать SSH-ключи на всех хостах, которые могли быть скомпрометированы, и сменить пароли пользователей, если есть подозрение на утечку хешей /etc/shadow.
Кроме того, стоит пересмотреть политику предоставления локального доступа: чем меньше пользователей имеют возможность запускать произвольный код, тем ниже вероятность успешной атаки. Инструменты мониторинга с использованием системных журналов и аудита (например, auditd) могут помочь выявить попытки эксплуатации, однако полагаться только на детектирование не стоит.
В долгосрочной перспективе разработчикам ядра и сообществу следует уделить особое внимание проверке логики обработки краевых случаев, особенно в функциях, связанных с безопасностью и доступом к процессам. Уязвимость ssh-keysign-pwn - серьёзное напоминание о том, что даже зрелое программное обеспечение может содержать скрытые ошибки, которые ждут своего часа.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-46333
- http://www.openwall.com/lists/oss-security/2026/05/15/9