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). Ниже описаны шаги, предпринятые для достижения этой цели:
1 2 3 | cp -i /usr/bin/ssh ./ssh sed -i s/OpenSSH_9.1p1/FuTTYSH_9.1p1/g ./ssh ./ssh -v 127.0.0.1 |
Это действие привело к двойному освобождению в непривилегированном процессе sshd, о чем свидетельствует сообщение об ошибке и вывод strace:
1 2 3 4 5 6 7 8 9 | writev(2, [{iov_base="free(): double free detected in tcache 2", iov_len=40}, {iov_base="\n", iov_len=1}], 2) = 20 --- SIGSYS {si_signo=SIGSYS, si_code=SYS_SECCOMP, si_call_addr=0x7f093649e1f5, si_syscall=__NR_writev, si_arch=AUDIT_ARCH_X86_64} --- write(8, "\0\0\0g\0\0\0\1\0\0\0\0\0\0\0[ssh_sandbox_violation: unexpected system call (arch:0xc000003e,syscall:20 @ 0x7f093649e1f5)", 107) = 107 exit_group(1) = ? +++ exited with 1 +++ |
Хотя уязвимость double-free в OpenSSH версии 9.1 может вызвать беспокойство, важно отметить, что эксплуатация этой проблемы не является простой задачей. Это связано с защитными мерами, принятыми современными распределителями памяти и надежным разделением привилегий и "песочницей", реализованными в затронутом процессе sshd.
Пострадавшим пользователям настоятельно рекомендуется перейти на версию OpenSSH 9.2, чтобы предотвратить потенциальные риски безопасности. Проект OpenSSH сыграл важную роль в обеспечении безопасного удаленного доступа к системам, и недавний выпуск версии 9.2 является подтверждением их приверженности безопасности сообщества.
Заключение
Настоятельно рекомендуется перейти на последнюю версию OpenSSH, а именно 9.2, чтобы снизить потенциальные риски безопасности. Проект OpenSSH имеет проверенную историю обеспечения безопасного удаленного доступа к системам, и недавний выпуск версии 9.2 отражает его постоянное стремление к безопасности сообщества пользователей. Перейдя на эту версию, пользователи смогут воспользоваться последними усовершенствованиями и улучшениями безопасности, предлагаемыми проектом OpenSSH.