CVE-2024-38077: Удалённое выполнение кода в службе лицензирования удалённого рабочего стола Windows ("MadLicense")
I. Обзор уязвимости
- CVE ID: CVE-2024-38077
- Псевдоним: MadLicense
- Оценка CVSS: 9.8 (критическая)
- Тип: Переполнение буфера в куче (CWE-122)
- Обнаружена: Ver, Lewis Lee, Zhiniang Peng
- Описание: Предварительно неаутентифицированная уязвимость удалённого выполнения кода без взаимодействия с пользователем (zero-click) в службе лицензирования удалённого рабочего стола Windows (RDL). Неаутентифицированный злоумышленник может отправить специально сформированный RPC-пакет на конечную точку
RPC over TCP, предоставляемую mstlsap.dll / tlslicense.dll, что вызывает переполнение буфера в куче и приводит к произвольному выполнению кода с правами SYSTEM.
II. Технические подробности
Служба лицензирования удалённого рабочего стола прослушивает динамические конечные точки RPC (обычно порты 49664–49681), доступные через TCP-порт 135 (RPC Endpoint Mapper). Уязвимость находится в обработчике интерфейса RPC LicensingSendResponse или связанном с ним внутри управления памятью кучи службы лицензирования. Отправляя специально сформированный запрос протокола лицензирования с чрезмерно большой или повреждённой структурой LicensingBinary, служба выполняет небезопасный memcpy в буфер кучи недостаточного размера, повреждая соседние метаданные кучи и обеспечивая выполнение кода.
Ключевые аспекты:
- Без аутентификации: не требуются действительные учётные данные или сеанс RDP.
- 0-click: не требуется взаимодействие с пользователем на целевой системе.
- Сетевой вектор: эксплуатируется удалённо через сеть.
- Воздействие: полный доступ к целевой системе Windows Server на уровне SYSTEM.
III. Затронутые версии
| Продукт | Воздействие |
|---|
| Windows Server 2008 R2 (все выпуски) | RCE |
| Windows Server 2012 / 2012 R2 | RCE |
| Windows Server 2016 | RCE |
| Windows Server 2019 | RCE |
| Windows Server 2022 | RCE |
| Windows Server 2025 | RCE |
Более ранние версии (Windows 2000 Server, Server 2003, Server 2008) также могут быть затронуты, если служба RDL включена.
IV. Настройка окружения
- Установите поддерживаемую версию Windows Server (2008–2025) на виртуальную машину.
- Убедитесь, что роль службы лицензирования удалённого рабочего стола установлена через диспетчер сервера:
- Добавление ролей и компонентов → Службы удалённых рабочих столов → Лицензирование удалённого рабочего стола
- Запустите или проверьте службу:
net start "Remote Desktop Licensing"
- Подтвердите, что служба прослушивает порт:
netstat -an | findstr LISTENING
- Служба RDL регистрирует динамические конечные точки RPC. Запросите порт 135 с помощью инструмента сопоставления конечных точек RPC.
- Изолируйте целевую виртуальную машину от производственных сетей — PoC по умолчанию вызовет сбой.
V. Шаги воспроизведения
- Запустите PoC-скрипт против целевого Windows Server с открытой службой RDL:
python exploit.py --target <TARGET_IP>
- На целевой системе следите за сбоем службы
tlslicense.dll или сбоем системы (BSOD в зависимости от серьёзности повреждения кучи).
- Чтобы проверить переполнение, прикрепите отладчик (WinDbg) к процессу
svchost.exe, размещающему службу RDL, перед запуском эксплойта и наблюдайте за нарушением прав доступа.
VI. Код PoC
Прилагаемый скрипт exploit.py в этом каталоге содержит воспроизведение атаки MadLicense. Он подключается к целевой службе RDL через RPC over TCP, формирует повреждённый запрос лицензирования с чрезмерно большим двоичным блоком и запускает переполнение буфера в куче.
VII. Смягчение последствий
- Патч: установите официальное обновление безопасности из июльского вторника исправлений Microsoft 2024 года (KB5040426 / KB5040430 / KB5040434 / KB5040437 в зависимости от версии Windows).
- Обходное решение:
VIII. Ссылки