Уязвимости безопасности Windows GDI: риски, эксплойты и исправления

Последнее обновление: Декабрь 6 2025
Автор: TecnoDigital
  • Windows GDI накапливает уязвимости, связанные с раскрытием информации, отказом в обслуживании и удаленным выполнением кода, которые затрагивают несколько версий Windows и Windows Server.
  • Многие из этих уязвимостей эксплуатируются через файлы EMF/WMF или искаженный графический контент, обрабатываемый gdi32.dll и win32k.sys, что может привести к BSOD или утечкам памяти.
  • Microsoft выпускает исправления в накопительных пакетах с изменениями в двоичных файлах, таких как gdi32.dll, а также предоставляет хэши и информацию о файлах для проверки успешности установки.
  • Сочетание гибкого исправления ошибок, сегментации сети, ограничения опасных графических форматов и мониторинга с помощью EDR является ключом к снижению риска, связанного с GDI.

Уязвимости безопасности Windows GDI

Графический пользовательский интерфейс Windows (GDI) десятилетиями отображал окна, текст, значки и изображения, и большинство пользователей даже не подозревали об этом. Однако этот фундаментальный компонент системы также стал источником нескольких серьезных уязвимостей безопасности, некоторые из которых являются эксплойтами нулевого дня, а другие были исправлены в масштабных обновлениях Microsoft. Когда GDI дает сбой, это не просто приводит к зависанию приложения: в некоторых случаях это может привести к утечкам данных, удаленному выполнению кода или синим экранам смерти (BSOD), которые парализуют работу целых серверов.

В следующих строках подробно описано, как работает GDI, какие конкретные уязвимости были задокументированы в последние годы (например, CVE-2017-11816, CVE-2020-1435 или CVE-2023-36884 ), как они используются злоумышленниками , какое реальное влияние они оказывают на домашнюю и корпоративную среду, а также какие практические меры могут предпринять администраторы и специалисты по кибербезопасности для защиты своих систем Windows, от более старых версий, таких как Windows Vista SP2, до современных версий Windows 11 и Windows Server.

Что такое Windows GDI и почему он так чувствителен к безопасности?

Интерфейс графических устройств (GDI) — это устаревший API Windows, отвечающий за управление всем, что связано с графическим рендерингом: от рисования линий и прямоугольников до отображения шрифтов, растровых изображений и картинок на экране или в принтерах. Приложения вызывают функции из таких библиотек, как gdi32.dll, для создания контекстов устройств (HDC), кистей, перьев, областей и других графических объектов, которые управляются на уровне ядра с помощью структур данных.

Архитектура GDI разделена на пользовательский и ядровый режимы . В пользовательском режиме DLL-библиотека gdi32.dll и другие связанные с ней библиотеки получают запросы на отрисовку от приложений. Эти вызовы передаются в оконную подсистему Windows, которая работает в ядровом режиме через win32k.sys. Именно ядровая часть фактически управляет системной памятью, проверяет графические объекты и отправляет их на оборудование. Любая недостаточная проверка указателей, размеров или индексов на этом этапе может привести к катастрофическим ошибкам.

Для отслеживания и повторного использования ресурсов система поддерживает таблицы объектов GDI . У каждого процесса есть своя таблица, но существует также глобальная таблица для разделяемых объектов, что увеличивает вероятность повреждения данных в случае переполнения буфера, события двойного освобождения памяти или недопустимой ссылки на память. Подобные сбои могут привести к повреждению памяти ядра, состояниям гонки, сбоям системы или даже выполнению произвольного кода в наиболее привилегированном контексте системы.

С появлением более современных API (GDI+, Direct2D, DirectWrite и даже DirectComposition) Microsoft сокращает использование GDI в новых приложениях, но экосистема устаревшего программного обеспечения , которая все еще на него полагается, огромна. Это устаревшее программное обеспечение делает GDI очень привлекательной поверхностью для атак со стороны исследователей и злоумышленников.

уязвимости в Windows GDI

Исторические уязвимости: от раскрытия информации до нулевого дня

К числу старейших уязвимостей, связанных с GDI, относится задокументированная уязвимость раскрытия информации, CVE-2017-11816 . В этом случае проблема заключалась в том, как GDI обрабатывал определенные объекты в памяти, позволяя злоумышленнику извлекать из целевой системы данные, которые не должны быть доступны. Это было не выполнение кода, а серьезное нарушение конфиденциальности.

