В OpenSSH устранили баг SSHole, позволяющий обойти аутентификацию

 

Разработчики OpenSSH опубликовали экстренное обновление OpenSSH 10.6p2, в котором добавлена защита от критической уязвимости (CVE не назначен) под названием SSHole, позволяющей обойти аутентификацию, сообщил ресурс Opennet.ru.

Уязвимость обнаружил независимый ИБ-исследователь Озгюн Кюльтекин (Özgün Kültekin). Она возникает при взаимодействии OpenSSH и библиотеки musl libc, которая при определённой конфигурации Linux-системы позволяет войти в учётную запись с отключённой парольной аутентификацией, отправив через SSH пароль длиной от 257 до 1024 байт. По словам исследователя, уязвимость существует с 2016 года. Она затрагивает платформы Linux, использующие библиотеку musl, но не использующие PAM, такие как OpenWRT, Alpine, Buildroot и Yocto.

 Источник изображения: sshhole.com

Источник изображения: sshhole.com

В 2016 году разработчики OpenSSH, исправляя уязвимость CVE-2016-6210, которая позволяла определять существующие имена пользователей по времени ответа сервера, выпустили патч, после чего sshd стал выполнять хеширование пароля даже для тех учётных записей, для которых вход по паролю фактически отключён, не позволяя определить имена пользователей по разнице во времени ответа.

Но после этого при использовании SHA-256 crypt или SHA-512 crypt функция crypt() больше не обрабатывает пароли длиннее 256 байт и возвращает * как признак ошибки. Это же значение может храниться в /etc/shadow для учётной записи с отключённой парольной аутентификацией. В результате sshd сравнивает полученную * со значением * в /etc/shadow и считает проверку успешной.

Что также примечательно, изначально в официальных Docker-образах, использующих Alpine, c 2015 года выставлялся пустой пароль root, а после выявления этого факта, вместо хеша пароля был выставлен знак "!". Но поскольку это блокировало вход по SSH-ключам, с 2022 года символ для блокировки входа по паролю был заменён на "*".

По словам разработчика, атака возможна при соблюдении ряда условий:

  • OpenSSH работает без PAM;
  • включена парольная аутентификация (PasswordAuthentication yes);
  • для целевого аккаунта в /etc/shadow указано * вместо хеша;
  • в системе должна быть хотя бы одна активная учетная запись с паролем в формате SHA-256 crypt или SHA-512 crypt ($5$ или $6$), поскольку sshd берёт из её хеша соль для проверки.

Исправление уже доступно в Alpine и OpenWRT. Если по какой-то причине установить обновление не удаётся, рекомендуется отключить парольную аутентификацию (PasswordAuthentication no) и перезапустить sshd.

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER. | Можете написать лучше? Мы всегда рады новым авторам.
Было интересно? Скажите об этом Google, чтобы чаще получать ссылки на наши новости и обзоры

Источники:

Постоянный URL: https://servernews.ru/1150958

Комментарии