Безбедносне мане у Windows GDI-ју: ризици, експлоати и закрпе

Последње ажурирање: КСНУМКС децембра КСНУМКС
  • Windows GDI акумулира рањивости у откривању информација, ускраћивању услуге и даљинском извршавању кода које утичу на више верзија Windows-а и Windows Server-а.
  • Многе од ових рањивости се искоришћавају кроз EMF/WMF датотеке или деформисани графички садржај који обрађују gdi32.dll и win32k.sys, што може изазвати BSOD-ове или цурење меморије.
  • Мајкрософт објављује закрпе у кумулативним пакетима са променама бинарних датотека као што је gdi32.dll и пружа хешеве и информације о датотекама како би се потврдила успешна инсталација.
  • Комбинација агилног крпљења, сегментације мреже, ограничавања опасних графичких формата и праћења помоћу EDR-а је кључна за смањење ризика повезаног са GDI-јем.

Безбедносне мане Windows GDI-ја

La Графички интерфејс Windows-а (GDI) Деценијама је приказивао прозоре, текст, иконе и слике, а да већина корисника тога није ни свесна. Међутим, ова фундаментална системска компонента је такође била извор неколико значајних безбедносних рањивости, неких zero-day експлоита и других закрпљених у масовним Microsoft ажурирањима. Када GDI откаже, не само да руши апликацију: у неким случајевима може довести до цурења података, даљинског извршавања кода или плавих екрана смрти (BSOD) који обарају читаве сервере.

У наредним редовима је детаљно описано како GDI функционише, које су специфичне рањивости документоване последњих година (као што је CVE-2017-11816, CVE-2020-1435 или CVE-2023-36884), како се експлоатишуКакав стварни утицај имају у кућном и корпоративном окружењу и које практичне мере администратори и стручњаци за сајбер безбедност могу да примене како би заштитили своје Windows системе, од старијих верзија као што су... Виндовс Виста СПКСНУМКС до модерних издања система Windows 11 и Windows Server.

Шта је Windows GDI и зашто је толико осетљив у погледу безбедности?

Интерфејс графичких уређаја (GDI) То је застарели Windows API одговоран за управљање свим што је везано за графичко рендеровање: од цртања линија и правоугаоника до приказивања фонтова, битмапа и слика на екрану или на штампачима. Апликације позивају функције из библиотека попут gdi32.dll да би креирале контексте уређаја (HDC), четкице, оловке, регионе и друге графичке објекте, којима се „испод хаубе“ управља помоћу структура података које контролише језгро.

GDI архитектура је подељена између кориснички режим и режим језграУ корисничком режиму, gdi32.dll и друге повезане библиотеке примају захтеве за цртање од апликација. Ови позиви се прослеђују Windows подсистему за рад са прозорима, који ради у режиму језгра преко win32k.sys. Овај део језгра је оно што заправо манипулише системском меморијом, валидира графичке објекте и шаље их хардверу. Било каква недовољна валидација показивача, величина или индекса у овом тренутку отвара врата катастрофалним грешкама.

Да би пратио и поново користио ресурсе, систем одржава GDI табеле објекатаСваки процес има своју табелу меморије, али постоји и глобална табела за дељене објекте, што повећава могућност оштећења ако дође до преливања бафера, догађаја двоструког ослобађања или неважеће референце меморије. Ове врсте кварова могу довести до оштећења меморије језгра, услова трке, пада система или чак извршавања произвољног кода у најпривилегованијем контексту система.

Са појавом модернијих API-ја (GDI+, Direct2D, DirectWrite или чак DirectComposition), Microsoft је смањио употребу GDI-ја у новим апликацијама, али екосистем наслеђеног софтвера Утицај који и даље има је огроман. То наслеђе чини GDI веома атрактивном површином за нападе за истраживаче и нападаче.

рањивости у Windows GDI-ју

Историјске рањивости: од откривања информација до нултог дана

Међу најстаријим недостацима повезаним са GDI-јем, истиче се рањивост у откривање информација документованих као CVE-2017-11816У овом случају, проблем је лежао у начину на који је GDI обрађивао одређене објекте у меморији, омогућавајући злонамерном кориснику да преузме податке са циљног система којима не би требало да буде доступан. Није се радило о извршавању кода, већ о озбиљном кршењу поверљивости.

