CVE: CVE-2026-91949
Продукт: Debian
Дата публикации: 15.09.2026
Критичность: CRITICAL
CVSS: 9.2 (4.0)
EPSS: 0,45%; процентиль 37,96%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость CVE-2026-91949 позволяет атакующему обходить запрет на RDSTLS в FreeRDP, устанавливая защищенное соединение без предварительной аутентификации. В Debian пакет freerdp3 в trixie пока не обновлен, что требует немедленного внимания администраторов. Материал описывает механику обхода, статус версий и способы проверки.
Основные характеристики
Риск заключается в обходе политик безопасности транспорта: атакующий может установить RDSTLS-соединение, даже если сервер настроен на его запрет. Это нарушает доверительные границы до аутентификации.
- Тип ошибки: CWE-693 (Protection Mechanism Bypass). Нарушена логика проверки протокола при отказе в согласовании.
- CVSS 4.0: 9.2 (CRITICAL). Вектор:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X.
- Эксплуатация: Не требуется аутентификация, сложность низкая. Атакующий имеет сетевой доступ.
- EPSS: 0,45% (процентиль 37,96%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но не нулевая.
Какие продукты и версии затронуты
В Debian затронуты пакеты, содержащие серверную часть FreeRDP. Статус исправлений различается по релизам:
- freerdp2 (bookworm): Статус
resolved. Версия в репозитории2.11.7+dfsg1-6~deb12u1. Debian классифицирует это какunimportant, вероятно, из-за отсутствия серверной части или специфичной конфигурации в этом пакете для данного сценария.
- freerdp3 (forky, sid): Статус
resolved. Исправлено в версии3.31.0+dfsg-1. В репозиториях доступна3.31.1+dfsg-1.
- freerdp3 (trixie): Статус
open. Версия в репозитории3.15.0+dfsg-2.1+deb13u3содержит уязвимость. Официального исправления в этом релизе пока нет.
Причина уязвимости
Причина уязвимости кроется в логике обработки отказа при согласовании протокола (protocol negotiation). Когда сервер получает запрос на использование несовместимого протокола, он должен отклонить соединение. Однако в версиях FreeRDP до 3.31.0 после получения ответа об отказе в согласовании клиент может инициировать TLS-рукопожатие и перейти к RDSTLS.
Сервер не прерывает соединение на этапе отказа в согласовании, а позволяет продолжить сессию. Это нарушает механизм защиты (CWE-693), который должен блокировать доступ до успешного согласования разрешенного транспорта. Ошибка позволяет обойти ограничение «pre-authentication transport restrictions».
Как работает атака
Атакующий отправляет серверу запрос на использование протокола, который сервер не поддерживает или запрещает. Сервер отвечает отказом в согласовании (negotiation failure). В норме соединение должно быть разорвано.
Однако из-за ошибки клиент может проигнорировать этот отказ и отправить TLS ClientHello. Сервер, не проверяя корректность предыдущего шага согласования, продолжает TLS-рукопожатие.
В результате устанавливается RDSTLS-соединение. Атакующий получает защищенный канал до аутентификации, что может использоваться для дальнейших атак или обхода политик, запрещающих RDSTLS на этапе до входа.
Условия успешной эксплуатации
Для успешной эксплуатации необходимо:
- Наличие сервера FreeRDP версии до 3.31.0, настроенного на запрет RDSTLS или использующего политики, зависящие от корректного согласования протокола.
- Сетевой доступ к порту RDP (по умолчанию 3389).
- Отсутствие аутентификации на этапе установки соединения (уязвимость эксплуатируется до входа).
Возможный сценарий атаки
Администратор настраивает FreeRDP так, чтобы RDSTLS был разрешен только после успешного согласования протокола или в определенных условиях. Атакующий сканирует порт 3389.
Он отправляет RDP Negotiation Request с несовместимым типом транспорта. Сервер отвечает отказом. Атакующий игнорирует отказ и отправляет TLS ClientHello.
Сервер устанавливает TLS-сессию. Теперь атакующий имеет зашифрованный канал, который может использовать для отправки аутентификационных данных или других пакетов, обходя первоначальные ограничения транспорта.
Есть ли публичный эксплойт
В предоставленных источниках нет информации о публичном PoC или подтвержденной эксплуатации в реальных атаках. CVE находится в статусе
Undergoing Analysis. Отсутствие сведений о PoC не означает, что эксплойт не существует, но подтвержденных данных о его доступности в открытых базах на момент публикации нет.Признаки эксплуатации
Специфичных IOC для этой уязвимости в источниках не указано. Общие неспецифичные признаки, которые стоит проверять:
- Необычные попытки подключения к порту 3389 с последующим разрывом соединения на этапе TLS.
- Записи в логах FreeRDP о «negotiation failure», за которыми следует успешное TLS-рукопожатие от того же IP.
- Соединения, установленные с IP-адресов, не входящих в список разрешенных, если используется IP-фильтрация.
Как обнаружить атаку
Для обнаружения атаки следует анализировать логи сервера FreeRDP. Ищите последовательность событий: отказ в согласовании протокола, за которым следует успешное завершение TLS-рукопожатия.
Также полезно мониторить сетевой трафик на предмет аномальных RDP Negotiation Requests. Если используется SIEM, настройте алерт на совпадение паттерна «negotiation failure» + «TLS handshake success» в коротком временном окне.
Как проверить свою версию
Проверьте установленную версию пакета FreeRDP в вашей системе Debian. Замените
<имя-пакета> на freerdp2 или freerdp3 в зависимости от того, какой пакет установлен.
Bash:
dpkg-query -W -f='${Package} ${Version}\n' freerdp3
Также можно проверить доступные версии в репозитории:
Bash:
apt-cache policy freerdp3
Сравните установленную версию с версиями, указанными в Debian Security Tracker. Для trixie уязвимость не исправлена, для forky и sid — исправлена.
Исправление
Основное исправление — обновление пакета FreeRDP до версии 3.31.0 или выше. В Debian:
- Для forky и sid: выполните
apt update && apt upgrade freerdp3. Версия3.31.1+dfsg-1содержит исправление.
- Для trixie: официального исправления пока нет. Рассмотрите возможность обновления до forky или sid, если это допустимо политикой. Альтернатива — применение временных мер защиты.
- Для bookworm: пакет
freerdp2помечен какunimportant, что может означать, что серверная часть не используется или не уязвима в данном контексте. Проверьте, установлен ли у вас сервер FreeRDP из этого пакета.
Временные меры защиты
Пока исправление недоступно (например, в trixie), можно применить следующие меры:
- Ограничьте доступ к порту 3389 на уровне файрвола (iptables/nftables) только для доверенных IP-адресов.
- Используйте NAC (Network Access Control) для проверки устройств до предоставления доступа к RDP.
- Если возможно, отключите RDSTLS в конфигурации FreeRDP, если политика позволяет использовать другие методы защиты (например, NLA с строгими политиками). Однако это может снизить безопасность, поэтому используйте только как временную меру.
- Убедитесь, что включена аутентификация до шифрования (CredSSP), если это поддерживается конфигурацией.
Как проверить устранение уязвимости
После обновления выполните:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' freerdp3
Убедитесь, что версия не ниже 3.31.0. Перезапустите службу FreeRDP, если требуется. Проверьте логи на отсутствие ошибок после обновления. Проведите тестовое подключение из доверенной сети, чтобы убедиться, что сервис работает корректно.
Вывод
CVE-2026-91949 представляет серьезный риск для систем Debian, где используется FreeRDP в версиях до 3.31.0. В trixie уязвимость не исправлена, что требует немедленных действий.
Администраторам следует проверить установленные версии, применить временные меры защиты и запланировать обновление. Механика обхода позволяет атакующему установить защищенное соединение до аутентификации, что нарушает политики безопасности транспорта.
Официальные источники
История обновлений статьи
- 17.09.2026 — Опубликована первая версия материала.
- 18.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
