Sociálne siete

SecIT.sk na Facebooku SecIT.sk na Google+ SecIT.sk na Twitteri

Podporte nás


V prípade, že Vám obsah nášho portálu niekedy nejakým spôsobom pomohol, či bol pre Vás prínosom prosím podporte jeho chod ľubovoľnou čiastkou. Ďakujeme!

Prihlásenie

Štítky

Vyhľadávanie

You are here

Domov
Upozornenie: Obsah je licenčne chránený a bez písomných súhlasov autora článku a vlastníka webovej stránky nesmie byť v žiadnej forme ďalej kopírovaný a šírený v pôvodnom, či v akokoľvek upravenom stave.

Nová zranitelnost Windows umožňuje libovolnému uživateli získat systémová oprávnění

Před pár dny po Internetu začaly kolovat zprávy o "nové" zranitelnosti operačních systémů Windows, která umožňuje libovolnému uživateli získat systémová oprávnění. Situace je o to závažnější, že zranitelnost pravděpodobně postihuje systémy od Windows 2000 až do Windows 7.

Nutné pozadí

Windows umožňují spouštět i staré 16bitové aplikace určené pro MS-DOS. Tuto činnost má na starosti subsystém NTVDM. DOSové aplikace běží v tzv. virtuálním módu 8086, což je speciální mód, který podporují procesory kompatibilní s x86. V8086 je téměř dokonale virtualizovaným prostředím, ve kterém před mnoha lety běžel MS-DOS. 16bitové aplikace až na pár výjimek nemohou poznat, zda běží ve V8086 či ne.

Mód V8086 však není samospasitelný. Musí nad ním bdít program zvaný jednoduše V8086 monitor, který bude emulovat DOSovým aplikacím komunikaci s hardwarem a obsluhu výjimek a přerušení. A ona kritická chyba se nachází právě při emulaci přerušení pro mód V8086.

Emulace obsluhy přerušení je rozdělena do dvou částí, které musí být spolu přesně synchronizovány. Jak dokazuje proof-of-concept exploit, podaří-li se obsluhu přerušení pro V8086 desynchronizovat, je možné vykonávat kód v režimu jádra - tedy mít přístup absolutně ke všem dveřím, které jsou pro běžné uživatele (ale i administrátory) zamčené.

Kde chyba vězí, a jak se jí podařilo zneužít

Chyba, která umožňuje desynchronizaci provést, se nachází v obsluze přerušení #GP (General Protection Fault). Toto přerušení je Intelem určeno i k emulaci obsluhy přerušení V8086.

Tato chyba v obsluze #GP však nemůže být zneužita sama o sobě k získání systémových oprávnění. Může jí zenužít pouze monitor V8086 (NTVDM), Jiné procesy k tomu potřebují oprávnění SeTcbPrivilege, které si mohou přivlastnit až administrátoři.

Bohužel i uživatel s omezenými právy je schopen spustit subsystém NTVDM a donutit tento proces k zneužití chyby v obsluze #GP. Může to provést následujícím způsobem:

  • Spustit nějakou DOSovou aplikaci (například program debug.exe, který se nachází v systémovém adresáři). Tím se automaticky spustí i NTVDM. Zatím se nejedná o žádnou bezpečnostní chybu. Kdyby se subsystém nespustil, uživatelé s omezenými právy by nemohli pouštět DOSové aplikace.
  • NTVDM se bohužel spustí pod účtem uživatele s omezenými právy. Z toho vyplývá, že uživatel s tímto procesem může manipulovat. Zde je právě zakopán onen pověstný pes.
  • Do spuštěného NTVDM lze vložit libovolný kód, který v kontextu tohoto procesu může zneužít chybu v obsluze #GP a provést libovolnou akci v režimu jádra.

Samotné chyby v #GP by uživatel s omezeným oprávněním zneužít nemohl. Problém tkví ve špatné implementaci kontroly volání funkce NtVdmControl, která se právě k zneužití chyby obsluhy #GP používá. Tuto funkci může volat jen minitor V8086.

