Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

SSHole - уязвимость, позволяющая подключиться по SSH без пароля в системах с Musl

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 2601
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 63 раза
Поблагодарили: 28 раз

SSHole - уязвимость, позволяющая подключиться по SSH без пароля в системах с Musl

Сообщение root:# »

SSHole - уязвимость, позволяющая подключиться по SSH без пароля в системах с Musl
Разработчики OpenSSH опубликовали экстренное обновление OpenSSH 10.6p2, в котором добавлена защита от критической уязвимости (CVE не назначен), получившей кодовое имя "SSHole" и позволяющей обойти аутентификацию. В системах с библиотекой Musl уязвимость позволяет подключиться к пользователю, для которого не установлен пароль, введя любой пароль, содержащий больше чем 256 символов. Проблема затрагивает дистрибутивы Linux, использующие стандартную библиотеку musl, но не использующие PAM (Pluggable Authentication Modules), такие как OpenWRT, Alpine, Buildroot и Yocto. Особую опасность представляет то, что часто вход по паролю блокируется для пользователя root, что даёт возможность любому удалённо подключиться с правами администратора. Ошибка, приводящая к уязвимости, не в коде OpenSSH, но эксплуатируется через sshd. При этом в виду серьёзности проблемы в версии OpenSSH 10.6p2 предложен обходной вариант блокирования уязвимости. Владельцам подверженных проблеме систем рекомендовано не дожидаться появления обновлений, а немедленно отключить парольную аутентификацию через параметр "PasswordAuthentication no" в /etc/ssh/sshd_config или полностью отключить SSH. Проблема не проявляется в системах, отличных от Linux и в Linux-окружениях на базе glibc, а также в системах, использующих PAM при аутентификации по паролю. Исправление уже доступно в Alpine и OpenWRT. Уязвимость связана с некорректным взаимодействием OpenSSH и функции crypt() из musl. Для защиты от определения существования пользователей через анализ различий во времени обработки запросов, c 2016 года OpenSSH при проверке беспарольных учётных записей использует штатную процедуру проверки пароля - вызывает функцию "crypt(переданный пароль, соль)" c солью другого пользователя, имеющего действительный хеш пароля, после чего сравнивает возвращённый функцией crypt хэш со значением из поля с хэшем пароля. Однако в musl функция crypt() для хэшей SHA-512 возвращает символ "*", если длина переданного пароля превышает 256 байт (ограничение введено в 2012 году для защиты от DoS-атак, так как при передаче больших значений возникает большая нагрузка на CPU). Такой же символ используется в поле с хэшем пароля в "/etc/shadow" для обозначения учётных записей, для которых аутентификация по паролю заблокирована. В результате атакующий, имеющий возможность соединиться с SSH-сервером, может подключиться к любой учётной записи, у которой в "/etc/shadow" в поле пароля указан символ "*", передав строку длиной от 257 до 1024 байт. Проблема охватывает множество существующих Docker-образов, построенных с использованием Alpine Linux, а также штатные образы Alpine для облачных систем AWS и Azure, у пользователя root в которых вместо хэша пароля выставлен знак "*". Примечательно, что изначально в официальных Docker-образах, использующих Alpine, c 2015 года выставлялся пустой пароль root, а после выявления этого факта, вместо хэша пароля был выставлен знак "!". Но его наличие блокировало вход по SSH-ключам, поэтому с 2022 года символ для блокировки входа по паролю был заменён на "*".
Источник: https://www.opennet.ru/opennews/art.shtml?num=66627