Критическая уязвимость в библиотеке Libssh
В новых выпусках библиотеки libssh 0.8.4 и 0.7.6 (не путать с libssh2, OpenSSH, SSH), предназначенной для интеграции клиентской и серверной поддержки протокола SSH в программы на языке Си, устранена критическая уязвимость (CVE-2018-10933). Уязвимость позволяет обойти стадию аутентификации в приложениях на базе libssh.
Атака сводится к отправке сообщения SSH2_MSG_USERAUTH_SUCCESS вместо сообщения SSH2_MSG_USERAUTH_REQUEST, после чего сервер даже не начинает стадию аутентификации и считает подключение авторизованным без сверки учетных данных. Проблема проявляется начиная с ветки Libssh 0.6, выпущенной в 2014 году, в которой была проведена унификация кода реализаций клиента и сервера (клиент считает аутентификацию успешной после получения SSH2_MSG_USERAUTH_SUCCESS, но использование код с данной проверкой в сервере привело к возможности получения доступа вообще без аутентификации).
Для тестирования подготовлен прототип эксплоита. Уязвимость проявляется только в приложениях, работающих в режиме сервера (очень редкая ситуация, так как libssh в основном используется для создания SSH-клиентов). Исключение составляет продукт GitHub Enterprise, в котором libssh также применяется и в режиме сервера. Но GitHub Enterprise не подвержен уязвимости так как использует собственный форк Libssh в котором задействованы собственные процедуры прохождения аутентификации.