Эта уязвимость затронула различные версии Windows и вынудила Microsoft выпустить специальное обновление безопасности. Недостаток заключался во внутренней обработке графических структур, где подсистема не могла должным образом очистить или проверить определенные области памяти перед их повторным использованием, что позволяло считывать остаточную информацию, принадлежащую другим процессам или самой операционной системе.

Исправление появилось в обновлении безопасности, включенном в регулярный цикл «Patch Tuesday» в октябре 2017 года. Наряду с описанием уязвимости, Microsoft предоставила подробные таблицы со списком затронутых файлов и их более новых версий: например, различные сборки gdi32.dll для платформ x86, x64 и IA-64 с датами, такими как 8 сентября 2017 года, и версиями файлов, такими как 6.0.6002.24200. Эта информация позволила администраторам убедиться в корректности применения патча.

Позже исследователи из Project Zero (Google) выявили еще одну уязвимость нулевого дня, связанную с gdi32.dll в пользовательском режиме . На этот раз уязвимость затрагивала обработку DIB (Device Independent Bitmaps), встроенных в регистры EMF (Enhanced Metafile). Неправильное манипулирование этими битовыми картами в метафайлах позволяло извлекать информацию из памяти процесса, что напрямую влияло на конфиденциальность данных.

  Как настроить безопасность и конфиденциальность Gemini в Chrome

Эту уязвимость нулевого дня можно было воспроизвести локально через Internet Explorer и удаленно через Office Online, открыв документ DOCX со специально созданным EMF-файлом. Список затронутых версий был обширным и включал в себя Windows Vista Service Pack 2, Windows 10 и версии Windows Server, такие как 2012 R2 и 2016. Проблема стала достоянием общественности после истечения стандартного 90-дневного периода Project Zero без выпуска патча, что официально сделало эту уязвимость практическим эксплойтом нулевого дня.

Тем временем в Microsoft произошел примечательный инцидент: внутренняя проблема помешала им выпустить запланированный на вторник пакет исправлений на месяц, отложив выпуск исправлений до следующего цикла. Подобные задержки увеличивают время обнаружения уязвимостей, уже известных исследовательскому сообществу.

Эксплуатация уязвимости GDI

Недавние критические ошибки: BSOD, удаленное выполнение и большие пакеты исправлений

Со временем уязвимости в GDI эволюционировали, превратившись в более серьезные сценарии. Один из особенно ярких примеров — уязвимость типа «отказ в обслуживании», идентифицированная как CVE-2023-36884 , которая затрагивает версии Windows 10 (начиная с 1607), Windows 11 и Windows Server 2016, 2019 и 2022. Хотя в зависимости от бюллетеня идентификатор связывался с различными компонентами, технический анализ описывает критическую ошибку в графической подсистеме, способную вызывать синие экраны смерти (BSOD) при обработке некорректно сформированных графических объектов.

Проблема связана с функцией NtGdiDdDeleteDeviceBitmap в файле win32k.sys . При обработке недопустимого графического битового изображения или устройства уязвимый код не выполняет тщательную проверку границ буфера при копировании данных из структуры устройства (например, типа DD_DEVICE_OEM). Это упущение позволяет перезаписывать соседние области памяти в ядре, генерируя исключение доступа к памяти (PAGE_FAULT_IN_NONPAGED_AREA, код 0x00000050) и вызывая синий экран смерти (BSOD) с кодами типа IRQL_NOT_LESS_OR_EQUAL или аналогичными.

Типичный сценарий эксплуатации начинается с графических данных, встроенных в сетевые протоколы, такие как SMB или RDP, или даже через WebDAV или службы печати. ​​Некорректно сформированный EMF-файл передается как часть удаленного документа или потока, и когда приложение, такое как Office, Edge, программа просмотра изображений или даже сам Проводник, пытается интерпретировать его содержимое, вызывается подсистема GDI для его обработки. Процедура анализа не может должным образом проверить определенные регистры объектов, что позволяет разыменовать указатель, выходящий за пределы допустимого диапазона, и дестабилизирует память ядра (особенно нестраничный пул).

Хотя в официальных бюллетенях основное внимание уделяется атакам типа «отказ в обслуживании» (DoS) , различные исследователи указывают на то, что с помощью более совершенных методов эксплуатации повреждений памяти (например, путем атаки на кучу) можно создать цепочки, ведущие к выполнению кода в режиме ядра, аналогично тому, что наблюдалось с уязвимостями в других компонентах, таких как MSHTML (случай CVE-2021-40444).

