- Rozhraní Windows GDI hromadí zranitelnosti v oblasti zveřejňování informací, odmítnutí služby a vzdáleného spuštění kódu, které ovlivňují více verzí systémů Windows a Windows Server.
- Mnoho z těchto zranitelností je zneužíváno prostřednictvím souborů EMF/WMF nebo poškozeného grafického obsahu zpracovávaného soubory gdi32.dll a win32k.sys, což může způsobit BSOD nebo úniky paměti.
- Společnost Microsoft vydává záplaty v kumulativních balíčcích se změnami binárních souborů, jako je gdi32.dll, a poskytuje hashe a informace o souborech pro ověření úspěšné instalace.
- Kombinace agilního patchování, segmentace sítě, omezení nebezpečných grafických formátů a monitorování pomocí EDR je klíčem ke snížení rizika spojeného s GDI.

Grafické uživatelské rozhraní (GDI) systému Windows vykresluje okna, text, ikony a obrázky již po celá desetiletí, aniž by si to většina uživatelů uvědomovala. Tato základní systémová součást však byla také zdrojem několika významných bezpečnostních zranitelností, některých zero-day exploitů a dalších opravených v rozsáhlých aktualizacích společnosti Microsoft. Když GDI selže, nepadá jen aplikace: v některých případech to může vést k únikům dat, vzdálenému spuštění kódu nebo modrým obrazovkám smrti (BSOD), které zničí celé servery.
Následující řádky podrobně popisují, jak GDI funguje, jaké konkrétní zranitelnosti byly v posledních letech zdokumentovány (například CVE-2017-11816, CVE-2020-1435 nebo CVE-2023-36884 ), jak jsou zneužívány , jaký mají skutečný dopad na domácí a firemní prostředí a jaká praktická opatření mohou administrátoři a odborníci na kybernetickou bezpečnost použít k ochraně svých systémů Windows, od starších verzí, jako je Windows Vista SP2, až po moderní edice Windows 11 a Windows Server.
Co je Windows GDI a proč je tak citlivé z hlediska zabezpečení?
Rozhraní grafických zařízení (GDI) je starší API systému Windows, které je zodpovědné za správu všeho, co souvisí s vykreslováním grafiky: od kreslení čar a obdélníků až po zobrazování písem, bitmap a obrázků na obrazovce nebo v tiskárnách. Aplikace volají funkce z knihoven, jako je gdi32.dll, k vytváření kontextů zařízení (HDC), štětců, per, oblastí a dalších grafických objektů, které jsou spravovány v jádře pomocí datových struktur řízených jádrem.
Architektura GDI je rozdělena na uživatelský režim a režim jádra . V uživatelském režimu přijímá knihovna DLL gdi32.dll a další související knihovny požadavky na kreslení od aplikací. Tato volání jsou předávána okennímu subsystému systému Windows, který běží v režimu jádra prostřednictvím souboru win32k.sys. Tato část jádra ve skutečnosti manipuluje se systémovou pamětí, ověřuje grafické objekty a odesílá je do hardwaru. Jakékoli nedostatečné ověření ukazatelů, velikostí nebo indexů v tomto bodě otevírá dveře katastrofickým chybám.
Pro sledování a opětovné použití zdrojů systém udržuje tabulky objektů GDI . Každý proces má svou vlastní tabulku, ale existuje také globální tabulka pro sdílené objekty, což zvyšuje riziko poškození v případě přetečení vyrovnávací paměti, události double-free nebo neplatného odkazu na paměť. Tyto typy selhání mohou vést k poškození paměti jádra, soubojům, pádům systému nebo dokonce ke spuštění libovolného kódu v nejprivilegovanějším kontextu systému.
S příchodem modernějších API (GDI+, Direct2D, DirectWrite a dokonce i DirectComposition) společnost Microsoft omezila používání GDI v nových aplikacích, ale ekosystém staršího softwaru , který se na něm stále spoléhá, je obrovský. Toto dědictví dělá z GDI velmi atraktivní útočnou plochu pro výzkumníky i útočníky.

