- Windows GDI akumulira ranjivosti u otkrivanju informacija, uskraćivanju usluge i udaljenom izvršavanju koda koje utječu na više verzija sustava Windows i Windows Server.
- Mnoge od ovih ranjivosti iskorištavaju se putem EMF/WMF datoteka ili oštećenog grafičkog sadržaja koji obrađuju gdi32.dll i win32k.sys, što može uzrokovati BSOD-ove ili curenje memorije.
- Microsoft objavljuje zakrpe u kumulativnim paketima s promjenama binarnih datoteka poput gdi32.dll i pruža hashove i informacije o datotekama kako bi provjerio uspješnu instalaciju.
- Kombinacija agilnog krpanja, segmentacije mreže, ograničavanja opasnih grafičkih formata i praćenja pomoću EDR-a ključna je za smanjenje rizika povezanog s GDI-jem.

Grafičko korisničko sučelje sustava Windows (GDI) desetljećima prikazuje prozore, tekst, ikone i slike, a da većina korisnika toga nije ni svjesna. Međutim, ova temeljna komponenta sustava također je izvor nekoliko značajnih sigurnosnih ranjivosti, nekih zero-day ranjivosti i drugih koje su zakrpane u masovnim Microsoftovim ažuriranjima. Kada GDI zakaže, ne ruši se samo aplikacija: u nekim slučajevima to može dovesti do curenja podataka, udaljenog izvršavanja koda ili plavih ekrana smrti (BSOD) koji ruše cijele poslužitelje.
U sljedećim retcima detaljno je opisano kako GDI funkcionira, koje su specifične ranjivosti dokumentirane posljednjih godina (kao što su CVE-2017-11816, CVE-2020-1435 ili CVE-2023-36884 ), kako se iskorištavaju , kakav stvarni utjecaj imaju na kućna i poslovna okruženja te koje praktične mjere administratori i stručnjaci za kibernetičku sigurnost mogu primijeniti kako bi zaštitili svoje Windows sustave, od starijih verzija poput Windows Viste SP2 do modernih izdanja sustava Windows 11 i Windows Server.
Što je Windows GDI i zašto je toliko osjetljiv u smislu sigurnosti?
Graphics Device Interface (GDI) je stari Windows API odgovoran za upravljanje svime što je povezano s renderiranjem grafike: od crtanja linija i pravokutnika do prikaza fontova, bitmapa i slika na zaslonu ili u pisačima. Aplikacije pozivaju funkcije iz biblioteka poput gdi32.dll za stvaranje konteksta uređaja (HDC-ova), kistova, olovaka, regija i drugih grafičkih objekata, kojima se upravlja "ispod haube" pomoću podatkovnih struktura kontroliranih od strane jezgre.
GDI arhitektura je podijeljena između korisničkog načina rada i načina rada jezgre . U korisničkom načinu rada, gdi32.dll DLL i druge povezane biblioteke primaju zahtjeve za crtanje od aplikacija. Ti se pozivi prosljeđuju Windows podsustavu za upravljanje prozorima, koji se izvodi u načinu rada jezgre putem win32k.sys. Ovaj dio jezgre zapravo manipulira memorijom sustava, provjerava grafičke objekte i šalje ih hardveru. Svaka nedovoljna provjera pokazivača, veličina ili indeksa u ovom trenutku otvara vrata katastrofalnim pogreškama.
Za praćenje i ponovnu upotrebu resursa, sustav održava GDI tablice objekata . Svaki proces ima svoju tablicu, ali postoji i globalna tablica za dijeljene objekte, što povećava mogućnost oštećenja ako dođe do prelijevanja međuspremnika, događaja dvostrukog oslobađanja ili nevažeće reference memorije. Ove vrste kvarova mogu dovesti do oštećenja memorije jezgre, uvjeta utrke, rušenja sustava ili čak proizvoljnog izvršavanja koda u najpovlaštenijem kontekstu sustava.
Dolaskom modernijih API-ja (GDI+, Direct2D, DirectWrite, pa čak i DirectComposition), Microsoft smanjuje upotrebu GDI-ja u novim aplikacijama, ali ekosustav starog softvera koji se još uvijek oslanja na njega je ogroman. Ovo nasljeđe čini GDI vrlo atraktivnom površinom za napad za istraživače i napadače.