Předpokládá se, že obě chyby (ale zvlášť ta v #GP) se týkají velmi starého kódu, který se v operačním systému nachází možná už od verze NT 3.51. A Windows NT 3.51 se objevila na trhu v roce 1995.

Závěr

Sám jsem exploit úspěšně vyzkoušel na plně aktualizovaných 32bitových Windows 7 Professional. Protože se jedná o velmi straou zranitelnost (která však byla objevena teprve před půl rokem), jsou postiženy i systémy Windows 2000, Windows XP, Windows Vista, Windows Server 2003 a Windows Server 2008.

Exploit je velmi uživatelsky přívětivý. Stačí jej pouze spustit a od systémových oprávnění vás dělí pouze zlomek sekundy. K binárkám je přiložen i zdrojový kód, který ukazuje, že celá aplikace je napsána přehledně a umožňuje i méně zkušenému člověku (tím myslím i osoby některými označované jako script-kiddies) vytvořit si na jeho bázi vlastní škodlivý kód. Pozitivní na celé věci je snad jen fakt, že nucení NTVDM k vykonávání cizího kódu pravděpodobně zaznamenají systémy HIPS.

Kód exploitu funguje pouze na 32bitových verzích Windows. Pokládám však za velmi pravděpodobné, že jej půjde upravit i pro 64bitová Windows, což by znamenalo naprosté obejití filosofie digitálně podepsaných ovladačů jádra. Ale třeba se mýlím.

Na závěr ještě podotknu, že autor exploitu tuto zranitelnost oznámil společnosti Microsoft v červnu roku 2009. Chyba však dosud nebyla opravena.

Použité zdroje:

Komentáre

Zajímavý článek, jen bych upozornil na zjevnou chybu v poslední větě Závěru, červen 2010 nás teprve čeká :).

Díky za upozornění. Chybu jsem opravil.

"Windows umožňují spouštět i staré 16bitové aplikace určené pro MS-DOS" = ale predpokladam ze je myslene cez emulator ako je DOSBOX - alebo sa mylim a aj iny sposob spustania dosovskych programov vo Windows ?

Windows v sobě mají emulátor pro DOSové aplikace integrovaný přímo v jádře (NTVDM). Ikdyž jeho podpora s novějšími verzemi postupně mizí (je dost problematická na 64bitových systémech. Myslím, že na nějakých levných edicích se už ani nevyskytuje). Myslím si, že by bylo příjemné, kdyby od podpory DOS aplikací úplně upustili a vyloučili ji z jádra a spouštění DOSových aplikací přenechali právě emulátorům jako je DOSBox.

Part - 1 - Nieje to iny sposob spustania pod Windows ale vlastnost Intel i386 procesora (a tym padom aj vsetkych vyssich). Procesor moze bezat v :
  • Realnom Rezime (64kb segmenty, zacinajuce od 0 MB, ktorymi sa da spravovat RAM do velkosti 1 MB, bez ochrany pamate (cize obsahy sa daju volne prepisovat), dalej REAL). Programy spustene v tomto rezime su 16 bitove (dalej len 16b).
  • Protected Rezime (segmenty mozu byt kazdy dlhy az 4 GB, a kazdy moze mat zapnutu ochranu na zaklade tzv. Ringu 0-2, dalej len PMODE). Programy su 32 bitove (32b).

Chcel som sem dat dlhsi prispevok, ale |ebat, stravil som nim nejaky cas, ale mate to tu chlapci moji dokurvene ten PHPIDS. Dalsia poucka dnes tazko naucena: srat slovensky internet.

To nás mrzí, ale komentáre treba písať len v čistom texte, IDS ale poriešime.

Podporte nás


Páčil sa Vám tento článok? Ak áno, prosím podporte nás ľubovoľnou čiastkou. Ďakujeme!


ITC manažer Security-portal.cz Soom.cz
Hoax.cz Antivirove centrum Crypto-world.info