В OpenSSH на Alpine Linux можно было войти под root, введя любой пароль длиннее 256 символов
В OpenSSH на Alpine LinuxЛегковесный дистрибутив Linux, ориентированный на безопасность, простоту и минимальное потребление ресурсов. можно было войти под rootУчётная запись суперпользователя в Linux с практически неограниченными правами на управление системой., введя любой пароль длиннее 256 символов
Разработчики OpenSSH 5 ноября выпустили1 внеплановую версию 10.6p2, которая закрывает обход проверки пароля в sshd на «некоторых Linux-системах». В тот же день Alpine LinuxЛегковесный дистрибутив Linux, ориентированный на безопасность, простоту и минимальное потребление ресурсов. опубликовала2 бюллетень: на её системах аккаунт без пароля, в том числе rootУчётная запись суперпользователя в Linux с практически неограниченными правами на управление системой., пускал по SSH с любым паролем длиной от 257 до 1024 байт. Ошибку нашёл Озгюн Кюльтекин из компании Wakefield.
Уязвимость возникает в системах на библиотеке musl, где sshd проверяет пароли без PAM. В этом режиме sshd хеширует введённый пароль функцией crypt() и сравнивает результат с записью в /etc/shadow. Если у аккаунта нет своей соли, sshd берёт соль у другой учётной записи. Функция crypt() в musl не принимает пароли длиннее 256 байт и вместо ошибки возвращает строку «*». А «*» в /etc/shadow означает аккаунт, в который нельзя войти по паролю. Строки совпадают, и sshd открывает сессию.
Для атаки нужны четыре условия: OpenSSH без PAM (так собран пакет openssh-server в Alpine), включённый вход по паролю (это значение по умолчанию), аккаунт с «*» в поле пароля и хотя бы один аккаунт с настоящим хешем вида $5$ или $6$. В Alpine rootУчётная запись суперпользователя в Linux с практически неограниченными правами на управление системой. помечен «*» с версии 3.16, вышедшей в 2022 году. В облачных образах tiny-cloud с 3.18.11 по 3.24.3 есть пользователь alpine с тем же «*» и правом на doas без пароля. Системы на glibc, sshd с PAM, Dropbear и OpenBSD ошибка не затрагивает. OpenWrt по умолчанию использует Dropbear, поэтому уязвимы только роутеры, где вручную поставили OpenSSH.
Исправленные пакеты вышли для всех веток Alpine с 3.16 по 3.24, хотя 3.21 и более старые уже не поддерживаются. Обновиться можно командой apk upgrade -U -a, после чего sshd нужно перезапустить. Если обновить систему нельзя, Alpine советует выставить PasswordAuthentication no. Следы входа ищут в /var/log/messages по строкам «Accepted password for» у аккаунтов без пароля. Если такой вход исключить нельзя, машину стоит считать взломанной.
CVECVE: международная система идентификации публично известных уязвимостей. Каждой уязвимости присваивается уникальный номер. уязвимости пока не присвоен. Исследователь пишет3, что сделал около 17,6 тысячи попыток входа на разных сборках, и отличилась только связка musl без PAM. О случаях эксплуатации до раскрытия ничего не известно. В 2019 году у Alpine была похожая история: в официальных Docker-образах у rootУчётная запись суперпользователя в Linux с практически неограниченными правами на управление системой. оказался пустой пароль (CVE-2019-5021).
Источники
Интересно обсудить?


Volven Skadadottir
Редактор verärgert