Historické zranitelnosti: od zveřejnění informací do nultého dne
Mezi nejstarší zranitelnosti spojené s GDI patří zdokumentovaná zranitelnost umožňující únik informací, CVE-2017-11816 . V tomto případě problém spočíval ve způsobu, jakým GDI zpracovávalo určité objekty v paměti, což umožňovalo uživateli se zlými úmysly načíst z cílového systému data, která by neměla být přístupná. Nejednalo se o spuštění kódu, ale spíše o vážné narušení důvěrnosti.
Tato zranitelnost postihla různé edice systému Windows a donutila společnost Microsoft vydat specifickou bezpečnostní aktualizaci. Chyba spočívala ve vnitřním zpracování grafických struktur, kdy subsystém nedokázal správně vymazat nebo ověřit určité oblasti paměti před jejich opětovným použitím, což umožnilo číst zbytkové informace patřící jiným procesům nebo samotnému operačnímu systému.
Oprava se objevila v bezpečnostní aktualizaci, která byla součástí pravidelného cyklu „Patch Tuesday“ v říjnu 2017. Spolu s popisem zranitelnosti poskytl Microsoft rozsáhlé tabulky s uvedením dotčených souborů a jejich novějších verzí: například různé sestavení souboru gdi32.dll pro platformy x86, x64 a IA-64 s daty, jako je 8. září 2017, a verzemi souborů, jako je 6.0.6002.24200. Tato podrobnost umožnila správcům ověřit, zda byla oprava nainstalována správně.
Později výzkumníci z Project Zero (Google) odhalili další zranitelnost typu zero-day související s gdi32.dll v uživatelském režimu . Tentokrát chyba ovlivnila zpracování DIB (Device Independent Bitmaps) vložených do registrů EMF (Enhanced Metafile). Nesprávná manipulace s těmito bitmapami v metasouborech umožnila extrakci informací z paměti procesu, což mělo přímý dopad na soukromí dat.
Tuto zranitelnost typu zero-day bylo možné reprodukovat lokálně prostřednictvím aplikace Internet Explorer a vzdáleně prostřednictvím Office Online otevřením dokumentu DOCX se speciálně vytvořeným souborem EMF. Seznam postižených verzí byl rozsáhlý, od Windows Vista Service Pack 2 po Windows 10 a včetně verzí Windows Server, jako jsou 2012 R2 a 2016. Problém se stal veřejně dostupným po uplynutí standardní 90denní lhůty Project Zero bez vydání opravy, čímž se zranitelnost oficiálně stala praktickým zero-day exploitem.
Mezitím se společnost Microsoft potýkala s významným incidentem: interní problém jí zabránil vydat plánovaný balíček oprav Patch Tuesday o měsíc, což opravy odložilo až do následujícího cyklu. Tyto typy zpoždění prodlužují dobu odhalení zranitelností, které jsou již výzkumné komunitě známy.

