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

10 лет в OpenSSH была дыра. Пароль — любые 300 символов
Оказывается, некоторые серверы на Alpine Linux можно было взломать, просто введя вместо пароля 300 одинаковых символов | Сетка — социальная сеть от hh.ru