Povijesne ranjivosti: od otkrivanja informacija do nultog dana
Među najstarijim ranjivostima povezanim s GDI-jem je dokumentirana ranjivost otkrivanja informacija, CVE-2017-11816 . U ovom slučaju, problem je bio u načinu na koji je GDI rukovao određenim objektima u memoriji, omogućujući zlonamjernom korisniku da dohvati podatke iz ciljnog sustava koji ne bi trebali biti dostupni. Nije se radilo o izvršavanju koda, već o ozbiljnom kršenju povjerljivosti.
Ova ranjivost utjecala je na različita izdanja sustava Windows i prisilila Microsoft da objavi određeno sigurnosno ažuriranje. Nedostatak je bio u internom rukovanju grafičkim strukturama, gdje podsustav nije uspio pravilno očistiti ili provjeriti određena područja memorije prije ponovne upotrebe, što je omogućilo čitanje preostalih informacija koje pripadaju drugim procesima ili samom operativnom sustavu.
Ispravak je stigao u sigurnosnom ažuriranju uključenom u redovni ciklus "Patch Tuesday" u listopadu 2017. Uz opis ranjivosti, Microsoft je pružio opsežne tablice s popisom pogođenih datoteka i njihovih novijih verzija: na primjer, različite verzije gdi32.dll za platforme x86, x64 i IA-64, s datumima kao što je 8. rujna 2017. i verzijama datoteka poput 6.0.6002.24200. Ovaj detalj omogućio je administratorima da potvrde da je zakrpa ispravno primijenjena.
Kasnije su istraživači iz Project Zero (Google) otkrili još jednu zero-day ranjivost povezanu s gdi32.dll u korisničkom načinu rada . Ovaj put, propust je utjecao na rukovanje DIB-ovima (Device Independent Bitmaps) ugrađenim u EMF (Enhanced Metafile) registre. Nepravilna manipulacija tim bitmapama unutar metadatoteka omogućila je izdvajanje informacija iz memorije procesa, s izravnim utjecajem na privatnost podataka.
Ova zero-day ranjivost mogla se reproducirati lokalno putem Internet Explorera i daljinski putem Office Onlinea otvaranjem DOCX dokumenta sa posebno izrađenim EMF-om. Popis pogođenih verzija bio je opsežan, od Windows Viste Service Pack 2 do Windowsa 10 , uključujući verzije Windows Servera kao što su 2012 R2 i 2016. Problem je postao javan nakon što je isteklo standardno 90-dnevno razdoblje Project Zero bez objavljivanja zakrpe, čime je ranjivost službeno postala praktična zero-day ranjivost.
U međuvremenu, Microsoft je doživio značajan incident: interni problem spriječio ih je da mjesec dana objave planirani paket zakrpa za Patch Tuesday, odgađajući ispravke do sljedećeg ciklusa. Ove vrste kašnjenja povećavaju vrijeme izloženosti ranjivosti koje su već poznate istraživačkoj zajednici.

