10 лет в OpenSSH была дыра. Пароль — любые 300 символов
Оказывается, некоторые серверы на Alpine Linux можно было взломать, просто введя вместо пароля 300 одинаковых символов. Причём даже под учёткой, для которой вход по паролю вообще запрещён.
В Linux символ * вместо хеша пароля означает, что вход по паролю заблокирован.
Но разработчики библиотеки musl решили, что * — ещё и отличный способ сообщить об ошибке хеширования. Например, если пароль длиннее 256 байт.
А OpenSSH в определённых условиях сравнивал эти значения. Получалось * == *. Добро пожаловать.
Самое прекрасное: ошибка появилась из-за нескольких изменений, сделанных в 2012–2016 годах, и дожила до ноября 2026-го.
Что делать:
- Обновить OpenSSH до 10.6p2 или новее.
- Если обновиться нельзя — отключить аутентификацию по паролю
- Проверить серверы на Alpine, OpenWrt и других системах с musl.
Автор находки, кстати, использовал рои ИИ-агентов и прогнал около 17 600 вариантов авторизации.
Разбор с интерактивной демонстрацией: https://sshhole.com/
@toxic_it_news