Критическая важность GDI также отразилась в большом количестве выпущенных патчей. В июле 2020 года Microsoft выпустила масштабное обновление, исправившее 123 уязвимости в своих продуктах, 18 из которых были классифицированы как критические. Среди последних была CVE-2020-1435, напрямую связанная с тем, как GDI манипулирует объектами в памяти. Если злоумышленнику удавалось обманом заставить жертву открыть специально созданный контент (например, посетив вредоносный веб-сайт), он мог запустить удаленное выполнение кода с теми же привилегиями, что и пользователь.

В той же партии обнаружена уязвимость CVE-2020-1436, связанная с обработкой специально созданных шрифтов, и особенно заметная уязвимость CVE-2020-1350 , критическая уязвимость в DNS-сервере Windows, обладающая возможностями распространения вредоносного ПО без участия пользователя. Хотя последняя не затрагивает GDI, она иллюстрирует контекст: один пакет исправлений содержал уязвимости в сетевых службах, гипервизорах (несколько уязвимостей удаленного выполнения в Hyper-V) и самом графическом интерфейсе.

В частности, уязвимость CVE-2020-1435 связана с тем, как GDI обрабатывает графические объекты в памяти . Успешная эксплуатация позволит злоумышленнику устанавливать программы, просматривать, изменять или удалять данные, а также создавать учетные записи пользователей с полными правами. Типичный вектор атаки включает в себя обман пользователя с целью заставить его посетить вредоносный веб-сайт или открыть файл, содержащий графические ресурсы, предназначенные для использования уязвимости. Это соответствует исторической модели GDI: любой визуальный контент, зависящий от его механизма рендеринга, может представлять собой уязвимость, если система не обновлена.

В том же цикле обновлений за июль 2020 года было также объявлено о нескольких критических уязвимостях в Hyper-V (CVE-2020-1041, -1040, -1032, -1036, -1042 и -1043) , демонстрирующих, как различные компоненты Windows (сеть, виртуализация, графика) могут стать звеньями в одной цепочке атак, если организация не поддерживает строгую программу управления обновлениями.

Исправления безопасности Windows GDI

Фактическое воздействие на системы Windows, затронутые версии и векторы

Диапазон версий, затронутых уязвимостями GDI, широк. В случаях нулевого дня, задокументированных Project Zero, уязвимость в gdi32.dll затронула Windows Vista SP2, Windows 7, Windows 8.1, Windows 10 и несколько версий Windows Server (2012 R2, 2016 и т. д.). Это означает, что огромное количество компьютеров, как домашних, так и корпоративных, могут стать жертвами утечек памяти просто при открытии документа, просмотре веб-страниц в Internet Explorer или использовании Office Online.

  Двухфакторная аутентификация: полное руководство по защите ваших учетных записей

В последнем обзоре уязвимостей, связанных с синим экраном смерти (BSOD), Microsoft подтвердила, что анализируемая уязвимость затрагивает Windows 10 начиная с версии 1607, Windows 11 и Windows Server 2016/2019/2022 , включая версии Enterprise, Education и LTSC. Версии, поддержка которых прекращена, такие как Windows 7 или 8.1, не покрываются официальным патчем, но это не означает, что они свободны от проблем с GDI; это просто означает, что они не получают регулярных исправлений.

На операционном уровне последствия можно разделить на три категории: раскрытие информации (чтение данных из памяти, которая должна быть частной), отказ в обслуживании (повторяющиеся синие экраны смерти) и удаленное выполнение кода . В корпоративных средах синий экран смерти на сервере, играющем критически важную роль (например, на сервере общей печати или хосте Hyper-V), может вызвать цепную реакцию сбоев: прерывание работы служб печати, неожиданное завершение работы виртуальных машин, потеря данных в удаленных сессиях и длительное время восстановления.

С точки зрения сети, уязвимость GDI может быть использована через такие протоколы, как SMB (порт 445), RDP или WebDAV, если какая-либо служба автоматически обрабатывает полученные изображения EMF/WMF или метафайлы. Локально достаточно, чтобы пользователь открыл вредоносный файл в приложениях, использующих GDI, таких как Paint, WordPad, старые программы просмотра изображений или даже процессы, участвующие в предварительном просмотре значков и миниатюр в проводнике файлов . Наиболее распространенные цепочки атак сочетают фишинговое электронное письмо с документом DOCX или PDF, содержащим некорректно сформированный файл EMF.

В регулируемых организациях (финансы, здравоохранение, государственное управление) инциденты, вызванные неустраненными уязвимостями, могут иметь юридические и нормативные последствия. Синий экран смерти (BSOD), приводящий к сбою критически важной системы, может рассматриваться как событие безопасности, ставящее под угрозу непрерывность обслуживания, что, в свою очередь, может повлечь за собой проверки и штрафы в соответствии с такими нормативными актами, как GDPR или HIPAA. Кроме того, различные отчеты об угрозах связывают использование уязвимостей в графических подсистемах с группами APT, нацеленными на важные цели в Азии и Европе.

Стоит помнить, что, согласно общепринятым отраслевым данным (например, отраженным в ежегодных отчетах об утечках данных), значительная часть устройств Windows остается без обновлений более 90 дней после выхода критически важных обновлений. Это создает широкие возможности для злоумышленников по автоматизации эксплойтов и их интеграции в такие фреймворки, как Metasploit или Cobalt Strike, способные сканировать целые диапазоны сетей на наличие уязвимых хостов.

Как Microsoft распространяет исправления и какие файлы изменяются

Когда в GDI обнаруживается уязвимость, Microsoft выпускает обновление безопасности, обычно входящее в состав ежемесячных накопительных обновлений. Эти обновления, как правило, распространяются через Центр обновления Windows , каталог обновлений Microsoft или инструменты управления, такие как службы обновления Windows Server (WSUS) и диспетчер конфигурации конечных точек Microsoft (MECM). В случае уязвимости CVE-2017-11816 соответствующее обновление (например, KB4042121 для Windows Server 2008) можно получить либо через Центр обновления Windows, либо через каталог в виде отдельного файла .msu.

Одна из особенностей, на которую обращает внимание Microsoft, заключается в том, что если языковые пакеты устанавливаются после применения обновления , то необходимо переустановить патч безопасности. Поэтому всегда рекомендуется сначала установить необходимые языковые пакеты, а затем обновления. Эта деталь, которая может показаться незначительной, привела к нескольким случаям, когда система ошибочно считалась обновленной, хотя на самом деле некоторые бинарные файлы GDI не содержали исправленной версии.

В документации к этим бюллетеням Microsoft предоставляет обширные таблицы с информацией о файлах : имя (например, gdi32.dll), конкретная версия, размер, дата, время и платформа (x86, x64, IA-64). Эти таблицы позволяют администраторам и аудиторам проводить криминалистическую проверку правильности установки исполняемого файла. Аналогичный процесс используется для пакетов .msu и .exe различных версий Windows и Office, где приводятся хеши SHA1 и SHA256 каждого файла, что позволяет командам проверять их целостность.

Список файлов и хешей поражает воображение: от Windows6.0-KB2834886-x86.msu и его вариантов x64 и ia64, через Windows6.1-KB2835364-x64.msu, Windows8-RT-KB2835361-x86.msu, десятки установщиков для Windows Server 2003 и Windows XP на самых разных языках (CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR, PTB, PTG, RUS и др.), до патчей для компонентов Office и Lync, таких как AttendeeAdmin.msp, ogl2007-kb2687309-fullfile-x86-glb.exe или lyncloc2013-kb2817465-fullfile-x64-glb.exe. Каждая из них включает в себя собственные хеши SHA1 и SHA256 для упрощения проверки.

Во всех этих случаях конечная цель одна и та же: обновить файл gdi32.dll (или связанные с ним двоичные файлы графической подсистемы) до безопасной версии. Например, на платформах, таких как Windows Server 2008, файл gdi32.dll указан как версия 6.0.6002.24200, а его размеры варьируются в зависимости от архитектуры (около 299 520 байт на x86, 391 680 байт на x64 и 955 392 байт на IA-64). Эти значения, наряду с датой сборки, являются основным ориентиром для определения того, установлен ли в системе патч.

  Как открыть командную строку в Windows 10: полное руководство и все приемы

В официальной документации также содержатся ссылки на статьи базы знаний с подробной информацией о внедрении и развертывании этих обновлений, а также ссылки на ресурсы поддержки: страницы справки Центра обновления Windows, порталы безопасности для ИТ-специалистов (например, TechNet Security), международные сайты поддержки и специализированные сервисы по борьбе с вредоносным ПО под брендом Microsoft Secure.

Передовая практика смягчения последствий, мониторинга и реагирования

Помимо установки обновлений сразу после их появления, существует ряд мер по смягчению последствий и многоуровневой защите , которые помогают снизить риск, связанный со сбоями GDI, особенно в корпоративных средах с сотнями или тысячами компьютеров.

