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

CVE-2024-6387

CVE-2024-6387 — это идентификатор уязвимости в программном обеспечении OpenSSH, обнаруженной в 2024 году. Уязвимость относится к классу удалённого выполнения кода (RCE) и затрагивает серверную часть OpenSSH (sshd) в системах на базе GNU/Linux. Она получила неофициальное название regreSSHion из-за того, что представляет собой регрессию ошибки, исправленной в 2006 году (CVE-2006-5051). Уязвимость позволяет неавторизованному удалённому злоумышленнику получить полный контроль над системой при определённых условиях.

История и обнаружение

Уязвимость была обнаружена исследователями компании Qualys в мае 2024 года и публично раскрыта 1 июля 2024 года. Идентификатор CVE-2024-6387 был присвоен после координации с разработчиками OpenSSH. Проблема заключается в ошибке обработки сигналов в коде sshd, которая была случайно повторно внесена в версию OpenSSH 8.5p1 (выпущена в августе 2021 года) при внесении изменений в механизм обработки тайм-аутов аутентификации.

Изначально ошибка существовала в OpenSSH до версии 4.4p1 (2006 год) и была исправлена в рамках CVE-2006-5051. В 2021 году при рефакторинге кода разработчики неосознанно восстановили уязвимый паттерн, что привело к регрессии. Таким образом, все версии OpenSSH с 8.5p1 по 9.7p1 (до выхода исправления) оказались подвержены проблеме. Версии OpenSSH до 4.4p1 также остаются уязвимыми, если не были обновлены до патча 2006 года.

Технические детали

Механизм уязвимости

CVE-2024-6387 является гонкой сигналов (signal handler race condition) в функции sshd, отвечающей за аутентификацию. Суть проблемы заключается в следующем:

  1. Неатомарная операция: В коде sshd используется обработчик сигнала SIGALRM, который срабатывает по истечении времени ожидания аутентификации (по умолчанию 120 секунд). Этот обработчик вызывает функцию syslog() для записи сообщения в системный журнал.
  2. Асинхронность: Функция syslog() не является безопасной для вызова из обработчика сигнала (async-signal-unsafe). Если в момент срабатывания сигнала SIGALRM основная программа выполняет другую небезопасную функцию (например, malloc(), free(), или другие операции с памятью), возникает состояние гонки.
  3. Повреждение памяти: Из-за этого состояния гонки злоумышленник может, отправляя специально сформированные пакеты, повредить внутренние структуры данных sshd (кучу или стек). Это позволяет перезаписать указатели на функции или данные и получить контроль над потоком выполнения.

Условия эксплуатации

Для успешной эксплуатации уязвимости необходимо одновременное выполнение нескольких условий:

  • Версия OpenSSH: Должна быть установлена уязвимая версия (8.5p1 — 9.7p1 или до 4.4p1).
  • Отсутствие ASLR: Наличие эффективной рандомизации адресного пространства (ASLR) в целевой системе значительно усложняет атаку. Хотя Qualys продемонстрировала эксплуатацию на 32-битной системе с ASLR, для 64-битных систем это требует в среднем 10 000 попыток (около 6-8 часов непрерывных подключений).
  • Отсутствие других защит: Некоторые системы дополнительно защищены механизмами, такими как seccomp (изоляция системных вызовов) или SELinux, которые могут блокировать выполнение вредоносного кода даже после успешного повреждения памяти.
  • Конфигурация sshd: Уязвимость затрагивает только серверный процесс sshd, который по умолчанию запущен на большинстве Linux-систем. Она не затрагивает клиентскую часть OpenSSH (ssh).

Влияние и масштаб

CVE-2024-6387 представляет собой серьёзную угрозу для безопасности инфраструктуры. OpenSSH является одним из самых распространённых инструментов для удалённого администрирования серверов. По оценкам Qualys, на момент раскрытия уязвимости ей были подвержены около 700 000 интернет-хостов, работающих под управлением Linux. Уязвимость не затрагивает системы на базе BSD и macOS (поскольку они используют другие реализации или версии OpenSSH с иной архитектурой обработки сигналов).

