Уязвимость *sshole позволяет войти по SSH без пароля в Alpine Linux

Ars Technica сообщает об уязвимости десятилетней давности, затрагивающей устройства с некоторыми конфигурациями Alpine Linux и, возможно, других дистрибутивов. Она позволяет злоумышленнику войти на устройство по SSH без пароля.
Ошибка возникает во взаимодействии OpenSSH (библиотеки, реализующей SSH-соединения) и musl: это лёгкая альтернатива библиотеке libc, которую Alpine использует, в отличие от большинства других дистрибутивов Linux. Кроме того, OpenSSH с musl не должен использовать PAM (pluggable authentication modules), фреймворк, отвечающий за аутентификацию пользователей и проверку доступа к учётным записям. Alpine, лёгкий и широко используемый дистрибутив; другие платформы могут быть затронуты, если у них такие же конфигурации.
Для успешной атаки нужны ещё два условия. Во-первых, в системе должна быть хотя бы одна учётная запись, доступная по паролю, хешированному функциями SHA256 или SHA512. Во-вторых, целевая учётная запись должна быть настроена как беспарольная: в поле пароля в /etc/shadow (файле Linux, где хранятся хеши паролей) указана звёздочка «*». Такие учётные записи обычно применяют при аутентификации по сертификатам, и эта настройка распространена для некоторых типов аккаунтов.
Если все условия выполнены, последствия серьёзные. «Атакующий, который может подключиться к вашему SSH-порту, может войти без знания какого-либо пароля, заявили в четверг сопровождающие Alpine., Достаточно одного соединения, это работает каждый раз и не требует повторных попыток». Чтобы войти в беспарольную учётную запись, нужно ввести в поле пароля более 256 символов.
Специалисты компании Checkpoint пояснили, что использование SHA256 или SHA512 важно, потому что sshd заимствует соль этой учётной записи, а без неё атака не срабатывает. По их тестам, учётная запись должна быть активной, а не просто содержать хеш. Checkpoint также сообщает, что учётные записи root безопасны при настройке PermitRootLogin prohibit password, действующей по умолчанию; но доступные учётные записи с правами doas или sudo всё же могут получить права root.
Ключевые факты
- Уязвимость десятилетней давности во взаимодействии OpenSSH и musl позволяет войти по SSH без пароля на устройствах с некоторыми конфигурациями Alpine Linux, возможно и других дистрибутивов.
- OpenSSH с musl при этом не должен использовать PAM; в системе нужна учётная запись с паролем, хешированным SHA256 или SHA512, а целевая запись должна быть беспарольной («*» в /etc/shadow) и активной.
- Атакующему достаточно доступа к SSH-порту: по словам сопровождающих Alpine, нужно одно соединение, атака срабатывает каждый раз, повторы не нужны; в поле пароля вводят более 256 символов.
- По данным Checkpoint, root безопасен при настройке PermitRootLogin prohibit password по умолчанию, но доступные учётные записи с правами doas или sudo могут стать root.
Почему это важно
Речь о входе по SSH вообще без пароля, причём ошибка существует около десяти лет. Alpine, широко используемый лёгкий дистрибутив, а сопровождающие сами описывают атаку как простую: одно соединение, срабатывает каждый раз, повторных попыток не нужно. Источник также допускает, что затронуты и другие платформы с такой же конфигурацией.
Кому это важно
Администраторам и инженерам, которые эксплуатируют устройства и серверы на Alpine Linux, особенно с OpenSSH на musl без PAM. Отдельно, тем, у кого есть беспарольные учётные записи (с «*» в /etc/shadow), например для входа по сертификатам. Владельцам других дистрибутивов стоит проверить, совпадает ли их конфигурация.
Как это применить
Проверьте, сочетаются ли у вас все условия: OpenSSH с musl без PAM; хотя бы одна учётная запись с паролем, хешированным SHA256 или SHA512; активная беспарольная учётная запись с «*» в поле пароля в /etc/shadow. Если да, система потенциально уязвима, и SSH-порт стоит считать открытым для входа без пароля. Учтите, что root при значении PermitRootLogin prohibit password по умолчанию, по данным Checkpoint, защищён, но достижимые учётные записи с правами doas или sudo могут стать root. Описания исправления или обходного пути в доступном тексте нет, поэтому следите за сообщениями сопровождающих Alpine.
Можно ли доверять
Условия атаки и 256 символов в поле пароля описаны Ars Technica со слов сопровождающих Alpine и исследователей компании Checkpoint, то есть сведения идут от людей, знающих систему изнутри, и от стороннего специалиста по безопасности, проверившего атаку тестами. Доступный текст не содержит идентификатора CVE, оценки критичности, имени обнаружившего уязвимость и данных о реальных атаках, а сам текст может быть неполным фрагментом статьи. Название *sshole стоит только в заголовке материала, в тексте не объясняется.
Риски и подводные камни
Уязвимость проявляется только при сочетании нескольких условий, поэтому по одному признаку уязвимость не определить: нужны и musl, и отсутствие PAM, и хеши SHA256 или SHA512, и активная беспарольная запись. Какие ещё дистрибутивы затронуты, в источнике не сказано, а лишь допускается, что возможно другие. Даже при защищённом root доступные аккаунты с правами doas или sudo остаются путём к получению прав root.
«Атакующий, который может подключиться к вашему SSH-порту, может войти без знания какого-либо пароля. Достаточно одного соединения, это работает каждый раз и не требует повторных попыток.»
— Сопровождающие Alpine Linux