Критическая уязвимость была обнаружена в диспетчере окон рабочего стола (Desktop Window Manager, DWM) операционной системы Windows. Данная ошибка позволяет злоумышленникам повышать уровень своих привилегий до системного. Уязвимость, получившая идентификатор CVE-2025-55681, связана с компонентом "dwmcore.dll". Она была раскрыта в ходе конкурса по безопасности TyphoonPWN, посвященного операционным системам Windows, где заняла второе место.
Детали уязвимости
Проблема заключается в функции "CBrushRenderingGraphBuilder::AddEffectBrush", которая является частью библиотеки ядра DWM. Коренная причина уязвимости - некорректная обработка памяти в конвейере обработки эффектов композиции. Если точнее, злоумышленники могут манипулировать пользовательскими данными в разделах общей памяти для создания условия выхода за пределы выделенной памяти. Создавая вредоносные описания эффектов, атакующий может заставить уязвимый код считывать память за пределами отведенных границ и использовать эти данные для последующих операций.
С технической точки зрения, коренная причина заключается в десериализации структур графа эффектов без должной проверки границ. Когда функция "DeserializeEffectDescription" обрабатывает предоставленные пользователем данные, она не проверяет значения индексов, используемых при операциях доступа к массивам. Это позволяет злоумышленнику контролировать критические индексы, которые впоследствии определяют шаблоны доступа к памяти, что приводит к произвольным чтениям за пределами допустимой области.
Согласно данным от SSD Disclosure, цепочка эксплуатации начинается с манипуляций инициализацией объекта "CCompiledEffect". Устанавливая определенные свойства ссылок на объект "CEffectBrush" через API композиции, атакующий может внедрить вредоносный "CompiledEffect", содержащий сконструированные данные описания эффекта. Уязвимый путь выполнения связывает несколько вызовов функций, включая "CVisual::ProcessSetWindowBackgroundTreatment", "CWindowBackgroundTreatment::Create" и, в конечном итоге, "CBrushRenderingGraphBuilder::AddEffectBrush", где и возникает условие выхода за границы.
Успешная эксплуатация использует менеджер памяти Segment Heap в Windows 11. Злоумышленники применяют точное распыление кучи для размещения контролируемых данных рядом с уязвимыми структурами. Стратегически освобождая фрагменты кучи, они могут манипулировать структурой красно-черного дерева, которое управляет свободной памятью, что позволяет раскрыть указатели. Эти указатели облегчают косвенные вызовы функций через сконструированные таблицы виртуальных методов, в конечном счете загружая произвольный код в память.
Атака развивается в три этапа. Во-первых, активируется условие выхода за границы и выполняется шеллкод. Во-вторых, перехватывается функция "MapViewOfFile" для манипуляции общей памятью и повышения привилегий через процесс контроля учетных записей пользователей (User Account Control, UAC). Наконец, выполняется привилегированный полезный груз (payload) путем загрузки произвольных динамических библиотек (DLL) в контексте повышенного процесса "consent.exe".
Корпорация Microsoft уже выпустила патчи, устраняющие данную уязвимость. Организациям и отдельным пользователям следует немедленно применить доступное обновление безопасности от Центра реагирования на угрозы безопасности Microsoft (Microsoft Security Response Center). Патч был протестирован на Windows 11. При этом стоит отметить, что надежность эксплуатации на Windows 10 снижена из-за различий в реализациях управления кучей. Следовательно, пользователям всех поддерживаемых версий Windows настоятельно рекомендуется установить последние обновления для устранения этой серьезной угрозы безопасности.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-55681
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-55681
- https://ssd-disclosure.com/desktop-window-manager-array-out-of-bounds-lpe/