Потенциальные последствия

  • Полный контроль над системой: Успешная эксплуатация позволяет злоумышленнику выполнить произвольный код с правами пользователя root, что даёт полный контроль над сервером.
  • Установка бэкдоров: Злоумышленник может установить постоянное вредоносное ПО, перехватывать трафик, похищать данные (включая ключи SSH и пароли).
  • Латеральное перемещение: Скомпрометированный сервер может быть использован для атак на другие системы внутри сети.

Уязвимые и защищённые системы

Уязвимые

  • Linux-дистрибутивы:
  • Ubuntu 22.04 LTS, 24.04 LTS (с версиями OpenSSH 8.9p1 и 9.6p1 соответственно).
  • Debian 12 (Bookworm) с OpenSSH 9.2p1.
  • Red Hat Enterprise Linux 9 (RHEL 9) с OpenSSH 8.7p1.
  • CentOS Stream 9.
  • Fedora 38, 39, 40.
  • Alpine Linux 3.18, 3.19, 3.20 (с версиями OpenSSH 9.3p1, 9.4p1, 9.7p1).
  • Другие дистрибутивы, использующие OpenSSH 8.5p1 и новее.

Защищённые

  • OpenBSD: Система, изначально разрабатывающая OpenSSH, не подвержена уязвимости, так как использует другую архитектуру обработки сигналов (с применением sigaction с флагом SA_RESTART).
  • macOS: Использует собственную реализацию, основанную на более старых версиях OpenSSH, но с модификациями, предотвращающими данную уязвимость.
  • Windows: Встроенный OpenSSH для Windows не подвержен, так как не использует сигналы Unix.
  • Системы с обновлённым OpenSSH: После установки патча (версия 9.8p1 и выше) уязвимость устраняется.

Меры по устранению

Обновление программного обеспечения

Основной и рекомендуемый способ защиты — установка обновлённой версии OpenSSH. Разработчики выпустили исправленную версию OpenSSH 9.8p1 1 июля 2024 года. Крупные дистрибутивы Linux (Red Hat, Debian, Ubuntu, SUSE, Alpine) оперативно выпустили собственные патчи для своих репозиториев.

Временные меры защиты

Если немедленное обновление невозможно, администраторы могут применить следующие временные меры:

  1. Ограничение доступа по IP: Использование брандмауэра (iptables, nftables, firewalld) для разрешения подключений по SSH только с доверенных IP-адресов.
  2. Настройка параметров sshd:
  • Установка LoginGraceTime в значение 0. Это отключает тайм-аут аутентификации, но может привести к исчерпанию ресурсов сервера (DoS-атака).
  • Отключение аутентификации по паролю (PasswordAuthentication no), если используется только ключевая аутентификация. Это не устраняет уязвимость, но снижает вектор атаки.
  1. Использование сетевых средств защиты: Настройка систем обнаружения вторжений (IDS/IPS) для блокировки подозрительных попыток подключения, характерных для эксплуатации уязвимости.

Критика и реакция сообщества

Уязвимость вызвала широкий резонанс в сообществе системных администраторов и специалистов по информационной безопасности. Основные пункты критики:

  • Регрессия: Возврат ошибки, исправленной 18 лет назад, свидетельствует о недостатках в процессах рецензирования кода и тестирования регрессий в проекте OpenSSH.
  • Сложность эксплуатации: Несмотря на высокий уровень опасности (CVSS 8.1), практическая эксплуатация на 64-битных системах с ASLR требует значительного времени и ресурсов, что снижает вероятность массовых атак, но не исключает целенаправленных.
  • Скорость реагирования: Разработчики OpenSSH и дистрибутивов выпустили патчи в течение нескольких дней, что было оценено как оперативная реакция.

Источники

  • Qualys Security Advisory: regreSSHion — CVE-2024-6387 Remote Unauthenticated Code Execution in OpenSSH
  • OpenSSH Release Notes (версия 9.8)
  • Red Hat Security Advisory (RHSA-2024:4312)
  • Ubuntu Security Notice (USN-6859-1)
  • Debian Security Advisory (DSA-5724-1)
  • NVD — National Vulnerability Database (CVE-2024-6387)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →