Rozbitý útok - Shatter attack

Ve výpočetní technice, a rozbít útok je programovací technika používaná hackeři na Microsoft Windows operační systémy obejít bezpečnostní omezení mezi procesy v a zasedání. Rozbitý útok využívá konstrukční chybu v systému Windows pro předávání zpráv, díky níž by mohl být libovolný kód injekčně do jakékoli jiné spuštěné aplikace nebo služby ve stejné relaci, která využívá a smyčka zpráv. To by mohlo mít za následek eskalace privilegií využívat.[1]

Přehled

Útoky Shatter se staly tématem intenzivní konverzace v bezpečnostní komunitě v srpnu 2002 po zveřejnění článku Chrisa Pageta s názvem „Využívání konstrukčních chyb v rozhraní Win32 API pro eskalaci privilegií“.[2] Článek, který vytvořil termín „rozbití útoku“, vysvětlil proces, kterým aplikace mohla spustit libovolný kód v jiné aplikaci. K tomu může dojít, protože systém Windows umožňuje neprivilegovaným aplikacím odesílat zprávy smyčky zpráv aplikace s vyššími oprávněními - a některé zprávy mohou mít jako parametr adresu funkce zpětného volání v adresním prostoru aplikace. Pokud se útočníkovi podaří vložit svůj vlastní řetězec do paměti aplikace s vyššími oprávněními (řekněme vložením shell kód do editačního pole) na známém místě, mohli posílat zprávy WM_TIMER s parametry funkce zpětného volání nastavenými tak, aby ukazovaly na řetězec útočníka.

Několik týdnů po zveřejnění tohoto příspěvku společnost Microsoft odpověděla s tím, že: „Článek je správný, že tato situace existuje, a správně popisuje její účinek. ... Kde se papír mýlí, tvrdí, že se jedná o chybu Windows. Ve skutečnosti chyba spočívá v konkrétní vysoce privilegované službě. Podle návrhu jsou všechny služby na interaktivní ploše rovnocenné a mohou si navzájem vybírat požadavky. Výsledkem je, že všechny služby na interaktivní ploše skutečně mají oprávnění odpovídající. s nejvíce vysoce privilegovanou službou. “[3]

Řešení

V prosinci 2002 společnost Microsoft vydala opravu pro Windows NT 4.0, Windows 2000, a Windows XP tím se uzavřely některé cesty vykořisťování.[4] Toto bylo pouze částečné řešení, protože oprava byla omezena na služby obsažené v systému Windows, které lze zneužít pomocí této techniky; základní chyba návrhu stále existovala a stále ji lze použít k cílení na jiné aplikace nebo služby třetích stran.[5] S Windows Vista „Cílem společnosti Microsoft bylo vyřešit problém dvěma způsoby: Zaprvé, místní uživatelé se již do relace 0 nepřihlašují, čímž oddělují smyčku zpráv relace přihlášeného uživatele od systémových systémových služeb s vysokými oprávněními, které se načítají do relace 0. Zadruhé, nová funkce s názvem Izolace oprávnění uživatelského rozhraní (UIPI) byl zaveden, přičemž procesy lze dále chránit před rozbitými útoky přiřazením Úroveň integrity ke každému procesu.[6] Pokusy o odeslání zpráv procesu s vyšší úrovní integrity selžou, i když oba procesy vlastní stejný uživatel. UIPI však nezabrání všem interakcím mezi procesy na různých úrovních integrity.[6] Internet Explorer 7 například používá funkci UIPI k omezení rozsahu, ve kterém jeho komponenty vykreslování interagují se zbytkem systému.

Způsob přepracování relací byl přepracován Windows Vista a Windows Server 2008 poskytnout další ochranu před rozbitými útoky. Přihlašování místních uživatelů bylo přesunuto z relace 0 do relace 1, čímž došlo k oddělení procesů uživatele od systémových služeb, které by mohly být zranitelné.[7][8]

Služba detekce interaktivních služeb ve Windows Windows Server 2008.

To vytváří zpětná kompatibilita problémy, protože některý software byl navržen s předpokladem, že služba běží ve stejné relaci jako přihlášený uživatel. Na podporu tohoto pohledu zavedly systémy Windows Vista a Windows Server 2008 a Služba Windows volala "Detekce interaktivních služeb "který umožňuje přístup k dialogovým oknům vytvořeným interaktivními službami, když se objeví. Interaktivnímu uživateli se zobrazí dialogové okno a je mu nabídnuta možnost přepnout na relaci 0 pro přístup k dialogovému oknu.[9] Tato schopnost byla odstraněna z Aktualizace Windows 10 Creators Update.[10]

Viz také

Reference

  1. ^ „Využívání konstrukčních nedostatků v rozhraní Win32 API pro eskalaci privilegií. Nebo ... Shatter Attacks - Jak rozbít Windows“. Citováno 2011-12-29.
  2. ^ Chris Paget (srpen 2002). „Využívání konstrukčních nedostatků v rozhraní Win32 API pro eskalaci oprávnění“. Archivovány od originál dne 04.09.2006.
  3. ^ „Informace o hlášené architektonické chybě ve Windows“. TechNet. Microsoft. Září 2002.
  4. ^ „Bulletin zabezpečení společnosti Microsoft MS02-071 - chyba ve zpracování zpráv WM_TIMER v systému Windows mohla zvýšit úroveň oprávnění (328310)“. Microsoft. 11. prosince 2002. Citováno 2006-07-18.
  5. ^ „Rozbití systému Windows“ (PDF). Citováno 2011-12-29.
  6. ^ A b „PsExec, hranice uživatelských účtů a hranice zabezpečení“. Citováno 2007-10-08.
  7. ^ „WebLog Larryho Ostermana - interakce se službami“. Larry Osterman. 14. září 2005. Citováno 2007-04-03.
  8. ^ „Proč Vista? Změny služeb, část 2 (Zabezpečení, Stabilita, Integrita systému)“. Ken Schaefer. 5. srpna 2006.
  9. ^ Cyril Voisin (23. února 2007). „Izolace služeb v relaci 0 systému Windows Vista a Longhorn Server“. Cyril Voisin (aka Voy) o bezpečnosti. Blogy MSDN. Citováno 2008-04-23.
  10. ^ „Funkce, které jsou odstraněny nebo zastaralé v aktualizaci Windows 10 Creators Update“. Microsoft.