Десятилетняя уязвимость в Alpine Linux и OpenSSH позволяет входить без пароля
В некоторых конфигурациях Alpine Linux и, возможно, других дистрибутивов можно войти по SSH без пароля, введя слишком длинную строку в поле пароля. Уязвимости около десяти лет.

Устройства с определёнными конфигурациями Alpine Linux, а возможно, и других дистрибутивов Linux подвержены уязвимости, существующей около десяти лет. Она позволяет злоумышленнику удалённо войти по SSH, защищённому протоколу удалённого доступа, вообще без пароля. Alpine — это лёгкий и широко используемый дистрибутив Linux.
В чём проблема
Уязвимость возникает при взаимодействии OpenSSH, библиотеки, реализующей SSH-соединения, и musl — облегчённой альтернативы библиотеке libc, которую Alpine использует, в отличие от большинства других дистрибутивов. Кроме того, OpenSSH с musl не должен применять PAM (подключаемые модули аутентификации — систему, обрабатывающую аутентификацию пользователей и проверки доступа к учётным записям).
Необходимые условия
Должны выполняться ещё два условия. Во-первых, в системе должна быть хотя бы одна учётная запись, доступная по паролю, хэш которого создан функцией SHA256 или SHA512. Во-вторых, целевая учётная запись должна быть беспарольной: в поле пароля файла /etc/shadow, где хранятся хэши паролей, указана «*». Такие записи часто используют при аутентификации по сертификатам.
Если все условия выполнены, последствия серьёзны. Сопровождающие Alpine в четверг заявили, что злоумышленник, имеющий доступ к SSH-порту, может войти без знания пароля: достаточно одного соединения, это срабатывает каждый раз и повторные попытки не нужны. Для входа в беспарольную запись нужно ввести в поле пароля более 256 символов.
Компания Checkpoint, работающая в сфере безопасности, пояснила, что SHA256 или SHA512 важны, поскольку sshd заимствует соль этой учётной записи; без неё атака не удаётся. Исследователи также установили, что запись должна быть активной, а не просто содержать хэш. Checkpoint добавила, что учётные записи root защищены при настройке PermitRootLogin prohibit-password по умолчанию, однако доступные записи с правами doas или sudo всё же могут получить root.


