CVE-2023-38408
CVE-2023-38408 — это идентификатор уязвимости в программном обеспечении OpenSSH, связанной с возможностью удалённого выполнения произвольного кода (Remote Code Execution, RCE) в SSH-агентах, использующих аппаратные токены PKCS#11. Уязвимость была обнаружена и зарегистрирована в 2023 году, присвоен критический уровень опасности (CVSS 3.1: 9.8). Она затрагивает версии OpenSSH с 8.9 по 9.3p1, а также некоторые дистрибутивы Linux (включая Debian, Ubuntu, Red Hat Enterprise Linux, SUSE Linux Enterprise Server) и системы на базе BSD.
Описание уязвимости
CVE-2023-38408 относится к классу уязвимостей, связанных с некорректной обработкой данных в SSH-агенте при использовании смарт-карт и аппаратных токенов, поддерживающих протокол PKCS#11. SSH-агент — это программа, которая хранит закрытые ключи и управляет ими, позволяя пользователю аутентифицироваться на удалённых серверах без повторного ввода пароля. При подключении к агенту через протокол PKCS#11 (например, при использовании USB-токенов или смарт-карт) уязвимость позволяет злоумышленнику, имеющему доступ к агенту (например, через локальную сеть или через вредоносное ПО на машине жертвы), передать специально сформированный запрос, который приводит к выполнению произвольного кода с правами процесса SSH-агента.
Механизм эксплуатации
Уязвимость возникает из-за недостаточной проверки входных данных в функции ssh_pkcs11_rsa_sha256_verify и других функциях, обрабатывающих подписи PKCS#11. Злоумышленник может отправить агенту запрос на подпись данных, содержащий вредоносные данные, которые интерпретируются как команды для выполнения. В результате агент может загрузить и выполнить произвольный код, например, шелл-код, который затем может быть использован для захвата контроля над системой.
Условия эксплуатации
Для успешной эксплуатации необходимо, чтобы:
- На целевой системе был запущен SSH-агент с поддержкой PKCS#11 (например,
ssh-agent -sилиssh-agent -a). - Злоумышленник имел возможность отправлять запросы к агенту (например, через локальную сеть, если агент прослушивает TCP-сокет, или через локальный процесс, если агент доступен через Unix-сокет).
- Агент был скомпилирован с поддержкой PKCS#11 (по умолчанию включено в большинстве дистрибутивов).
Версии, подверженные уязвимости
Уязвимость затрагивает следующие версии OpenSSH:
- OpenSSH 8.9 — 9.3p1 (включительно).
- Дистрибутивы Linux, использующие эти версии:
- Debian 11 (Bullseye) — до обновления 1:8.9p1-3+deb11u1.
- Ubuntu 22.04 LTS (Jammy) — до обновления 1:8.9p1-3ubuntu0.4.
- Red Hat Enterprise Linux 9 — до обновления openssh-8.9p1-7.el9_2.
- SUSE Linux Enterprise Server 15 SP4 — до обновления openssh-8.9p1-150400.9.1.
- Системы на базе FreeBSD и OpenBSD (версии, использующие OpenSSH 8.9+).
Влияние и последствия
Уязвимость CVE-2023-38408 получила оценку 9.8 по шкале CVSS (Critical). Это означает, что она может быть использована для полного компрометации системы без необходимости аутентификации (если злоумышленник имеет доступ к агенту). Последствия включают:
- Удалённое выполнение произвольного кода с правами процесса SSH-агента (обычно от имени пользователя, запустившего агент).
- Возможность кражи закрытых ключей, хранящихся в агенте.
- Дальнейшее распространение атаки на другие системы, с которыми агент может аутентифицироваться.
Меры по устранению
Разработчики OpenSSH выпустили патч в версии 9.3p2 (июль 2023 года). Для устранения уязвимости рекомендуется:
- Обновление OpenSSH до версии 9.3p2 или выше.
- Отключение поддержки PKCS#11 в SSH-агенте, если она не используется. Это можно сделать, запустив агент с флагом
-P(например,ssh-agent -P /usr/lib/ssh/ssh-pkcs11-helper). - Ограничение доступа к агенту — использование Unix-сокетов с ограниченными правами доступа (например,
chmod 700на сокет) и отключение прослушивания TCP-портов, если это не требуется. - Мониторинг логов — проверка логов SSH-агента на предмет подозрительных запросов.
История обнаружения
Уязвимость была обнаружена исследователем безопасности из компании Qualys (группа Qualys Threat Research Unit) в июне 2023 года. Информация была передана разработчикам OpenSSH 27 июня 2023 года. Патч был выпущен 19 июля 2023 года, а публичное раскрытие произошло 20 июля 2023 года. В тот же день были опубликованы технические детали и PoC (Proof of Concept) эксплойта.
Связанные уязвимости
CVE-2023-38408 является частью серии уязвимостей, обнаруженных в OpenSSH в 2023 году. К ним относятся:
- CVE-2023-38409 — уязвимость, связанная с некорректной обработкой данных в функции
ssh_pkcs11_rsa_sha256_verify(также критическая, CVSS 8.1). - CVE-2023-38410 — уязвимость, связанная с отказом в обслуживании (DoS) при обработке некорректных запросов PKCS#11.
Примечания
- Уязвимость не затрагивает SSH-серверы (sshd) или SSH-клиенты (ssh) напрямую — она связана только с SSH-агентом.
- Для эксплуатации требуется, чтобы злоумышленник имел доступ к агенту, что часто ограничивается локальной сетью или локальной машиной. Однако в корпоративных средах, где агенты могут быть доступны через TCP-сокеты (например, в конфигурациях с перенаправлением агента), риск возрастает.
- В дистрибутивах Linux, использующих systemd, SSH-агент часто запускается как пользовательский сервис, что может увеличить поверхность атаки.
Источники
- OpenSSH Release Notes, версия 9.3p2 (2023).
- Национальная база данных уязвимостей США (NVD) — CVE-2023-38408.
- Отчёт Qualys Threat Research Unit (июль 2023).
- Патчи для Debian, Ubuntu, Red Hat и SUSE (июль-август 2023).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →