Shatter_attack

V práci na počítači, rozbít útok je programovací techniky zaměstnaný sušenky na Microsoft Windows operační systémy , které mohou být využívány k obcházení bezpečnostních omezení mezi procesy v relaci. Roztříštit útok využívá design chybu v systému Windows absolvování poselství-kód, kterým by mohla být libovolný injekčně do jiné běžící aplikace nebo služby ve stejné relaci, která využívá zprávy smyčky . To by mohlo mít za následek eskalaci oprávnění využít.

Přehled

Roztříštit útoků se stala tématem intenzivní konverzace v bezpečnostní komunitě v srpnu 2002 po vydání Paget papíru Chris s názvem "Využití konstrukční chyby v rozhraní Win32 API pro zvýšení úrovně oprávnění." [ 1 ] papír, který razil termín "rozbít útok , "vysvětlil proces, kterým žádost mohl spustit libovolný kód v jiné aplikaci. To by mohlo nastat, protože Windows umožňuje neprivilegovaným aplikacím posílat zprávy zprávy smyček vyšší-privilegovaných aplikací - a některé zprávy mohou mít adresu funkce zpětného volání v aplikaci adresovém prostoru jako jeho parametr. Pokud se útočníkovi podaří dát svůj vlastní řetězec do paměti vyšší-privilegované aplikaci (tj. vložením shell kód do editačního pole, nebo pomocí VirtualAllocEx a WriteProcessMemory) na známé místo, mohli by pak posílat zprávy WM_TIMER se callback funkce parametry nastaveny na bod na útočníkův řetězec.

Několik týdnů po zveřejnění tohoto článku, Microsoft odpověděl s tím, že: "Papír je pravda, že tato situace existuje, a to správně popsat jeho účinek v. ... V případě, že papír je chybuje v prohlašovat, že se jedná o chybu Windows. Ve skutečnosti, chyba je v konkrétních, velmi privilegované služby. Podle návrhu, všechny služby v rámci interaktivní ploše jsou vrstevníci, a mohou vybírat žádosti na každém jiný. Jako výsledek, všechny služby v interaktivní ploše skutečně mají oprávnění odpovídat se většina velmi privilegované služby tam. " [ 2 ]

Řešení

V prosinci 2002, Microsoft vydal patch pro Windows NT 4.0 , Windows 2000 a Windows XP , který uzavíral některé způsoby využívání. [ 3 ] Toto bylo jen částečné řešení, nicméně, jak oprava byla omezena na služby, které je součástí systému Windows by mohla být zneužita použitím této techniky, základní design chybu ještě existovaly a mohly by být stále používány k cílové jiných aplikací nebo třetí stranou-služby. S Windows Vista , Microsoft s cílem vyřešit problém dvěma způsoby: Zaprvé, místní uživatelé již přihlášení k relaci 0, a tak oddělovat zprávy smyčka přihlášený-in relace uživatele z-výsada systémové služby vysoké, které jsou načteny do zasedání 0. Za druhé, novou funkci nazvanou uživatelské rozhraní oprávnění Izolace (UIPI) byl představen, podle něhož mohou být procesy dále chráněny proti rozbití útoky přidělením Integrity Level, aby každý proces. [ 4 ] Pokusy posílat zprávy k procesu s vyšší úroveň integrity bude nezdaří, i když jsou oba procesy vlastněné stejným uživatelem. Nicméně, všechny interakce mezi procesy na různých úrovních Integrity jsou nebrání UIPI. [ 4 ] Internet Explorer 7 , například, používá funkce UIPI omezit rozsah, v němž jeho vykreslování komponenty interakce se zbytkem systému.

Způsob sezení jsou instance byl přebudovaný v systému Windows Vista a Windows Server 2008 poskytnout další ochranu proti útokům rozbít. Místní uživatelská jména byly přesunuty z 0 na zasedání zasedání 1, tak oddělovat uživatele procesy za systémové služby, které by mohly být ohroženy.

Interaktivní služby detekce služby vsystému Windows Server 2008 .

To vytváří zpětnou kompatibilitu problémy, nicméně, jak nějaký software byl navržen s předpokladem, že služba je spuštěna ve stejné relaci jako přihlášený-uživatele. Na podporu tohoto názoru, Windows Vista a Windows Server 2008 obsahuje službu Windows s názvem " Interaktivní služby detekce ", která umožňuje přístup k dialogy vytvořené interaktivní služby, kdy se objeví. Interaktivní uživatel se zobrazí dialogové okno a nabízí možnost přejít na relaci 0 pro přístup k dialogu. [ 5 ]

Také služby nakonfigurován s "komunikovat s plochou" oprávnění může ještě vytvářet vyskakovací dialogy, ikony systém oznámení, nebo jiných prvků uživatelského rozhraní pro interaktivní uživatele. Tento obchází ochrany poskytované tím, že má interaktivní uživatel přihlášen na zvláštní zasedání, takže tento postup se nedoporučuje. Místo toho, dva-proces, design je doporučeno tam, kde je proces vložen do relace uživatele, který komunikuje s touto službou procesu prostřednictvím inter-procesu komunikace. Navíc, když je privilegované operace musí být provedeny, je ověřené volání, která se načte další servisní kód. Jakmile je tento privilegovaný kód je dokončena dělá to, co je třeba udělat, je vyložen z paměti tak, že nezůstává za možný cíl pro pozdější využití.