Ова рањивост је утицала на различита издања оперативног система Windows и приморала је Microsoft да објави одређено безбедносно ажурирање. Грешка је лежала у интерном руковању графичким структурама, где подсистем није успео да правилно обрише или валидира одређене области меморије пре поновне употребе, што је омогућило прочитајте преостале информације припадају другим процесима или самом оперативном систему.

Исправка је стигла у безбедносном ажурирању које је укључено у редовни циклус Октобар 2017. „Уторци закрпе“Уз опис рањивости, Мајкрософт је пружио опсежне табеле са списком погођених датотека и њихових новијих верзија: на пример, различите верзије gdi32.dll за x86, x64 и IA-64 платформе, са датумима као што је 8. септембар 2017. и верзијама датотека као што је 6.0.6002.24200. Ови детаљи су омогућили администраторима да потврде да је закрпа исправно примењена.

Касније су истраживачи из Пројекта Зеро (Гугл) открили још једну рањивост нултог дана повезану са 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 истекао без објављивања закрпе, чиме је грешка званично постала зеро-дај експлоатабилна у пракси.

У међувремену, Мајкрософт је имао значајан инцидент: месец у коме је Никада није објавио пакет закрпа Закрпа заказана за „Уторак закрпа“ је одложена због интерног проблема, што је одложило исправке до следећег циклуса. Овакве врсте кашњења повећавају време излагања рањивости које су већ познате истраживачкој заједници.

Искоришћавање 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, прегледач слика или сам File Explorer Када програм покуша да интерпретира свој садржај, позива се GDI подсистем да га обради. Рутина парсирања не валидира правилно одређене регистре објеката, што омогућава дереференцирање показивача ван опсега и дестабилизацију меморије језгра (посебно нестраниченог фонда).

Иако се утицај пријављен у званичним билтенима фокусира на Ускраћивање услуге (DoS)Разни истраживачи су истакли да би, уз напредније технике за искоришћавање оштећења меморије (на пример, нападом на хип), могло бити могуће изградити ланце који воде до извршавања кода у режиму језгра, слично ономе што је виђено код рањивости у другим компонентама као што је MSHTML (случај CVE-2021-40444).

Критичност GDI-ја се такође одразила у великим таласима закрпа. У јулу 2020. године, Microsoft је објавио велико ажурирање које је исправило 123 рањивости у својим производима, од којих је 18 класификовано као критично. Међу последњима је био и CVE-2020-1435, директно повезан са начином на који GDI манипулише објектима у меморији. Ако би нападач успео да превари жртву да отвори посебно креиран садржај (на пример, приступом злонамерној веб страници), могао би да покрене даљинско извршавање кода са истим привилегијама као и корисник.

У истој тој групи појавио се CVE-2020-1436, повезан са руковањем специјално припремљеним изворима, и оним посебно медијски вођеним. ЦВЕ-КСНУМКС-КСНУМКСКритична грешка у Windows DNS серверу са могућностима сличним црвима, способна да шири злонамерни софтвер без интеракције корисника. Иако ова последња не утиче на GDI, она илуструје контекст: један пакет закрпа садржао је рањивости у мрежним сервисима, хипервизорима (неколико грешака у даљинском извршавању у Hyper-V) и самом графичком интерфејсу.

CVE-2020-1435 се, конкретно, односи на начин на који GDI обрађује графичке објекте у меморијиУспешан експлоатациони напад би омогућио нападачу да инсталира програме, прегледа, мења или брише податке и креира корисничке налоге са пуним привилегијама. Типичан вектор напада укључује превару корисника да посети злонамерни веб сајт или отвори датотеку која садржи графичке ресурсе дизајниране да искористе рањивост. Ово се поклапа са историјским обрасцем GDI-ја: сваки визуелни садржај који се ослања на његов механизам за рендеровање може бити вектор ако систем није ажуриран.

