Уязвимость в ядре Linux ставит под угрозу SSH-ключи и парольные хеши на миллионах систем

linux

Пятнадцатого мая 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 - серьёзное напоминание о том, что даже зрелое программное обеспечение может содержать скрытые ошибки, которые ждут своего часа.

Ссылки

Комментарии: 0