Уязвимость в OpenSSH позволяет обойти аутентификацию по паролю. Срабатывает она на Linux-системах с библиотекой musl, если сервер собран и запущен без поддержки PAM. Войти можно под учётной записью, у которой пароль отключён. Затронуты Alpine, OpenWrt, Buildroot, Yocto и часть контейнерных образов.
Почему отключённый пароль совпадает с введённым
В теневом файле паролей у части учётных записей вместо хеша стоит звёздочка. Так помечают закрытый вход: совпасть с ней не может ни один пароль. Именно вокруг этой записи и строится обход.
Библиотека musl с 2012 года не возвращает ошибку при неудачном хешировании, а отдаёт звёздочку. Разработчики пошли на это намеренно. Программы, которые не проверяли пустой указатель, падали, а строка, с которой не совпадёт настоящий хеш, ведёт себя безопаснее. Взамен появилось поведение, на котором всё и держится.
Ограничение нашлось в алгоритме SHA-512. Хеширование там замедляется с ростом длины пароля, поэтому в musl длину ограничили 256 байтами. Всё, что длиннее, функция не обрабатывает и возвращает ту же звёздочку.
Дальше в дело вступает поведение sshd. С 2016 года сервер выравнивает время ответа, чтобы по задержке нельзя было определить, существует ли пользователь. Для учётной записи без настоящего хеша он берёт соль другого аккаунта и всё равно считает хеш от введённого пароля. Совпадения быть не должно, но при длине пароля больше 256 символов обе стороны сравнения оказываются звёздочкой. Проверка проходит.
Условия атаки
Нужны несколько условий сразу. Сервер работает на musl, PAM отключён при сборке или в настройках, аутентификация по паролю не выключена. В системе есть закрытая учётная запись со звёздочкой вместо хеша. И есть хотя бы один аккаунт с настоящим паролем, чья соль подойдёт для расчёта.
Тогда закрытый аккаунт принимает любой пароль длиннее 256 и короче 1024 символов. Подбирать ничего не нужно, исследователь называет эксплуатацию тривиальной при выполнении условий. На официальных образах Alpine для AWS и Azure так помечен пользователь alpine, который может выполнять команды от root без пароля. Фактически это root.
Уязвимость живёт с 2016 года. Нашёл её Озгюн Кюльтекин (Özgün Kültekin) из Wakefield. Сведений об эксплуатации в реальных атаках нет: о таких случаях ничего не известно. Десять лет совпадение оставалось незамеченным, потому что musl редко соседствует с sshd без PAM, а большинство дистрибутивов идут через PAM и до расчёта хеша для звёздочки не доходят.
Что делать
Исправление вышло 5 ноября 2026 года в OpenSSH 10.6p2. Команда проекта считает корневую причину лежащей вне sshd, но закрывает обход именно в sshd: звёздочка больше не совпадает с результатом хеширования. Обновиться стоит всем, кто держит musl-системы, даже без признаков компрометации. В том же выпуске разрешили гибридную пост-квантовую подпись ssh-mldsa44-ed25519 как алгоритм подписи удостоверяющего центра и исправили несколько ошибок.
Если обновление отложено, отключите аутентификацию по паролю и оставьте вход по ключам. Крайняя мера - остановить сервис. После патча проверьте журналы. Успешный вход по паролю для учётной записи с отключённым паролем означает, что доступ получен.
Системы на glibc, серверы с PAM, OpenBSD и Dropbear не затронуты. Отдельно команда OpenSSH отметила, что теперь будет выпускать релизы чаще. Поводом стали сообщения об ошибках, которые приходят от ИИ-моделей: часть таких находок позже независимо повторяют другие исследователи, и исправления перестали накапливать до планового выпуска.