CVE-2023-25136: Уязвимость Pre-Auth Double Free в OpenSSH Server 9.1

vulnerability vulnerability

OpenSSH, широко используемая реализация протокола Secure Shell (SSH) с открытым исходным кодом, недавно, 2023-02-02, выпустила версию 9.2 для устранения уязвимости предварительной аутентификации в сервере OpenSSH версии 9.1. В этой конкретной версии сервера OpenSSH, которая была выпущена в октябре 2022 года, была обнаружена уязвимость double-free в конфигурации по умолчанию сервера OpenSSH (sshd).

Что такое OpenSSH?

OpenSSH - это свободно распространяемая реализация протокола Secure Shell (SSH). Он обеспечивает безопасную зашифрованную связь между двумя недоверенными узлами по незащищенной сети. OpenSSH обычно используется для безопасного удаленного входа в систему и удаленной передачи файлов, а также для других сетевых служб, таких как туннелирование и проброс TCP-портов. Он представляет собой безопасную альтернативу традиционным протоколам с открытым текстом, таким как Telnet и FTP. OpenSSH широко используется в системах на базе Unix, включая Linux и macOS, и включен во многие распространенные и современные операционные системы и дистрибутивы.

OpenSSH использует современные распределители памяти для минимизации уязвимостей, связанных с памятью. Это, в сочетании с надежными механизмами разделения привилегий и "песочницы", делает OpenSSH безопасным и надежным решением для безопасного удаленного доступа и передачи файлов.

Технические подробности

Уязвимость double-free появилась в июле 2022 года и была сообщена в OpenSSH Bugzilla в январе 2023 года Мантасом Микуленасом. Уязвимость возникает в дважды освобожденном участке памяти, "options.kex_algorithms". Первый раз он был освобожден через do_ssh2_kex(), которая вызывает compat_kex_proposal(). В случае, когда бит совместимости "SSH_BUG_CURVE25519PAD" не установлен, а бит совместимости "SSH_OLD_DHGEX" установлен, "options.kex_algorithms" после освобождения становится висячим указателем. Это приводит к тому, что память освобождается второй раз через kex_assemble_names() с "listp" равным "&options.kex_algorithms".

Чтобы продемонстрировать уязвимость, Qualys Threat Research Unit (TRU) создал тестовую среду, использующую Debian (bookworm) с установленным OpenSSH 9.1p1. Затем  изменили баннер клиента ssh, чтобы он представлялся как клиент "FuTTY", что привело к принудительному включению бита совместимости "SSH_OLD_DHGEX" в демоне ssh (sshd). Ниже описаны шаги, предпринятые для достижения этой цели:

Это действие привело к двойному освобождению в непривилегированном процессе sshd, о чем свидетельствует сообщение об ошибке и вывод strace:

Хотя уязвимость double-free в OpenSSH версии 9.1 может вызвать беспокойство, важно отметить, что эксплуатация этой проблемы не является простой задачей. Это связано с защитными мерами, принятыми современными распределителями памяти и надежным разделением привилегий и "песочницей", реализованными в затронутом процессе sshd.

Пострадавшим пользователям настоятельно рекомендуется перейти на версию OpenSSH 9.2, чтобы предотвратить потенциальные риски безопасности. Проект OpenSSH сыграл важную роль в обеспечении безопасного удаленного доступа к системам, и недавний выпуск версии 9.2 является подтверждением их приверженности безопасности сообщества.

Заключение

Настоятельно рекомендуется перейти на последнюю версию OpenSSH, а именно 9.2, чтобы снизить потенциальные риски безопасности. Проект OpenSSH имеет проверенную историю обеспечения безопасного удаленного доступа к системам, и недавний выпуск версии 9.2 отражает его постоянное стремление к безопасности сообщества пользователей. Перейдя на эту версию, пользователи смогут воспользоваться последними усовершенствованиями и улучшениями безопасности, предлагаемыми проектом OpenSSH.

Avatar for Gnostis
Gnostis
SEC-1275-1
Добавить комментарий