В состоянии гонки
В OpenSSH выявлена новая критическая уязвимость, позволяющая запускать произвольный код и получать административные привилегии в некоторых системах Linux.
OpenSSH представляет собой набор сетевых утилит на базе протокола Secure Shell (SSH). Эти утилиты широко используются для удалённого входа в системы, удалённого же управления серверами и их администрирования, а также передачи файлов через протоколы SCP и SFTP.
В мае 2024 г. исследователи Qualys обнаружили в OpenSSH критическую уязвимость, которой был присвоен идентификатор CVE-2024-6387. А также, как это нередко бывает с особенно опасными уязвимостями, собственное имя - RegreSSHion.
Уязвимость вызвана состоянием программной «гонки» обработчика сигналов в sshd, которая позволяет неаутентифицированным удаленным злоумышленникам выполнять произвольный код с правами root.
Состояние гонки - это ошибка проектирования многопоточной системы или приложения, при которой их работа зависит от того, в каком порядке выполняются части кода.
Как указывается в бюллетене безопасности, опубликованном проектом Debian, если клиент не авторизуется в пределах временного промежутка, заданного в LoginGraceTime (по умолчанию - 120 секунд), то обработчик SIGALRM в sshd вызывается асинхронно, в свою очередь вызывая ряд функций, которые не обладают собственной защищённостью от асинхронности.
Это позволяет злоумышленнику удалённо, без всякой авторизации, запускать произвольный код с привилегиями Root.
Максимальные привилегии
Для конечных целей - а именно, серверов под управлением Linux, это может иметь самые драматичные последствия.
«При эксплуатации этой уязвимости систему можно полностью скомпрометировать: злоумышленник имеет возможность запускать произвольный код с максимальными привилегиями и тем самым ставить систему под собственный контроль целиком и полностью, устанавливать вредоносные программы, манипулировать данными, а также создавать бэкдоры для постоянного доступа извне. Кроме того, злоумышленник имеет возможность использовать скомпрометированную систему в качестве стартовой точки для проникновения в другие системы внутри той же организации...» - говорится в отчёте Qualys.
Эксперты, однако, заявляют, что эксплуатация уязвимости RegreSSHion далеко не тривиальна, и для того, чтобы добиться необходимых нарушений в памяти целевого устройства, потребуется несколько попыток.
Интересно, что в Qualys ставят на ИИ как на наиболее перспективный инструмент для эксплуатации этой уязвимости: дескать, для искусственного интеллекта затруднения роли не играют и вероятность успеха оказывается очень высокой.
«Пожалуй, это первый случай, когда вопрос вредоносного использования ИИ поднимается в контексте конкретной уязвимости, а не отвлечённо-абстрактном смысле», - говорит Никита Павлов, эксперт по информационной безопасности компании SEQ. По его словам, подобные сценарии ожидаемы, но и их реализацию нельзя назвать тривиальной: ИИ потребуется специально обучать эксплуатации конкретных уязвимостей, а это требует ресурсов, которых у рядовых хакеров нет.
Эксперт, однако, отметил, что нужные ресурсы вполне могут быть у спецслужб.
Уязвимые версии и меры защиты
Уязвимость regreSSHion затрагивает Linux-серверы с OpenSSH всех версий, начиная с 8.5p1 и выше, за вычетом 9.8p1.
Версии с 4.4p1 до 8.5p1 уязвимости не содержат благодаря старому патчу CVE-2006-5051, исправляющему уязвимую функцию.
Более старые версии требуют патчей CVE-2006-5051 и CVE-2008-4109, в противном случае они уязвимы.
Системы под OpenBSD не содержат уязвимости благодаря механизму безопасности, внедрённому ещё в 2001 г.
По данным экспертов, уязвимость regreSSHion может присутствовать и в Windows, и в macOS, но отдельный анализ на этот счёт не проводился, так что возможность эксплуатировать уязвимость в этих системах не подтверждена.
Нейтрализовать «баг» можно с помощью последнего обновления OpenSSH server (до версии 9.8p1), а также - ограничив доступ через SSH с помощью брандмауэров и сегментации сети, что заблокирует хакерам возможность скрытно перемещаться по ней.
Если обновить сервер невозможно, то лучше выставить LoginGraceTime на значение 0, хотя это может сделать сервер уязвимым перед DoS-атаками.
По данным поисковиков Shodan и Censys, в Сети насчитывает более 14 млн серверов OpenSSH с доступом извне, но, как утверждают в Qualys, лишь 700 тыс. из них уязвимы.