В OpenSSH на системах с musl раскрыли уязвимость sshhole
В OpenSSH на системах с musl раскрыли уязвимость sshhole: при определённой конфигурации она позволяет войти в учётную запись без пароля. Исправление вошло в OpenSSH 10.6p2.
5 ноября 2026 года Хабр сообщил о раскрытии уязвимости sshhole в OpenSSH на системах с библиотекой musl Linux. При определённой конфигурации она позволяет войти в учётную запись, для которой не предусмотрен парольный доступ, введя вместо пароля строку длиной более 256 символов. Проблема существовала с 2016 года; исправление вошло в OpenSSH 10.6p2.
При каких условиях возможен вход
Уязвимость затрагивает не каждую установку OpenSSH на musl. Сервер sshd должен работать без PAM, а вход по паролю — оставаться разрешённым. В Alpine пакет openssh-server по умолчанию настроен без PAM; парольная авторизация тоже разрешена по умолчанию. В другой конфигурации отказ от PAM может быть задан параметром UsePAM no.
Есть и условие, связанное с учётными записями. У пользователя, в которого пытаются войти, в поле пароля должен стоять символ *, а у другого пользователя на той же системе — полноценный пароль. При таком сочетании для первой записи принимается любой пароль длиной от 257 до 1024 символов. Знать действительный пароль или подбирать его не нужно.
Это важно для записей, доступ к которым обычно организован без пароля: например, для пользователей, работающих только с SSH-ключами, или пользователей из LDAP. В числе примеров также указан root в Alpine. Само использование ключей не защищает от этого сценария, если сервер продолжает принимать парольную авторизацию и выполнены остальные условия.
Musl используется в Alpine, OpenWrt, Buildroot и Yocto, а также во множестве Docker-образов. Однако выбор библиотеки сам по себе не означает, что в систему можно войти описанным способом. По данным источника, дистрибутивы на glibc, включая Debian, Ubuntu и Fedora, не затронуты. То же относится к системам с PAM, серверу dropbear и реализации OpenSSH из OpenBSD.
Что проверить на серверах и в образах
Для разработчиков и администраторов первая задача — выяснить, в каких используемых системах запущен sshd и какие сборки OpenSSH там установлены. Проверка нужна и для серверов, и для образов, задействованных при развёртывании сайта. После определения затронутых установок имеет смысл отдельно посмотреть, не было ли успешных входов по паролю в учётные записи, для которых такой способ доступа не предполагался.
Хабр приводит способ сопоставить запись об авторизации в /var/log/messages с данными пользователя в /etc/shadow. В примере журнал содержит Accepted password для alpine, хотя в поле пароля этой учётной записи указан *. Такое сочетание — повод разбирать конкретный вход: сообщение в журнале показывает, что сервер принял пароль там, где обычный парольный доступ не ожидался.
Отдельный случай — официальные образы Alpine для AWS и Azure. В них указанная настройка присутствует у пользователя по умолчанию alpine. Этот пользователь также может выполнять команды через doas без ввода пароля. Поэтому вход в его учётную запись в описанных условиях фактически даёт права root. Для владельца сайта это причина включить в проверку не только опубликованный сервер, но и инфраструктуру, через которую сайт развёртывают.
Исправление доступно в OpenSSH 10.6p2. Если обновиться пока нельзя, в материале предложено отключить парольный вход параметром PasswordAuthentication no и перезапустить sshd. Прежде чем менять конфигурацию, команде стоит учесть, кто и какие процессы используют парольную авторизацию: такая мера меняет привычный способ подключения. Вопрос касается не только доступа разработчиков, но и порядка обслуживания системы после изменения настроек.
Моё мнение: важна проверка, а не название образа
Я бы не превращал эту новость в общее утверждение о безопасности Alpine. Здесь полезнее провести инвентаризацию систем с SSH-доступом, проверить используемые сборки и сопоставить результат с условиями эксплуатации. Название базового образа даёт отправную точку, но не заменяет проверку конфигурации и журналов. Похожий подход полезен и при разборе других сообщений об уязвимостях серверного ПО: сначала определить применимость к своей системе, затем выбирать действие.
Для меня конечная точка — обновление до версии с исправлением. Отключение входа по паролю до обновления выглядит разумной временной мерой, если заранее понятно, как после неё будут подключаться администраторы и работать процессы развёртывания. Исправление должно закрывать уязвимость, не создавая неожиданного перерыва в обслуживании сайта.
Источники
Откуда новость. Текст — пересказ своими словами, факты — из источника, мнение — автора.
технический архитектор
Занимаюсь архитектурой веб-сервисов и миграциями CMS. В работе ценю измеримую производительность и понятный путь обновления без ночных сюрпризов.
Все публикации автораПохожие статьи
Уязвимость в ядре Linux позволяет атаковать сервер через входящее TCP-соединение
Критическая ошибка в ядре Linux позволяет атаковать сервер через входящее TCP-соединение без пароля. Владельцам серверов нужно проверить статус исправления для своего дистрибутива и установить обновление.
Уязвимость PHP есть, но опубликованные примеры эксплуатации вызывают вопросы
Автор публикации считает, что распространённые PoC не доказывают возможность атаковать стандартный сервер PHP. При этом уязвимость реальна, и затронутые серверы нужно исправить.
В ядре PHP исправили уязвимости, позволяющие удалённо выполнить код
В ядре PHP исправили уязвимости, которые могли привести к удалённому выполнению кода и чтению памяти процесса. Владельцам сайтов важно проверить версию PHP и установить обновление безопасности.
Обсуждение 4
Фемке Утрехт
у нас похожая конфигурация всплыла при аудите alpine-образа: sshd без pam, парольный вход оставили включённым «на всякий случай» — классика, где так принято заменяет проверку. после этого проверяем не только версию openssh, но и итоговый sshd_config вместе с состоянием учёток, потому что одного обновления базового образа тут недостаточно
Элизе Эверс
а проверяли состояние учёток автоматом или вручную? тут ведь для уязвимости важна ещё связка `*` у одной учётки и полноценного пароля у другой
Оливер Лопеш
Для такой связки я бы добавил автоматическую проверку: собрать учётки с `*` в поле пароля и отдельно убедиться, что на системе есть пользователь с полноценным паролем. Вручную это легко пропустить — особенно если проверять только конфиг sshd и версию пакета.
Фаррух Умаров Автор публикации
Автоматом: проверяем поле пароля у системных учёток и наличие хотя бы одной учётки с полноценным паролем, а затем сверяем результат с настройками sshd. Вручную разбираем только исключения, чтобы не пропустить связку `*` и пароль у другого пользователя.