Osegi
Безопасность·2 мин чтения

Уязвимость OpenSSH: пароль из 257 символов открывал заблокированные аккаунты

Десятилетний баг *sshole позволял паролем длиной от 257 до 1024 символов открывать заблокированные аккаунты через OpenSSH в Linux с musl. Исправление — в 10.6p2.

Terminal window showing an SSH login prompt on a Linux server with a very long password being typed.
Фото: Numerama

В ряде систем Linux пароль длиннее 256 символов позволял обойти блокировку аккаунта через OpenSSH. С 2016 года заблокированную учётную запись можно было открыть любым паролем длиной от 257 до 1024 символов. Исправление вошло в OpenSSH 10.6p2, выпущенный в четверг, 5 ноября.

Уязвимость под названием «*sshole» раскрыл в начале ноября Озгюн Култекин, исследователь компании Wakefield. Название — игра слов из SSH и английского «hole» (дыра), а звёздочка находится в самом центре проблемы. По словам исследователя, он собрал OpenSSH двенадцатью способами и подверг каждую сборку примерно 17 600 необычных попыток входа, сгенерированных ИИ-агентами. Лишь одна конфигурация вела себя иначе.

Звёздочка как замок и как сообщение об ошибке

Сервер не сравнивает пароль напрямую: он пропускает его через математическую функцию, а результат сверяет с сохранённым. Для аккаунтов, которые не должны принимать пароль, со времён Unix 1980 года в качестве значения хранится звёздочка (*), которую никакое вычисление выдать не может.

В 2012 году musl изменила поведение: при сбое функции вычисления она тоже возвращает звёздочку, а сбой происходит как раз при пароле длиннее 256 символов. В 2016 году OpenSSH, чтобы по времени ответа нельзя было отличить существующие аккаунты от несуществующих, стал выполнять вычисление и для заблокированных аккаунтов. В итоге возвращённая при сбое звёздочка совпадала с сохранённой, и вход разрешался. Пароли длиннее 1024 символов OpenSSH отвергает с 2016 года.

Кто под угрозой

Нужно сочетание условий: система на musl (Alpine Linux, популярный в контейнерах Docker, а также OpenWrt, Buildroot и Yocto), отсутствие PAM, разрешённый вход по паролю (по умолчанию в OpenSSH) и аккаунт, заблокированный звёздочкой, наряду с аккаунтом с настоящим паролем. В Alpine начиная с версии 3.16 (2022 год) именно так заблокирован root. В официальных образах Alpine для AWS и Azure учётная запись по умолчанию может к тому же получать права администратора без пароля.

Debian, Ubuntu, Fedora и системы с PAM не затронуты. Об активной эксплуатации уязвимости исследователю неизвестно. Администраторам следует установить OpenSSH 10.6p2 или, если это невозможно, отключить вход по паролю.

Приложения, на которые стоит взглянуть

SUMO: числовая головоломка

Выбирайте нужные клетки, складывайте, достигайте цели. Легко понять, сложно освоить. Бесплатно, для любого возраста.

Теги:opensshlinuxmuslalpine linuxvulnerabilitysshole

Ещё за этот день

Показать все →

Ещё в рубрике: Безопасность

Показать все →