Во-первых, рекомендуется ограничить поверхность атаки, отключив или ограничив автоматическую обработку определенных графических форматов в приложениях и браузерах. Например, в Microsoft Edge можно настроить групповые политики для блокировки или управления загрузкой и обработкой метафайлов EMF/WMF с помощью ключей реестра в разделе HKLM\SOFTWARE\Policies\Microsoft\Edge, связанных с ограничениями на загрузку. В других приложениях можно использовать параметры конфигурации для предотвращения автоматического предварительного просмотра документов из ненадежных источников и применять руководства по устранению неполадок для решения проблемы с зависанием проводника файлов.

Еще один важный уровень — сегментация сети в соответствии с принципами нулевого доверия . Это включает в себя ограничение трафика SMB, RDP и других потенциально уязвимых протоколов только строго необходимыми подсетями, внедрение межсетевых экранов нового поколения с глубоким анализом пакетов и применение правил, основанных на идентификации и контексте. Ограничивая взаимодействие устройств с различными сервисами, можно значительно снизить влияние уязвимости, пытающейся распространиться по сети.

Что касается обнаружения, внедрение решений для обнаружения и реагирования на угрозы на конечных точках (EDR), таких как Microsoft Defender for Endpoint, помогает отслеживать аномальное поведение, связанное с win32k.sys, gdi32.dll и событиями BSOD . Настройка оповещений о всплесках ошибок синего экрана (например, начиная с события с ID 1001 в журнале событий) и необычном доступе к графической подсистеме может помочь выявить попытки эксплуатации или нестабильность, вызванную вредоносным ПО.

Для управления обновлениями настоятельно рекомендуется автоматизировать развертывание с помощью Windows Update for Business, WSUS или MECM, но всегда включать этап тестирования в тестовых средах для выявления потенциальных регрессий перед запуском в рабочую среду. В изолированных инфраструктурах целесообразно проводить аудит всех входящих файлов с помощью таких инструментов, как правила YARA, предназначенные для распознавания подозрительных шаблонов в форматах EMF/WMF и других графических форматах.

В более сложных сценариях некоторые организации рассматривают возможность миграции своих внутренних приложений на более современные API, такие как Direct2D, DirectWrite или кроссплатформенные графические движки (Cairo, Skia), которые обеспечивают лучшую изоляцию и меньшую зависимость от устаревшего GDI. В среднесрочной перспективе Microsoft может отказаться от значительной части GDI в будущих версиях Windows, чтобы уменьшить поверхность атаки, хотя совместимость со старым программным обеспечением останется проблемой.

С точки зрения криминалистики и обратного проектирования, такие инструменты, как WinDbg, KD и Volatility, позволяют анализировать дампы памяти после «синего экрана смерти» (BSOD) и обнаруживать повреждения памяти с меткой «Gdi» в пуле памяти ядра. Эксплойты, опубликованные в исследовательских целях, демонстрируют, как файл памяти движка (EMF) с определенными некорректно сформированными регистрами (например, в EMR_HEADER) может вызвать состояние гонки и спровоцировать сбой. Эти знания имеют решающее значение для групп реагирования на инциденты, позволяя восстановить картину произошедшего в реальной атаке.

В случае инцидента рекомендуется следовать алгоритмам действий, разработанным NIST (Идентификация, Локализация, Устранение, Восстановление). Это включает в себя изоляцию затронутых систем , сохранение доказательств (дампы памяти, журналы, образцы подозрительных файлов), развертывание ожидающих исправлений, сканирование систем с помощью обновленных антивирусных инструментов и восстановление из проверенных резервных копий или возврат к предыдущей точке . Кроме того, целесообразно периодически анализировать извлеченные уроки для улучшения процессов обновления и повышения безопасности системы.

Вся эта история сбоев и исправлений, связанных с Windows GDI, подчеркивает, насколько уязвимыми могут быть устаревшие компоненты, если отсутствует надежная многоуровневая стратегия безопасности и обновлений; понимание того, как используются эти уязвимости, какие версии находятся под угрозой и какие дополнительные меры контроля могут быть применены, позволяет администраторам и специалистам по кибербезопасности укрепить свои системы и предотвратить сбои или полную компрометацию инфраструктуры Windows из-за простого образа или специально созданного метафайла.

Патч Windows 10 для бесплатных обновлений
Связанная статья:
Патч Windows 10 для бесплатных обновлений: ESU и KB5071959