Co je to ASLR a jak udržuje počítač bezpečný?
Randomizace rozložení rozložení adres (ASLR) je bezpečnostní technika používaná v operačních systémech, která byla poprvé zavedena v roce 2001. Současná verze všech hlavních operačních systémů (iOS, Android, Windows, MacOS a Linux) obsahuje ochranu ASLR. Ale v minulém týdnu byla nalezena nová metoda obejití ASLR. Takže, měli byste se obávat?
Pro ty, kteří nemají nízkoúrovňové programovací pozadí, může být ASLR matoucí. Abyste to pochopili, musíte nejprve porozumět virtuální paměti.
Co je virtuální paměť?
Virtuální paměť je technika správy paměti s mnoha výhodami, ale byla vytvořena především pro snadnější programování. Představte si, že máte v počítači nainstalovaný prohlížeč Google Chrome, Microsoft Word a několik dalších programů se 4 GB paměti RAM. Celkově programy v tomto počítači využívají mnohem více než 4 GB paměti RAM. Avšak ne všechny programy budou vždy aktivní, nebo je třeba současně přistupovat k této paměti RAM.
Operační systém přiděluje paměti volání programům stránek. Pokud není k dispozici dostatek paměti RAM pro ukládání všech stránek najednou, stránky s nejméně pravděpodobné potřebou budou uloženy na pomalejší (ale prostornější) pevný disk. Když jsou zapotřebí uložené stránky, budou přepínat mezery s méně potřebnými stránkami v současné době v paměti RAM. Tento proces se nazývá stránkování a jeho název zapisuje do souboru pagefile.sys v systému Windows.
Virtuální paměť usnadňuje programům spravovat vlastní paměť a zvyšuje jejich bezpečnost. Programy se nemusí starat o to, kde ostatní programy ukládají data nebo kolik paměti RAM zbývá. Mohou požádat operační systém o další paměť (nebo vrátit nevyužitou paměť) podle potřeby. Celý program vidí jediný nepřetržitý blok paměti adres pro jeho exkluzivní použití, nazvaný virtuální adresy. Program nesmí prohlížet paměť jiného programu.
Když program potřebuje přístup do paměti, dává operačnímu systému virtuální adresu. Operační systém je v kontaktu s jednotkou správy paměti (MMU) CPU. MMU překládá mezi virtuálními a fyzickými adresami a vrací tyto informace do operačního systému. V žádném okamžiku program přímo nereaguje s pamětí RAM.
Co je ASLR?
Uspořádání náhodného rozložení adres (ASLR) je primárně používáno k ochraně před útoky přetečení vyrovnávací paměti. V přetečení vyrovnávací paměti útočníci přivádějí funkci stejně mnoho nevyžádaných dat, jak to zvládne, po níž následuje škodlivý užitečný náklad. Užitné zatížení přepsá data, které program zamýšlí přistupovat. Pokyny pro přeskočení na jiné místo v kódu jsou společné užitečné zatížení. Slávná metoda JailbreakMe jailbreakingu iOS 4 například použila útok přetečení vyrovnávací paměti, což Apple přiměl k přidání ASLR do iOS 4.3.
Přetečení vyrovnávací paměti vyžaduje útočníkovi, aby věděl, kde je každá část programu umístěna v paměti. Zjistit to je obvykle obtížný proces pokusů a omylů. Po tom, co to určí, musí vynaložit užitečné zatížení a najít vhodné místo pro jeho vstřikování. Pokud útočník neví, kde je umístěn cílový kód, může být obtížné nebo nemožné ho využít.
ASLR pracuje vedle správy virtuální paměti, aby randomizovala umístění různých částí programu v paměti. Při každém spuštění programu se komponenty (včetně zásobníku, haldy a knihoven) přesouvají na jinou adresu ve virtuální paměti. Útočníci se již nemohou naučit, kde je jejich cíl prostřednictvím pokusů a omylů, protože adresa bude vždy pokaždé jiná. Obecně platí, že aplikace musí být kompilace s podporou ASLR, ale stává se výchozím nastavením a je dokonce zapotřebí v systému Android 5.0 a novějších.
Takže ASLR stále chrání vás?
Minulý úterý výzkumníci z SUNY Binghamtonu a University of California, Riverside, představili článek s názvem Jump Over ASLR: Útočící předpovědci poboček na vynechání ASLR. Papír podrobně popisuje způsob napadání vyrovnávacího oběžného uzlu (BTB). BTB je součástí procesoru, který urychluje prohlášení předpovědí výsledku. Pomocí metody autorů je možné v běžícím programu určit místa známých větvových instrukcí. Dotčený útok byl proveden na stroji Linux s procesorem Intel Haswell (nejprve vydán v roce 2013), ale pravděpodobně by mohl být aplikován na jakýkoli moderní operační systém a procesor.
To znamená, že byste neměli nutně zoufat. Papír nabídl několik způsobů, jak mohou vývojáři hardwaru a operačního systému tuto hrozbu zmírnit. Novější, jemné zrnité techniky ASLR by vyžadovaly větší úsilí od útočníka a zvýšení množství entropie (náhodnost) může způsobit, že útok Jump Over není možný. S největší pravděpodobností budou novější operační systémy a procesory imunní vůči tomuto útoku.
Takže co zbývá vy dělat? Obtok přeskakování je nový a dosud nebyl zaznamenán ve volné přírodě. Když útočníci zneužijí tuto chybu, zvětší potenciální poškození, které může útočník způsobit na vašem zařízení. Tato úroveň přístupu není bezprecedentní; Microsoft a Apple implementovaly ASLR pouze ve svých operačních systémech, které byly vydány v roce 2007 a později. Dokonce i v případě, že se tento typ útoku stává běžné, nebudete mít žádné zhoršení, než jste byli ve dnech Windows XP.
Mějte na paměti, že útočníci stále musí dostat svůj kód do vašeho zařízení, aby uškodili. Tato chyba jim neposkytuje žádné další způsoby, jak infikovat vás. Jako vždy byste měli dodržovat osvědčené postupy v oblasti bezpečnosti. Použijte antivirový software, nezůstávejte od skrytých webových stránek a programů a aktualizujte svůj software. Tím, že budete postupovat podle těchto kroků a udržet si zlomyseľné herce mimo počítač, budete stejně bezpečné jako kdykoli.
Image Credit: Steve / Flickr