Операция выполнена!
Закрыть
Хабы: Linux, Информационная безопасность

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).

Читать далее
Читайте также
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro