Критическая уязвимость, затрагивающая серверы OpenSSH в системах Linux, скомпилированных с использованием библиотеки C musl вместо glibc, позволяет удаленным злоумышленникам легко обойти аутентификацию и войти в учетные записи, для которых отключена аутентификация по паролю. Уязвимость затрагивает легковесный дистрибутив Alpine Linux, широко используемый для облачных образов Docker-контейнеров, а также дистрибутивы Linux для встраиваемых систем.
Уязвимость безопасности, получившая название *SSHole и отслеживаемая как CVE-2026-123158, была обнаружена Озгуном Культекином, исследователем из фирмы по тестированию безопасности Wakefield, и существует последние 10 лет. Разработчики OpenSSH оперативно добавили меры по смягчению последствий уязвимости в экстренном обновлении OpenSSH 10.6p2, выпущенном в четверг, хотя и утверждают, что ошибки в их коде нет.
«Не каждый день «эксплойтом» для уязвимости в такой распространенной технологии, как OpenSSH, является просто «отправка длинного пароля» или «отправка множества символов A», но вот мы здесь», — сказал Джейк Нотт, руководитель отдела анализа угроз компании watchTowr, занимающейся превентивным управлением рисками. «В затронутых системах эксплойт поразительно прост: отправьте пароль длиной от 257 до 1024 символов».
К счастью, для работы этого эксплойта есть несколько предварительных условий:
- Дистрибутив Linux должен использовать musl, что означает, что многие популярные серверные дистрибутивы, такие как Debian, Ubuntu и Fedora, не затронуты.
- Система должна использовать OpenSSH, а не альтернативные реализации SSH-сервера, такие как Dropbear, которые используют многие встраиваемые дистрибутивы.
- OpenSSH должен быть настроен без поддержки Pluggable Authentication Modules (PAM), наиболее распространенной структуры входа в Linux.
- OpenSSH должен разрешать аутентификацию по паролю.
- Злоумышленник должен знать имя учетной записи, для которой на системном уровне отключен вход по паролю.
Эти условия выполняются в стандартной конфигурации для Alpine Linux и его встроенной учетной записи «alpine», которая позволяет выполнять команды от имени root. Проект Alpine выпустил экстренные обновления для пакета openssh и рекомендует пользователям, которые не могут обновиться, отключить аутентификацию по паролю в конфигурации OpenSSH и настроить аутентификацию по ключу.
Почему тривиальная атака работает
Уязвимость является результатом трех изменений, сделанных с разницей в несколько лет, каждое из которых решало свою проблему. В 2012 году разработчики musl ограничили длину пароля 256 байтами, чтобы злоумышленники не могли занимать ресурсы сервера, отправляя длинные пароли, которые необходимо хешировать в процессе проверки входа.
В то же время они также сделали так, чтобы функция хеширования паролей библиотеки возвращала звездочку (*), когда она терпит неудачу. Звездочка — это тот же символ, который Unix использует с 1980-х годов для обозначения учетных записей, для которых пароль никогда не должен совпадать — учетных записей с отключенным паролем на системном уровне.
В 2016 году OpenSSH изменил способ проверки паролей для учетных записей, у которых собственное поле пароля не содержит соли для хеширования, заимствуя соль другой учетной записи, чтобы злоумышленники не могли угадывать существующие имена пользователей путем перебора попыток входа и анализа ответов сервера. Затем в 2022 году Alpine переключил поле пароля root на звездочку, чтобы входы по SSH-ключам продолжали работать для него.
Когда злоумышленник отправляет слишком длинный пароль для учетной записи с отключенным паролем в такой системе, попытка хеширования завершается неудачей и возвращает звездочку, которую sshd сравнивает со звездочкой, хранящейся в поле пароля учетной записи. Оба совпадают, и вход успешен.
Облачные образы Alpine Linux станут основной целью
Стандартный пакет OpenSSH для Alpine собран без PAM, а входы по паролю включены по умолчанию, поэтому серверы Alpine соответствуют условиям «из коробки». В официальных облачных образах, опубликованных между версиями 3.18.11 и 3.24.3, стандартная учетная запись пользователя, названная alpine, является одной из учетных записей с отключенным паролем, и образы предоставляют ей права «doas» без пароля.
В результате злоумышленник, войдя под этой учетной записью, может затем переключиться на root, поэтому образы становятся уязвимыми, как только администратор устанавливает пароль для любой другой учетной записи в системе, поскольку для этой атаки должна существовать легитимная учетная запись с реальным паролем.
В отличие от критической уязвимости regreSSHion 2024 года, эта ограничена миром musl, но не требует никакого инженерного взлома.
«Сетевые SSH-серверы уже круглосуточно подвергаются атакам с подбором паролей и перебором», — сказал Нотт. «Эксплуатация этой уязвимости просто означает, что те же злоумышленники добавят попытку ввода очень длинного пароля в этот список перебора. Мы будем крайне удивлены, если к выходным не увидим попыток брутфорса SSH».
Организациям также следует проверить, не была ли уязвимость уже использована против их серверов. Запись «Accepted password» в /var/log/messages для учетной записи без пароля, такой как root, пользователь только с ключом или стандартный пользователь alpine, является явным признаком компрометации.
Alpine рекомендует пересмотреть использование doas, недавно созданные пользователи и файлы на подверженных атакам машинах, а в их консультативном заключении говорится, что любой сервер, где вход не может быть исключен, следует рассматривать как скомпрометированный. Культекин также опубликовал скрипт для проверки на GitHub, который выявляет подверженные атакам серверы и перечисляет учетные записи в зоне риска.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Lucian Constantin