Nedávné kritické chyby: BSOD, vzdálené spuštění a velké dávky oprav
Postupem času se zranitelnosti v GDI vyvinuly do závažnějších scénářů. Jedním obzvláště pozoruhodným příkladem je zranitelnost typu denial-of-service identifikovaná jako CVE-2023-36884 , která postihuje verze Windows 10 (počínaje verzí 1607), Windows 11 a Windows Server 2016, 2019 a 2022. Ačkoli byl identifikátor v závislosti na bulletinu spojen s různými komponentami, technická analýza popisuje kritickou chybu v grafickém subsystému, která je schopna způsobit modré obrazovky smrti (BSOD) při zpracování chybně formátovaných grafických objektů.
Problém se týká funkce NtGdiDdDeleteDeviceBitmap v souboru win32k.sys . Při zpracování neplatného grafického bitmapu nebo zařízení zranitelný kód neprovede důkladnou kontrolu hranic vyrovnávací paměti při kopírování dat ze struktury zařízení (např. typu DD_DEVICE_OEM). Toto opomenutí umožňuje přepsání sousední paměti v jádře, což generuje výjimku přístupu k paměti (PAGE_FAULT_IN_NONPAGED_AREA, kód 0x00000050) a spustí modrou obrazovku smrti (BSOD) s kódy jako IRQL_NOT_LESS_OR_EQUAL nebo podobnými.
Typický proces zneužití začíná grafickými daty vloženými do síťových protokolů, jako je SMB nebo RDP, nebo dokonce prostřednictvím WebDAV či tiskových služeb. Poškozený soubor EMF se šíří jako součást vzdáleného dokumentu nebo streamu a když se aplikace, jako je Office, Edge, prohlížeč obrázků nebo dokonce samotný Průzkumník souborů, pokusí interpretovat jeho obsah, je k jeho zpracování vyvolán subsystém GDI. Analyzační rutina nedokáže správně ověřit určité registry objektů, což umožňuje dereferencování ukazatele mimo rozsah a destabilizuje paměť jádra (zejména nestránkovaný fond).
Ačkoli se dopad uváděný v oficiálních bulletinech zaměřuje na útoky typu „denial of service“ (DoS) , různí výzkumníci poukázali na to, že s pokročilejšími technikami zneužití poškození paměti (například útokem na haldu) by mohlo být možné vytvářet řetězce vedoucí ke spuštění kódu v režimu jádra, podobně jako to bylo pozorováno u zranitelností v jiných komponentách, jako je MSHTML (případ CVE-2021-40444).
Kritičnost GDI se odrazila i ve velkých vlnách záplat. V červenci 2020 společnost Microsoft vydala rozsáhlou aktualizaci, která opravila 123 zranitelností ve svých produktech, z nichž 18 bylo klasifikováno jako kritické. Mezi poslední z nich patřila i CVE-2020-1435, která přímo souvisela s tím, jak GDI manipuluje s objekty v paměti. Pokud by se útočníkovi podařilo obelstít oběť a přimět ji, aby otevřela speciálně vytvořený obsah (například návštěvou škodlivé webové stránky), mohl by spustit vzdálené spuštění kódu se stejnými oprávněními jako má uživatel.
Ve stejné várce se objevila i chyba CVE-2020-1436, spojená se zpracováním speciálně vytvořených fontů, a obzvláště známá chyba CVE-2020-1350 , což je kritická zranitelnost v DNS serveru systému Windows s červovitými schopnostmi, která dokáže šířit malware bez zásahu uživatele. Ačkoli ta druhá neovlivňuje GDI, ilustruje kontext: jediný balíček záplat obsahoval zranitelnosti v síťových službách, hypervizorech (několik chyb vzdáleného spouštění v Hyper-V) a samotném grafickém rozhraní.
CVE-2020-1435 se konkrétně týká způsobu, jakým GDI zpracovává grafické objekty v paměti . Úspěšné zneužití by útočníkovi umožnilo instalovat programy, prohlížet, upravovat nebo mazat data a vytvářet uživatelské účty s plnými oprávněními. Typický vektor útoku zahrnuje klamání uživatele k návštěvě škodlivé webové stránky nebo otevření souboru obsahujícího grafické zdroje určené ke zneužití této zranitelnosti. To odpovídá historickému vzorci GDI: jakýkoli vizuální obsah, který se spoléhá na jeho renderovací engine, může být zranitelností, pokud systém není aktuální.
V témže červencovém cyklu oprav z roku 2020 bylo oznámeno také několik kritických zranitelností v Hyper-V (CVE-2020-1041, -1040, -1032, -1036, -1042 a -1043) , které demonstrují, jak se různé komponenty Windows (síť, virtualizace, grafika) mohou stát články ve stejném útočném řetězci, pokud organizace neudržuje důsledný program správy oprav.
Skutečný dopad na systémy Windows, dotčené verze a vektory
Škála verzí postižených zranitelnostmi GDI je široká. V případech nultého dne zdokumentovaných organizací Project Zero postihla zranitelnost v souboru gdi32.dll systémy Windows Vista SP2, Windows 7, Windows 8.1, Windows 10 a několik edic Windows Serveru (2012 R2, 2016 atd.). To znamená, že obrovské množství počítačů, domácích i firemních, by se mohlo stát obětí úniku paměti pouhým otevřením dokumentu, procházením webu v aplikaci Internet Explorer nebo používáním Office Online.
V nejnovějším scénáři zaměřeném na BSOD společnost Microsoft potvrdila, že analyzovaná zranitelnost postihuje Windows 10 od verze 1607 a novější, Windows 11 a Windows Server 2016/2019/2022 , včetně edic Enterprise, Education a LTSC. Verze, které již nejsou rozšířeně podporovány, jako například Windows 7 nebo 8.1, nejsou oficiální záplatou pokryty, ale to neznamená, že se u nich nevyskytují problémy s GDI; znamená to pouze, že nedostávají pravidelné opravy.
Na provozní úrovni lze dopad shrnout do tří kategorií: únik informací (čtení paměti, která by měla být soukromá), odmítnutí služby (opakující se BSOD) a vzdálené spuštění kódu . V podnikových prostředích může BSOD na serveru s kritickými rolemi (například sdílený tiskový server nebo hostitel Hyper-V) spustit řetězovou reakci selhání: přerušení tiskových služeb, neočekávané vypnutí virtuálních počítačů, ztráta dat ve vzdálených relacích a dlouhé doby obnovy.
Z pohledu sítě lze GDI zneužít prostřednictvím protokolů, jako je SMB (port 445), RDP nebo WebDAV, pokud nějaká služba automaticky zpracovává přijaté obrázky nebo metasoubory EMF/WMF. Lokálně stačí, aby uživatel otevřel škodlivý soubor v aplikacích, které používají GDI, jako je Paint, WordPad, starší prohlížeče obrázků nebo dokonce procesy zapojené do náhledu ikon a miniatur v Průzkumníku souborů . Nejběžnější útoky kombinují phishingový e-mail s dokumentem DOCX nebo PDF obsahujícím poškozený soubor EMF.
V regulovaných organizacích (finance, zdravotnictví, veřejná správa) mohou mít incidenty způsobené neopravenými zranitelnostmi právní a regulační důsledky. Modrá obrazovka smrti (BSOD), která způsobí pád kritického systému, může být považována za bezpečnostní událost ohrožující kontinuitu služeb, což může následně spustit audity a sankce související s rámci, jako je GDPR nebo HIPAA. Různé zprávy o hrozbách navíc připisují zneužívání chyb v grafických subsystémech skupinám APT cílícím na vysoce hodnotné cíle v Asii a Evropě.
Je třeba si uvědomit, že podle běžných dat z oboru (například těch, která se odrážejí ve výročních zprávách o únicích dat) zůstává značné procento zařízení s Windows bez záplat déle než 90 dní po vydání kritických aktualizací. To útočníkům poskytuje širokou škálu příležitostí k automatizaci exploitů a jejich integraci do frameworků, jako je Metasploit nebo Cobalt Strike, které jsou schopny prohledávat celé síťové rozsahy a hledat zranitelné hostitele.
Jak společnost Microsoft distribuuje opravy a který soubor se upravuje
Když je v GDI objevena zranitelnost, společnost Microsoft vydá aktualizaci zabezpečení, obvykle v měsíčních kumulativních balíčkech. Tyto aktualizace jsou obvykle doručovány prostřednictvím služby Windows Update , katalogu Microsoft Update nebo nástrojů pro správu, jako je Windows Server Update Services (WSUS) a Microsoft Endpoint Configuration Manager (MECM). V případě zranitelnosti CVE-2017-11816 lze odpovídající aktualizaci (například KB4042121 pro Windows Server 2008) získat buď z Windows Update, nebo z katalogu jako samostatný soubor .msu.
Jednou zvláštností, kterou Microsoft zdůrazňuje, je, že pokud jsou po instalaci aktualizace nainstalovány jazykové balíčky , je nutné znovu nainstalovat bezpečnostní záplatu. Proto se vždy doporučuje nejprve nasadit potřebné jazyky a poté aktualizace. Tento detail, který se může zdát nepodstatný, vedl k více než jednomu případu, kdy byl systém mylně považován za záplatovaný, i když ve skutečnosti určité binární soubory GDI neobsahovaly opravenou verzi.
V dokumentaci k těmto bulletinům společnost Microsoft poskytuje rozsáhlé tabulky s informacemi o souborech : název (například gdi32.dll), konkrétní verze, velikost, datum, čas a platforma (x86, x64, IA-64). Tyto tabulky umožňují správcům a auditorům forenzně ověřit, zda je nainstalován správný binární soubor. Podobný postup se používá pro balíčky .msu a .exe různých edic systému Windows a Office, kde jsou uvedeny hash hodnoty SHA1 a SHA256 každého souboru, aby týmy mohly ověřit jejich integritu.
Seznam souborů a hashů je ohromující: od Windows6.0-KB2834886-x86.msu a jeho variant x64 a ia64, přes Windows6.1-KB2835364-x64.msu, Windows8-RT-KB2835361-x86.msu, desítky instalačních programů pro Windows Server 2003 a Windows XP ve všech možných jazycích (CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR, PTB, PTG, RUS atd.), až po záplaty pro komponenty Office a Lync, jako jsou AttendeeAdmin.msp, ogl2007-kb2687309-fullfile-x86-glb.exe nebo lyncloc2013-kb2817465-fullfile-x64-glb.exe. Každý z nich obsahuje vlastní hash SHA1 a SHA256 pro usnadnění ověřování.
Ve všech těchto případech je konečný cíl stejný: aktualizovat soubor gdi32.dll (nebo související binární soubory grafického subsystému) na zabezpečenou verzi. Například na platformách, jako je Windows Server 2008, je soubor gdi32.dll uveden jako verze 6.0.6002.24200 s velikostí, která se liší v závislosti na architektuře (přibližně 299 520 bajtů na x86, 391 680 bajtů na x64 a 955 392 bajtů na IA-64). Tyto hodnoty spolu s datem sestavení jsou základním referenčním bodem pro určení, zda je v systému použita oprava.
Oficiální dokumentace také odkazuje na články znalostní báze s podrobnostmi o implementaci a nasazení těchto aktualizací a také na odkazy na zdroje podpory: stránky nápovědy k Windows Update, bezpečnostní portály pro IT profesionály (například TechNet Security), mezinárodní weby podpory a specifické služby pro boj s malwarem pod značkou Microsoft Secure.
Osvědčené postupy pro zmírňování dopadů, monitorování a reakci
Kromě instalace záplat, jakmile jsou k dispozici, existuje řada zmírňujících opatření a opatření pro hloubkovou ochranu , která pomáhají snižovat riziko spojené se selháním GDI, zejména v podnikových prostředích se stovkami nebo tisíci počítačů.
Nejprve je vhodné omezit oblast útoku zakázáním nebo omezením automatického zpracování určitých grafických formátů v aplikacích a prohlížečích. Například v prohlížeči Microsoft Edge můžete nakonfigurovat skupinové zásady tak, aby blokovaly nebo řídily stahování a zpracování metasouborů EMF/WMF pomocí klíčů registru v adresáři HKLM\SOFTWARE\Policies\Microsoft\Edge souvisejících s omezeními stahování. V jiných aplikacích můžete použít možnosti konfigurace k zabránění automatického náhledu dokumentů z nedůvěryhodných umístění a k vyřešení nereagujícího Průzkumníka souborů použít průvodce řešením problémů.
Další zásadní vrstvou je segmentace sítě podle principů Zero Trust . To zahrnuje omezení provozu SMB, RDP a dalších potenciálně zneužitelných protokolů pouze na nezbytně nutné podsítě, implementaci firewallů nové generace s hloubkovou kontrolou paketů a vynucování pravidel založených na identitě a kontextu. Omezením toho, která zařízení mohou komunikovat s kterými službami, se drasticky snižuje dopad pokusu o šíření zneužití.
Na straně detekce pomáhá implementace řešení Endpoint Detection and Response (EDR), jako je Microsoft Defender for Endpoint, monitorovat anomální chování související s událostmi win32k.sys, gdi32.dll a BSOD . Konfigurace upozornění na nárůst chyb na modré obrazovce (například počínaje ID události 1001 v Prohlížeči událostí) a neobvyklý přístup ke grafickému subsystému může pomoci identifikovat pokusy o zneužití nebo nestability způsobené malwarem.
Pro správu oprav se důrazně doporučuje automatizovat nasazení pomocí Windows Update pro firmy, WSUS nebo MECM, ale vždy je nutné zahrnout testovací fázi v testovacích prostředích , aby se před spuštěním odhalily potenciální regrese. V infrastrukturách s ochranou proti krádeži je vhodné auditovat všechny příchozí soubory pomocí nástrojů, jako jsou pravidla YARA, která jsou navržena k rozpoznávání podezřelých vzorců v EMF/WMF a dalších grafických formátech.
V pokročilejších scénářích některé organizace zvažují migraci svých interních aplikací na modernější API, jako je Direct2D, DirectWrite nebo multiplatformní grafické enginy (Cairo, Skia), které nabízejí lepší izolaci a menší závislost na starším GDI. Ve střednědobém horizontu by Microsoft mohl v budoucích verzích Windows zamítnout významné části GDI, aby se snížila plocha pro útok, ačkoli kompatibilita se starším softwarem bude i nadále problémem.
Z forenzního a reverzního inženýrství umožňují nástroje jako WinDbg, KD a Volatility analýzu výpisů paměti po BSOD (modrá obrazovka smrti) a pozorování poškození paměti označené „Gdi“ v paměťovém fondu jádra. Exploity publikované pro výzkumné účely demonstrují, jak soubor EMF (Engine Memory File) s určitými chybně formátovanými registry (např. v EMR_HEADER) může vyvolat souboj a spustit pád systému. Tato znalost je klíčová pro týmy pro reakci na incidenty, aby mohly rekonstruovat, co se stalo při útoku v reálném světě.
V případě incidentu se doporučuje dodržovat akční rámce, jako jsou NIST (Identify, Contain, Eradicate, Recover). To zahrnuje izolaci postižených systémů , uchování důkazů (výpisy paměti, protokoly, vzorky podezřelých souborů), nasazení čekajících oprav, skenování systémů pomocí aktualizovaných antimalwarových nástrojů a obnovu z ověřených záloh nebo návrat k předchozímu stavu . Dále je vhodné pravidelně kontrolovat získané poznatky s cílem zlepšit procesy oprav a zabezpečení systému.
Celá tato historie selhání a záplat kolem Windows GDI ukazuje, jak křehké mohou být starší komponenty, pokud neexistuje robustní vícevrstvá strategie zabezpečení a aktualizací. Pochopení toho, jak jsou tyto zranitelnosti zneužívány, které verze jsou ohroženy a jaké další kontroly lze použít, umožňuje administrátorům a odborníkům na kybernetickou bezpečnost posílit své systémy a zabránit pádu nebo úplnému narušení infrastruktury Windows v důsledku jednoduchého obrazu nebo speciálně vytvořeného metasouboru .