У истом циклусу закрпа из јула 2020. године, објављено је и неколико критичних рањивости у Хипер-В (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-јем; то једноставно значи да не добијају редовне исправке.

На оперативном нивоу, утицај се може сумирати у три категорије: откривање информација (меморија за читање која би требало да буде приватна), онемогућавање услуга (понављајући се BSOD-ови) и даљинско извршавање кодаУ пословним окружењима, BSOD на серверу са критичним улогама (на пример, дељени сервер за штампање или Hyper-V хост) може изазвати ланчану реакцију кварова: прекид услуга штампања, неочекивано гашење виртуелних машина, губитак података у удаљеним сесијама и дуго време опоравка.

Са мрежне перспективе, GDI се може искористити путем протокола као што су SMB (порт 445), RDP или WebDAV Ако било која услуга аутоматски обрађује примљене EMF/WMF слике или метадатотеке, локално је довољно да корисник отвори злонамерну датотеку у апликацијама које користе GDI, као што су Paint, WordPad, старији прегледачи слика или чак процеси који су укључени у преглед икона и сличица у Филе ЕкплорерНајчешћи ланци напада комбинују фишинг имејл са DOCX или PDF документом који интегрише неисправно форматирани EMF.

У регулисаним организацијама (финансије, здравство, јавна управа), инциденти узроковани незакрпљеним рањивостима Ови инциденти могу имати правне и регулаторне последице. Плави екран смрти (BSOD) који руши критични систем може се сматрати безбедносним догађајем који угрожава континуитет услуге, што заузврат може покренути ревизије и казне повезане са оквирима као што су GDPR или HIPAA. Штавише, различити извештаји о обавештајним подацима о претњама приписали су искоришћавање рањивости у графичким подсистемима APT групама које циљају на вредне циљеве у Азији и Европи.

Вреди запамтити да, према уобичајеним подацима из индустрије (на пример, онима који се приказују у годишњим извештајима о кршењу безбедности података), значајан проценат Windows уређаја остаје неинсталиран Више од 90 дана након објављивања критичних ажурирања. Ово оставља широк прозор могућности нападачима да аутоматизују експлоите и интегришу их у оквире попут Metasploit-а или Cobalt Strike-а, који су способни да скенирају читаве мрежне опсеге у потрази за рањивим хостовима.

Како Мајкрософт дистрибуира исправке и која датотека се мења

Када се појави рањивост у GDI-ју, Мајкрософт објављује безбедносну исправку, обично у пакету месечних пакета. Ова ажурирања обично стижу путем Виндовс Упдатеиз каталога Microsoft Update или путем алата за управљање као што су Windows Server Update Services (WSUS) и Microsoft Endpoint Configuration Manager (MECM). У случају рањивости CVE-2017-11816, одговарајуће ажурирање (на пример, KB4042121 за Windows Server 2008) могло би се добити или са Windows Update-а или из каталога, у самосталном .msu формату.

Једна посебност коју Мајкрософт истиче је да, ако су инсталирани језички пакети након примене ажурирањаПотребно је поново инсталирати безбедносну закрпу. Стога се увек препоручује да се прво инсталирају потребни језици, а затим ажурирања. Овај детаљ, који може изгледати безначајан, довео је до више од једног случаја где се погрешно веровало да је систем закрпљен, док у стварности одређене GDI бинарне датотеке нису садржале исправљену верзију.

У документацији која се односи на ове билтене, Microsoft наводи веома опсежне табеле са архивским информацијамаТабела садржи назив датотеке (нпр. gdi32.dll), специфичну верзију, величину, датум, време и платформу (x86, x64, IA-64). Ове табеле омогућавају администраторима и ревизорима да форензички провере да ли је инсталирана исправна бинарна датотека. Сличан процес се дешава са .msu и .exe пакетима за различита издања Windows-а и Office-а, где су наведени SHA1 и SHA256 хешеви за сваку датотеку како би системи могли да провере њен интегритет.

Листа датотека и хешева је огромна: од Виндовс6.0-КБ2834886-к86.мсу и његове 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 Update, безбедносни портали за ИТ стручњаке (као што је TechNet Security), међународне веб странице за подршку и наменске услуге против злонамерног софтвера под брендом Microsoft Secure.

Добре праксе за ублажавање, праћење и реаговање

Поред инсталирања закрпа чим постану доступне, постоји низ мере за ублажавање и дубинску одбрану који помажу у смањењу ризика повезаног са GDI кваровима, посебно у корпоративним окружењима са стотинама или хиљадама уређаја.

Прво, препоручљиво је ограничити површину напада онемогућавањем или ограничавањем аутоматска обрада одређених графичких формата у апликацијама и прегледачима. На пример, у Microsoft Edge-у је могуће конфигурисати групне политике да блокирају или контролишу преузимање и руковање EMF/WMF метафајловима, користећи кључеве регистра у HKLM\SOFTWARE\Policies\Microsoft\Edge који се односе на ограничења преузимања. У другим апликацијама, опције конфигурације могу се користити да би се спречио аутоматски преглед докумената са непоузданих локација, а смернице се могу применити на Поправите проблем са претраживачем датотека који не реагује.

Још један неопходан слој је сегментација мреже према принципима нултог поверењаОво укључује ограничавање SMB, RDP и другог потенцијално експлоатибилног протоколског саобраћаја само на строго неопходне подмреже, имплементацију заштитних зидова следеће генерације са дубинском инспекцијом пакета и спровођење правила заснованих на идентитету и контексту. Ограничавањем уређаја који могу да комуницирају са којим сервисима, утицај експлоита који покушава да се шири латерално је драстично смањен.

Што се тиче детекције, имплементација EDR (Endpoint Detection and Response) решења, као што је Microsoft Defender for Endpoint, помаже у праћењу аномалног понашања повезаног са Догађаји win32k.sys, gdi32.dll и BSODКонфигурисањем упозорења о порасту грешака на плавом екрану (на пример, почев од ИД-а догађаја 1001 у прегледачу догађаја) и о необичном приступу графичком подсистему, могу се идентификовати покушаји експлоатације или нестабилности изазване злонамерним софтвером.

За управљање закрпама, топло се препоручује аутоматизација имплементације помоћу Windows Update for Business, WSUS или MECM, али увек уз укључивање фаза тестирања у припремним окружењима да би се откриле потенцијалне регресије пре него што се крене у производњу. У инфраструктурама са ваздушним зазором, препоручљиво је ревидирати све долазне датотеке помоћу алата као што су YARA правила дизајнирана за препознавање сумњивих образаца у EMF/WMF и другим графичким форматима.

У напреднијим сценаријима, неке организације разматрају постепену миграцију својих интерних апликација на модерније API-је као што су Direct2D, DirectWrite или крос-платформски графички енџини (Каиро, Скиа), који нуде бољу изолацију и мање ослањање на застарели GDI. На средњи рок, Мајкрософт би могао да укине значајне делове GDI-ја у будућим верзијама Windows-а како би смањио површину за нападе, иако ће компатибилност са старијим верзијама остати изазов.

Из перспективе форензичке анализе и обртања, алати као што су WinDbg, KD или волатилност Они омогућавају корисницима да анализирају меморијске дампове након BSOD-а и да посматрају оштећења у меморији означеној са „Gdi“ у кернел пулу. Експлоати за доказ концепта објављени у истраживачке сврхе показују како EMF са одређеним неправилно формираним регистрима (на пример, у EMR_HEADER) може изазвати услов трке и покренути пад система. Ово знање је кључно за тимове за реаговање на инциденте како би реконструисали шта се догодило у стварном нападу.

У случају инцидента, препоручљиво је следити оквире деловања као што је онај од NIST-а (Идентификуј, Заустави, Искорени, Опорави). То подразумева изоловати погођену опремуСачувајте доказе (изводе меморије, логове, узорке сумњивих датотека), примените закрпе на чекању, скенирајте системе ажурираним алатима за заштиту од злонамерног софтвера и вратите систем из верификованих резервних копија или врати се на претходну тачкуПоред тога, препоручљиво је периодично преиспитати научене лекције како би се побољшали процеси закрпања и јачања система.

Читава ова историја кварова и закрпа које окружују Windows GDI истиче колико крхке могу бити застареле компоненте без робусне слојевите стратегије безбедности и ажурирања. Разумевање како се ове рањивости искоришћавају, које су верзије угрожене и које додатне контроле се могу применити омогућава администраторима и стручњацима за сајбер безбедност да ојачају своје системе и спрече једноставну слику или специјално дизајнирани метафајл на крају довести до колапса или потпуног угрожавања Windows инфраструктуре.

Закрпа за Windows 10 за бесплатна ажурирања
Повезани чланак:
Закрпа за Windows 10 за бесплатна ажурирања: ESU и KB5071959