В библиотеке libssh, популярном решении для поддержки Secure Shell (SSH) аутентификации, обнаружили уязвимость CVE-2018-10933. Фактически баг позволяет атакующему обойти аутентификацию и получить доступ к уязвимому серверу со включенной SSH-аутентификацией, не вводя пароль.
Эксплуатация проблемы крайне проста: нужно отправить SHH-серверу сообщение SSH2_MSG_USERAUTH_SUCCESS вместо ожидаемого им SSH2_MSG_USERAUTH_REQUEST. Из-за бага сервер, получивший такое сообщение, просто поверит атакующему, что тот залогинен и верификация не нужна. Сервер сочтет, что аутентификация прошла успешно, в итоге предоставив доступ.
Проблему обнаружили специалисты NCC Group, она появилась в коде libssh с релизом версии 0.6.0 в 2014 году и была устранена на этой неделе с выходом версий 0.8.4 и 0.7.6.
Хотя баг уже был исправлен, ИБ-специалисты все равно забили тревогу, ведь даже беглый поиск через Shodan обнаруживает порядка 6000 доступных систем. Так, исследователь Cybereason отсортировал результаты поиска, добавив к запросу дефолтный SSH-порт, и все равно обнаружил более 3000 машин.
Errrr.... Uh-oh. pic.twitter.com/E4L6JInc0j
— Amit Serper (@0xAmit) October 16, 2018
Однако другие специалисты успокаивают, что поисковик не видит разницы между различными версиями libssh, плюс нужно учитывать тот факт, что уязвимость срабатывает лишь в приложениях, работающих в режиме сервера, что встречается не так уж часто.
Поспешили успокоить сообщество и разработчики GitHub, ведь GitHub тоже использует libssh, и под угрозой, в частности, мог оказаться GitHub Enterprise. Как оказалось, здесь применяется кастомная имплементация библиотеки, поэтому проблема CVE-2018-10933 никогда не представляла угрозы для GitHub.
We use a custom version of libssh; SSH2_MSG_USERAUTH_SUCCESS with libssh server is not relied upon for pubkey-based auth, which is what we use the library for. Patches have been applied out of an abundance of caution, but GHE was never vulnerable to CVE-2018-10933.
— GitHub Security (@GitHubSecurity) October 17, 2018