Один из исследователей безопасности уже подготовил рабочий эксплоит для выполнения кода на уязвимых SSH-серверах. Примечательно, что по словам исследователя код был создан с использованием AI-ассистентов GPT-4, Cursor и Sonnet на основе анализа изменения с исправлением уязвимости, включающего тест для проверки устранения проблемы.
Библиотека от проекта Erlang/OTP предоставляет готовые реализации клиента и сервера SSH и SFTP, поддерживающих протокол SSH 2.0. Отличить проблемные SSH-серверы можно по выводу заголовка «SSH-2.0-Erlang/версия». SSH-серверы на базе Erlang/OTP используются в специализированных системах, например, на IoT- и устройствах для edge-вычислений, а также в качестве отладочного инструмента — Erlang позволяет легко включить SSH-сервер для удалённой отладки своих приложений (предполагается, что подобная отладочная возможность могла быть оставлена включённой во многих проектах, написанных на Erlang). Проблема также проявляется в инструментарии Elixir (реализован поверх Erlang) и во фреймворке Phoenix на его основе, но SSH-сервер в Phoenix по умолчанию не принимает запросы из внешних сетей.
Уязвимость вызвана ошибкой в коде разбора сообщений, из-за которой сообщения SSH_MSG_CHANNEL_REQUEST, допускающие выполнение команды «exec», обрабатывались на стадии до прохождения аутентификации. Пример кода из эксплоита:
command = 'file:write_file("/lab.txt", ‹‹"pwned"››).' return ( b"x62" # SSH_MSG_CHANNEL_REQUEST + struct.pack(">I", channel_id) + string_payload("exec") + b"x01" # want_reply = true + string_payload(command) )
Уязвимость устранена в выпусках Erlang/OTP-27.3.3, 26.2.5.11 и 25.3.2.20. Проследить за устранением уязвимости в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch, FreeBSD.
Источник: http://www.opennet.ru/opennews/art.shtml?num=63099