Открыть сервис

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 года). Для устранения уязвимости рекомендуется:

  1. Обновление OpenSSH до версии 9.3p2 или выше.
  2. Отключение поддержки PKCS#11 в SSH-агенте, если она не используется. Это можно сделать, запустив агент с флагом -P (например, ssh-agent -P /usr/lib/ssh/ssh-pkcs11-helper).
  3. Ограничение доступа к агенту — использование Unix-сокетов с ограниченными правами доступа (например, chmod 700 на сокет) и отключение прослушивания TCP-портов, если это не требуется.
  4. Мониторинг логов — проверка логов 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 →