
CVE-2018-10933 - libssh обход аутентификации
Реализация Proof-of-Concept для CVE-2018-10933 — критической уязвимости обхода аутентификации, затрагивающей серверную реализацию libssh.
Отказ от ответственности
Этот репозиторий предоставлен исключительно в образовательных целях, для исследования уязвимостей и авторизованного тестирования безопасности. Никогда не тестируйте системы без явного разрешения.
CVE-2018-10933 — это критическая уязвимость обхода аутентификации, обнаруженная в серверном конечном автомате libssh.
В отличие от традиционных недостатков аутентификации, связанных со слабыми паролями или криптографическими слабостями, эта уязвимость существует потому, что сервер ошибочно доверяет сообщению протокола, которое должно отправляться только от сервера клиенту.
Таким образом, злоумышленник может убедить уязвимый сервер libssh в том, что аутентификация уже успешно завершена, не предоставляя никаких учётных данных.
Это позволяет неаутентифицированному злоумышленнику устанавливать аутентифицированные SSH-сеансы с уязвимыми приложениями, использующими libssh в серверном режиме.
| Поле | Значение |
|---|---|
| CVE | CVE-2018-10933 |
| Степень критичности | Критическая |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (Некорректная аутентификация) |
| Вектор атаки | Сетевой |
| Взаимодействие с пользователем | Не требуется |
| Требуемые привилегии | Не требуются |
Уязвимость затрагивает libssh, работающий в серверном режиме.
Затронутые версии включают:
Приложения, использующие libssh исключительно в качестве SSH-клиента, не уязвимы.
Уязвимость берёт начало в конечном автомате аутентификации, реализованном в серверном коде libssh.
Во время обычного процесса аутентификации SSH:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
Протокол определяет, что SSH_MSG_USERAUTH_SUCCESS генерируется только сервером после успешной аутентификации.
Однако уязвимые версии libssh не проверяют должным образом источник этого сообщения.
Вместо отклонения отправленного клиентом SSH_MSG_USERAUTH_SUCCESS, сервер ошибочно переводит своё внутреннее состояние аутентификации непосредственно в:
Authenticated = TRUE
не проверяя учётные данные.
Это классический пример некорректной аутентификации (CWE-287).
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
Успешная эксплуатация позволяет неаутентифицированному злоумышленнику:
Фактическое воздействие зависит от того, как уязвимое приложение использует libssh после аутентификации.
Уязвимость существует потому, что конечный автомат аутентификации ошибочно принимает пакет:
SSH2_MSG_USERAUTH_SUCCESS
от клиента.
Вместо проверки того, что пакет исходит от сервера, libssh обновляет своё внутреннее состояние сеанса так, как если бы аутентификация завершилась успешно.
Поскольку последующие проверки авторизации полагаются на это внутреннее состояние, злоумышленники могут немедленно открывать аутентифицированные каналы.
Эта уязвимость не использует:
Вместо этого она эксплуатирует логическую ошибку в обработке состояний протокола.
Злоумышленнику требуется:
Не требуется ничего из перечисленного:
Возможные индикаторы включают:
Сетевые сигнатуры IDS также могут выявлять аномальные пакеты SSH2_MSG_USERAUTH_SUCCESS, отправляемые клиентами.
Обновите libssh до одной из исправленных версий:
Если немедленное обновление невозможно:
Кроме обновления затронутого программного обеспечения, надёжного обходного решения не существует.
Этот репозиторий демонстрирует, как уязвимости конечного автомата аутентификации могут возникать из-за ошибок реализации протокола.
Он предназначен для помощи:
Включённый Proof-of-Concept иллюстрирует уязвимость в контролируемых средах для улучшения понимания безопасной реализации протоколов.