В Alpine обнаружили довольно неприятную дыру — обход проверки пароля, даже для пользователей, у которых вход только по ключу.
Техническая мамба-джамба для тех, кому интересно:
При входе по паролю sshd без PAM берёт сохранённое поле пароля пользователя и сравнивает его с результатом функции crypt(). У некоторых пользователей, например с входом по ключу, в этом поле стоит *, то есть обычного пароля нет. Для проверки sshd в таком случае берёт соль из хеша другой учётной записи на машине.
Если отправить пароль длиной от 257 до 1024 байт, crypt() в musl возвращает * как признак ошибки. Но sshd сравнивает этот результат с полем пользователя, видит совпадение и пускает атакующего. Нужны включённая парольная аутентифкация и хотя бы одна другая локальная учётная запись с хешем $5$ или $6$. Для root также должен быть разрешён вход по паролю через PermitRootLogin yes.
Короче, это просто треш.
🔗 alpinelinux.org/posts/2026-11-05
