
Уязвимость BDU:2025-00539: Удалённое выполнение кода через Use-After-Free в Windows OLE
Уязвимость BDU:2025-00539 (CVE-2025-21298), обнаруженная в компоненте Windows OLE, связана с ошибкой Use-After-Free в функции ole32.dll!UtOlePresStmToContentsStm
. Она позволяет удалённому злоумышленнику выполнить произвольный код через специально сформированный RTF-файл. Уязвимость затрагивает все версии Windows, включая Server 2008–2025 и клиентские ОС.
Функция UtOlePresStmToContentsStm
обрабатывает OLE-объекты, конвертируя данные из потока OlePres в поток CONTENTS. Ошибка возникает из-за двойного освобождения (double-free
) указателя pstmContents
, управляющего потоком CONTENTS.
Технический разбор уязвимости
Анализ кода до патча
-
Создание и освобождение потока:
IStream *pstmContents = nullptr; pstg->CreateStream(L"CONTENTS", ..., &pstmContents); // Создание потока pstmContents->Release(); // Освобождение, но pstmContents НЕ обнуляется
-
Повторное использование указателя:
Если последующие операции (например,UtReadOlePresStmHeader
) завершаются с ошибкой, код переходит к очистке:if (pstmContents) pstmContents->Release(); // Double-free!
Указатель
pstmContents
сохраняет адрес освобождённой памяти, что приводит к крашу или RCE.
Исправление в патче (январь 2025):
Microsoft обнуляет pstmContents
после освобождения:
pstmContents->Release(); pstmContents = nullptr; // Патч: предотвращает повторный Release
Эксплуатация через RTF-файлы
Структура PoC:
Пример вредоносного RTF-файла (cve-2025-21298-poc.rtf
):
{\rtf1{\object\objhtml...}}
Этапы атаки:
-
Внедрение OLE-объекта: RTF содержит встроенный объект, манипулирующий потоками OlePres и CONTENTS.
-
Триггер double-free: При открытии файла в Outlook/WinWord функция
UtOlePresStmToContentsStm
обрабатывает объект, вызывая сбой. -
Выполнение кода: Управление памятью через heap spraying позволяет подменить освобождённый указатель на шелл-код.
Способы защиты
1. Установка обновлений
Установите патчи Microsoft от 14.01.2025. Проверьте версию ole32.dll
:
Get-Item "C:\Windows\System32\ole32.dll" | Select-Object VersionInfo
Ожидаемая версия после патча: 10.0.26100.2894
(Windows 11 24H2).
2. Ограничение обработки RTF
-
Outlook: Отключите предпросмотр RTF и используйте режим Plain Text.
-
Групповые политики: Заблокируйте открытие RTF из ненадёжных источников через AppLocker или SRP:
<FilePathRule Id="..." Description="Block RTF" Action="Deny"> <FileConditions> <FileCondition Path="*.rtf" /> </FileConditions> </FilePathRule>
3. Мониторинг и анализ
-
Сигнатуры сетевого трафика: Блокируйте вложения с MIME-типом
application/rtf
на почтовых шлюзах. -
Анализ файлов: Используйте oletools для проверки RTF на подозрительные OLE-объекты:
rtfobj suspicious.rtf
4. EMET-технологии
Включите Control Flow Guard (CFG) и Arbitrary Code Guard (ACG) для предотвращения эксплуатации:
Set-ProcessMitigation -Policy CFG,ACG -Enable
Рекомендации для разработчиков
-
Аудит кода: Проверяйте функции, работающие с COM-объектами, на корректное управление ссылками (
AddRef
/Release
). -
Инструменты: Используйте AddressSanitizer (ASan) для детекции use-after-free в тестах.
