November 05, 17:58

В Alpine обнаружили довольно неприятную дыру — обход проверки пароля, даже для пользователей, у которых вход только по ключу.

Техническая мамба-джамба для тех, кому интересно:

При входе по паролю sshd без PAM берёт сохранённое поле пароля пользователя и сравнивает его с результатом функции crypt(). У некоторых пользователей, например с входом по ключу, в этом поле стоит *, то есть обычного пароля нет. Для проверки sshd в таком случае берёт соль из хеша другой учётной записи на машине.

Если отправить пароль длиной от 257 до 1024 байт, crypt() в musl возвращает * как признак ошибки. Но sshd сравнивает этот результат с полем пользователя, видит совпадение и пускает атакующего. Нужны включённая парольная аутентифкация и хотя бы одна другая локальная учётная запись с хешем $5$ или $6$. Для root также должен быть разрешён вход по паролю через PermitRootLogin yes.

Короче, это просто треш.

🔗 alpinelinux.org/posts/2026-11-05-openssh-password-authentication-bypass/