5 ноября 2026 года вышел экстренный OpenSSH 10.6p2, закрывающий замечательную дыру: на Linux с musl libc и без PAM можно было войти в учётную запись с заблокированным паролем, предъявив практически любую строку длиной более 256 байт.И особенно интересна тут история появления уязвимости. Не столько сам баг, сколько последовательность решений, в результате которых система вместо отказа в аутентификации радостно сообщала: Welcome!1. Начнём с Unix и /etc/shadow.Вместо настоящего хеша пароля может использоваться *. Это означает, что парольная аутентификация фактически запрещена: ни один настоящий хеш не должен совпасть с этим значением.Причём сама учётная запись не заблокирована — например, вход по SSH-ключу вполне допустим.2. В 2012 году разработчики musl решили бороться с падениями программ.По контракту crypt() при ошибке возвращает NULL. Но… некоторые программы результат не проверяли, после чего закономерно падали.В musl решили, что возвращать NULL — нехорошо, невежливо практически. Лучше вернуть строку, которая заведомо не может соответствовать настоящему хешу пароля.И выбрали… да — *.В том же году в реализации SHA-512 crypt установили ограничение длины пароля в 256 байт, чтобы слишком длинными паролями нельзя было устраивать DoS через дорогостоящее хеширование.Получилось следующее: crypt(long_password, “…”) // “*”То есть ошибка вычисления теперь возвращает ровно то же значение, которым в файле паролей в Unix обозначен пароль «хрен подберёшь».3. В 2016 году OpenSSH исправляет timing attack (CVE-2016-6210). Читать далее