Nedavne kritične greške: BSOD, udaljeno izvršavanje i velike serije zakrpa
Tijekom vremena, ranjivosti u GDI-ju su se razvile u ozbiljnije scenarije. Jedan posebno upečatljiv primjer je ranjivost uskraćivanja usluge identificirana kao CVE-2023-36884 , koja utječe na verzije sustava Windows 10 (počevši od 1607), Windows 11 te Windows Server 2016, 2019 i 2022. Iako je identifikator povezan s različitim komponentama ovisno o biltenu, tehnička analiza opisuje kritičnu manu u grafičkom podsustavu koja može uzrokovati plave ekrane smrti (BSOD) prilikom obrade oštećenih grafičkih objekata.
Problem se odnosi na funkciju NtGdiDdDeleteDeviceBitmap u win32k.sys . Prilikom rukovanja nevažećom grafičkom bitmapom ili uređajem, ranjivi kod ne uspijeva izvršiti temeljitu provjeru granica međuspremnika prilikom kopiranja podataka iz strukture uređaja (npr. tipa DD_DEVICE_OEM). Ovo izostavljanje omogućuje prepisivanje susjedne memorije u kernelu, generirajući iznimku pristupa memoriji (PAGE_FAULT_IN_NONPAGED_AREA, kod 0x00000050) i pokrećući plavi ekran smrti (BSOD) s kodovima kao što su IRQL_NOT_LESS_OR_EQUAL ili slično.
Tipičan tijek iskorištavanja započinje grafičkim podacima ugrađenim u mrežne protokole kao što su SMB ili RDP, ili čak putem WebDAV-a ili usluga ispisa. Oštećena EMF datoteka putuje kao dio udaljenog dokumenta ili streama, a kada aplikacija poput Officea, Edgea, preglednika slika ili čak samog File Explorera pokuša interpretirati njezin sadržaj, poziva se GDI podsustav za njezinu obradu. Rutina parsiranja ne uspijeva ispravno validirati određene registre objekata, što omogućuje dereferenciranje pokazivača izvan raspona i destabilizaciju memorije kernela (posebno Non-Paged Pool).
Iako se utjecaj prijavljen u službenim biltenima usredotočuje na uskraćivanje usluge (DoS) , razni istraživači istaknuli su da bi, s naprednijim tehnikama iskorištavanja oštećenja memorije (na primjer, napadom na hrpu), moglo biti moguće izgraditi lance koji vode do izvršavanja koda u kernel modu, slično onome što je viđeno s ranjivostima u drugim komponentama poput MSHTML-a (slučaj CVE-2021-40444).
Kritičnost GDI-ja također se odrazila u velikim valovima zakrpa. U srpnju 2020. Microsoft je objavio veliko ažuriranje koje je ispravilo 123 ranjivosti u njegovim proizvodima, od kojih je 18 klasificirano kao kritično. Među potonjim je bio i CVE-2020-1435, izravno povezan s načinom na koji GDI manipulira objektima u memoriji. Ako bi napadač uspio prevariti žrtvu da otvori posebno izrađen sadržaj (na primjer, posjetom zlonamjernoj web stranici), mogao bi pokrenuti udaljeno izvršavanje koda s istim privilegijama kao i korisnik.
U istoj toj seriji pojavio se CVE-2020-1436, povezan s rukovanjem posebno izrađenim fontovima, te posebno poznati CVE-2020-1350 , kritična ranjivost u Windows DNS poslužitelju s mogućnostima sličnim crvima, sposobna širiti zlonamjerni softver bez interakcije korisnika. Iako potonji ne utječe na GDI, ilustrira kontekst: jedan paket zakrpa sadržavao je ranjivosti u mrežnim uslugama, hipervizorima (nekoliko nedostataka udaljenog izvršavanja u Hyper-V-u) i samom grafičkom sučelju.
CVE-2020-1435 se, konkretno, odnosi na način na koji GDI rukuje grafičkim objektima u memoriji . Uspješno iskorištavanje ranjivosti omogućilo bi napadaču instaliranje programa, pregled, izmjenu ili brisanje podataka i stvaranje korisničkih računa s punim privilegijama. Tipičan vektor napada uključuje prevaru korisnika da posjeti zlonamjernu web stranicu ili otvori datoteku koja sadrži grafičke resurse dizajnirane za iskorištavanje ranjivosti. To se uklapa u povijesni obrazac GDI-ja: svaki vizualni sadržaj koji se oslanja na njegov mehanizam za renderiranje može biti ranjivost ako sustav nije ažuriran.
U istom ciklusu zakrpa iz srpnja 2020., objavljeno je i nekoliko kritičnih ranjivosti u Hyper-V-u (CVE-2020-1041, -1040, -1032, -1036, -1042 i -1043) , pokazujući kako različite Windows komponente (mreža, virtualizacija, grafika) mogu postati karike u istom lancu napada ako organizacija ne održava rigorozan program upravljanja zakrpama.
Stvarni utjecaj na Windows sustave, pogođene verzije i vektore
Raspon verzija pogođenih GDI ranjivostima je širok. U zero-day slučajevima koje je dokumentirao Project Zero, ranjivost u gdi32.dll utjecala je na Windows Vista SP2, Windows 7, Windows 8.1, Windows 10 i nekoliko izdanja Windows Servera (2012 R2, 2016, itd.). To znači da bi velik broj računala, i kućnih i poslovnih, mogao postati žrtvom curenja memorije jednostavnim otvaranjem dokumenta, pregledavanjem pomoću Internet Explorera ili korištenjem Office Onlinea.
U najnovijem scenariju usmjerenom na BSOD, Microsoft je potvrdio da analizirana ranjivost utječe na Windows 10 od verzije 1607 nadalje, Windows 11 i Windows Server 2016/2019/2022 , uključujući izdanja Enterprise, Education i LTSC. Verzije koje više nisu u proširenoj podršci, poput Windowsa 7 ili 8.1, nisu pokrivene službenom zakrpom, ali to ne znači da nemaju problema s GDI-jem; to jednostavno znači da ne primaju redovite ispravke.
Na operativnoj razini, utjecaj se može sažeti u tri kategorije: otkrivanje informacija (čitanje memorije koja bi trebala biti privatna), uskraćivanje usluge (ponavljajući BSOD-ovi) i udaljeno izvršavanje koda . U poslovnim okruženjima, BSOD na poslužitelju s kritičnim ulogama (na primjer, dijeljeni poslužitelj ispisa ili Hyper-V host) može pokrenuti lančanu reakciju kvarova: prekid usluga ispisa, neočekivano gašenje virtualnih strojeva, gubitak podataka u udaljenim sesijama i dugo vrijeme oporavka.
Iz mrežne perspektive, GDI se može iskoristiti putem protokola kao što su SMB (port 445), RDP ili WebDAV ako bilo koja usluga automatski obrađuje primljene EMF/WMF slike ili metadatoteke. Lokalno, dovoljno je samo da korisnik otvori zlonamjernu datoteku u aplikacijama koje koriste GDI, kao što su Paint, WordPad, stariji preglednici slika ili čak procesi uključeni u pregled ikona i sličica u File Exploreru . Najčešći lanci napada kombiniraju phishing e-poštu s DOCX ili PDF dokumentom koji sadrži oštećenu EMF datoteku.
U reguliranim organizacijama (financije, zdravstvo, javna uprava), incidenti uzrokovani nezakrpanim ranjivostima mogu imati pravne i regulatorne posljedice. Plavi ekran smrti (BSOD) koji ruši kritični sustav može se smatrati sigurnosnim događajem koji ugrožava kontinuitet usluge, što zauzvrat može pokrenuti revizije i kazne povezane s okvirima kao što su GDPR ili HIPAA. Nadalje, razna izvješća o obavještajnim podacima o prijetnjama pripisala su iskorištavanje nedostataka u grafičkim podsustavima APT skupinama koje ciljaju visokovrijedne mete u Aziji i Europi.
Vrijedi zapamtiti da, prema uobičajenim podacima iz industrije (na primjer, onima koji se odražavaju u godišnjim izvješćima o kršenju podataka), značajan postotak Windows uređaja ostaje neinstaliran dulje od 90 dana nakon objavljivanja kritičnih ažuriranja. To napadačima ostavlja širok prozor mogućnosti za automatizaciju iskorištavanja i njihovu integraciju u okvire poput Metasploita ili Cobalt Strikea, koji su sposobni skenirati cijele mrežne raspone u potrazi za ranjivim hostovima.
Kako Microsoft distribuira popravke i koja se datoteka mijenja
Kada se otkrije ranjivost u GDI-ju, Microsoft objavljuje sigurnosno ažuriranje, obično u paketu mjesečnih zbirnih ažuriranja. Ta se ažuriranja obično isporučuju putem Windows Updatea , kataloga Microsoft Update ili alata za upravljanje kao što su Windows Server Update Services (WSUS) i Microsoft Endpoint Configuration Manager (MECM). U slučaju ranjivosti CVE-2017-11816, odgovarajuće ažuriranje (na primjer, KB4042121 za Windows Server 2008) može se dobiti putem Windows Updatea ili kataloga, kao samostalna .msu datoteka.
Jedna osobitost koju Microsoft naglašava jest da ako se jezični paketi instaliraju nakon primjene ažuriranja , sigurnosnu zakrpu treba ponovno instalirati. Stoga se uvijek preporučuje prvo instalirati potrebne jezike, a zatim ažuriranja. Ovaj detalj, koji se može činiti beznačajnim, doveo je do više od jednog slučaja u kojem se pogrešno vjerovalo da je sustav zakrpan, iako u stvarnosti određene GDI binarne datoteke nisu sadržavale ispravljenu verziju.
U dokumentaciji vezanoj uz ove biltene, Microsoft pruža opsežne tablice s informacijama o datotekama : naziv (na primjer, gdi32.dll), specifična verzija, veličina, datum, vrijeme i platforma (x86, x64, IA-64). Ove tablice omogućuju administratorima i revizorima da forenzički provjere je li instalirana ispravna binarna datoteka. Sličan postupak koristi se za .msu i .exe pakete različitih izdanja sustava Windows i Office, gdje su navedeni SHA1 i SHA256 hash-ovi svake datoteke kako bi timovi mogli provjeriti njihov integritet.
Popis datoteka i hashova je ogroman: od Windows6.0-KB2834886-x86.msu i njegovih x64 i ia64 varijanti, preko Windows6.1-KB2835364-x64.msu, Windows8-RT-KB2835361-x86.msu, desetaka instalacijskih programa za Windows Server 2003 i Windows XP na svim vrstama jezika (CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR, PTB, PTG, RUS, itd.), do zakrpa za komponente sustava Office i Lync kao što su AttendeeAdmin.msp, ogl2007-kb2687309-fullfile-x86-glb.exe ili lyncloc2013-kb2817465-fullfile-x64-glb.exe. Svaki od njih uključuje vlastite SHA1 i SHA256 hashove radi lakše provjere.
U svim tim slučajevima, krajnji cilj je isti: ažurirati datoteku gdi32.dll (ili povezane binarne datoteke grafičkog podsustava) na sigurnu verziju. Na platformama poput Windows Servera 2008, na primjer, gdi32.dll je naveden kao verzija 6.0.6002.24200, s veličinama koje variraju ovisno o arhitekturi (oko 299.520 bajtova na x86, 391.680 bajtova na x64 i 955.392 bajtova na IA-64). Ove vrijednosti, zajedno s datumom izrade, osnovna su referenca za određivanje je li na sustavu primijenjena zakrpa.
Službena dokumentacija također upućuje na članke baze znanja s detaljima o implementaciji i postavljanju ovih ažuriranja, kao i poveznice na resurse podrške: stranice pomoći za Windows Update, sigurnosni portali za IT stručnjake (kao što je TechNet Security), međunarodne web-stranice za podršku i specifične usluge za borbu protiv zlonamjernog softvera pod robnom markom Microsoft Secure.
Dobre prakse za ublažavanje, praćenje i odgovor
Osim instaliranja zakrpa čim postanu dostupne, postoji niz mjera ublažavanja i dubinske obrane koje pomažu u smanjenju rizika povezanog s GDI kvarovima, posebno u korporativnim okruženjima sa stotinama ili tisućama računala.
Prvo, preporučljivo je ograničiti površinu napada onemogućavanjem ili ograničavanjem automatske obrade određenih grafičkih formata u aplikacijama i preglednicima. Na primjer, u Microsoft Edgeu možete konfigurirati grupne politike za blokiranje ili kontrolu preuzimanja i rukovanja EMF/WMF metadatotekama pomoću ključeva registra pod HKLM\SOFTWARE\Policies\Microsoft\Edge koji se odnose na ograničenja preuzimanja. U drugim aplikacijama možete koristiti opcije konfiguracije kako biste spriječili automatski pregled dokumenata s nepouzdanih lokacija i primijenili vodiče za rješavanje problema kako biste riješili problem nereagiranja File Explorera.
Drugi bitan sloj je segmentacija mreže prema principima Zero Trust . To uključuje ograničavanje SMB, RDP i drugog potencijalno iskoristivog protokolnog prometa samo na strogo potrebne podmreže, implementaciju vatrozida sljedeće generacije s dubinskom inspekcijom paketa i provođenje pravila temeljenih na identitetu i kontekstu. Ograničavanjem koji uređaji mogu komunicirati s kojim uslugama, utjecaj pokušaja lateralnog širenja iskorištavanja drastično se smanjuje.
Na strani detekcije, implementacija Endpoint Detection and Response (EDR) rješenja, kao što je Microsoft Defender for Endpoint, pomaže u praćenju anomalnog ponašanja povezanog s događajima win32k.sys, gdi32.dll i BSOD . Konfiguriranje upozorenja za porast pogrešaka plavog ekrana (na primjer, počevši od ID-a događaja 1001 u Pregledniku događaja) i neobičan pristup grafičkom podsustavu može pomoći u identificiranju pokušaja iskorištavanja ili nestabilnosti uzrokovanih zlonamjernim softverom.
Za upravljanje zakrpama, toplo se preporučuje automatizacija implementacije pomoću Windows Update for Business, WSUS-a ili MECM-a, ali uvijek uključivanjem faze testiranja u pripremnim okruženjima kako bi se otkrile potencijalne regresije prije objavljivanja. U infrastrukturama s odvojenim sustavima, preporučljivo je revidirati sve dolazne datoteke alatima poput YARA pravila osmišljenih za prepoznavanje sumnjivih obrazaca u EMF/WMF i drugim grafičkim formatima.
U naprednijim scenarijima, neke organizacije razmatraju migraciju svojih internih aplikacija na modernije API-je kao što su Direct2D, DirectWrite ili višeplatformski grafički mehanizmi (Cairo, Skia), koji nude bolju izolaciju i manju ovisnost o naslijeđenom GDI-ju. Srednjoročno gledano, Microsoft bi mogao ukinuti značajne dijelove GDI-ja u budućim verzijama sustava Windows kako bi smanjio površinu za napad, iako će kompatibilnost sa starijim softverom ostati izazov.
Iz forenzičke i reverzne inženjerske perspektive, alati poput WinDbg-a, KD-a i Volatility-ja omogućuju analizu memorijskih izvataka nakon BSOD-a (plavog ekrana smrti) i uočavanje korupcije u memoriji označenoj kao "Gdi" unutar memorijskog bazena kernela. Proof-of-concept exploit-i objavljeni u istraživačke svrhe pokazuju kako EMF (Engine Memory File) s određenim oštećenim registrima (npr. u EMR_HEADER-u) može izazvati uvjet utrke i izazvati rušenje. Ovo znanje je ključno za timove za odgovor na incidente kako bi rekonstruirali što se dogodilo u stvarnom napadu.
U slučaju incidenta, preporučuje se slijediti akcijske okvire kao što su NIST-ovi (Identify, Contain, Eradicate, Recover - Identificiraj, Obuzdaj, Iskorijeni, Oporavi). To uključuje izolaciju pogođenih sustava , očuvanje dokaza (izvještaji memorije, zapisnici, uzorci sumnjivih datoteka), implementaciju zakrpa na čekanju, skeniranje sustava ažuriranim alatima protiv zlonamjernog softvera i vraćanje iz provjerenih sigurnosnih kopija ili vraćanje na prethodnu točku . Nadalje, preporučljivo je povremeno pregledavati naučene lekcije kako bi se poboljšali procesi zakrpa i ojačavanja sustava.
Cijela ova povijest kvarova i zakrpa koje okružuju Windows GDI naglašava koliko krhke mogu biti naslijeđene komponente kada ne postoji robusna višeslojna strategija sigurnosti i ažuriranja; razumijevanje kako se te ranjivosti iskorištavaju, koje su verzije u opasnosti i koje se dodatne kontrole mogu primijeniti omogućuje administratorima i stručnjacima za kibernetičku sigurnost da ojačaju svoje sustave i spriječe rušenje ili potpuno ugrožavanje Windows infrastrukture zbog jednostavne slike ili posebno izrađene metadatoteke .

