Executable space protection

V oblasti počítačové bezpečnosti , spustitelný ochrana prostor je označení paměťových regionů jako non-spustitelný soubor, takže pokus vykonat strojového kódu v těchto regionech způsobí výjimku . Využívá hardwarových funkcí, jako je NX bit .

Burroughs 5000 nabídla hardwarovou podporu pro spustitelný ochranu prostoru, když to bylo představeno v roce 1961; že schopnost byl zachován ve svých nástupců alespoň prostřednictvím roku 2006. Ve své realizaci značeného architektury , každé slovo z paměti, měl spojené, skrytý tag trochu, že ho označíte kód nebo data. Tak lze uživatelské programy ani psát, nebo dokonce číst programu slovo, a datových slov nelze provést.

Pokud operační systém může označit některé nebo všechny zapisovatelné oblastí paměti jako non-spustitelný soubor, může to být schopen zabránit zásobníku a haldy paměti oblastí od bytí spustitelný. To pomáhá zabránit určitým přetečení vyrovnávací paměti exploity od uspět, zejména těch, které aplikovat a spustit kód, jako jsou Sasser a Blaster červů. Tyto útoky se spoléhají na některé části paměti, obvykle v zásobníku, bytí oba writable a spustitelný; pokud tomu tak není, útok selže.

OS implementace
Mnoho operačních systémů realizovat, nebo máte k dispozici spustitelný politiku ochrany prostor. Zde je seznam těchto systémů v abecedním pořadí, každý s technologiemi objednaných od nejnovějších po nejstarší.

Pro některé technologie, jsou shrnuty, který poskytuje hlavní funkce každý technologie podporuje. Shrnutí je strukturován jako níže.

Hardware Podporované procesory: (čárkami oddělený seznam architektur CPU)
Emulace: (Ne) nebo (Architecture Independent), nebo (čárkami oddělený seznam architektur CPU)
Ostatní Podporované: (None) nebo (čárkami oddělený seznam architektur CPU)
Standardní Distribuce: (Ne) nebo (Ano) nebo (čárkami oddělený seznam distribucí nebo verzí, které podporují technologii)
Datum vydání: (datum prvního vydání)
Technologie napájení Architecture Independent emulace bude funkční na všech procesorech, které nejsou podporovány hardware. "Ostatní Podporovaný" linka je určena pro procesory, které umožňují nějakou metodu šedá-oblasti, kde neexistuje explicitní NX bit ještě hardware umožňuje, aby jeden být emulovány nějakým způsobem.

Android
Jak Android 2.3 a novější, architektury, které podporují to mít non-spustitelné strany ve výchozím nastavení, včetně non-spustitelný zásobníku a haldy.

FreeBSD
Počáteční podpora pro NX bit , na x86-64 a x86 procesorů, které ji podporují, se poprvé objevil v FreeBSD -CURRENT dne 8. června 2004. To bylo ve FreeBSD uvolňuje od 5.3 vydání.

Linux
Linuxové jádro v současné době podporuje NX bit na x86-64 a x86 procesorů, které ji podporují, jako je moderní 64-bitové procesory ze strany AMD, Intel, Transmeta a VIA. Podpora pro tuto funkci v 64-bitovém režimu na x86-64 procesorů byla přidána v roce 2004 Andi Kleen , a později stejný rok, Ingo Molnar přidána podpora pro něj v 32-bitovém režimu na 64-bitových procesorů. Tyto vlastnosti byly součástí jádra hlavní řady Linuxu od vydání jádra verze 2.6.8 v srpnu 2004.

Dostupnost NX bit na 32-bitových x86 jader, které mohou běžet na kompatibilních procesorů jak 32-bit x86 CPU a 64-bit x86, je významná, protože 32-bit x86 jádro by se za normálních okolností očekávat, že NX bit, který jako AMD64 nebo IA-64 zásoby; Enabler náplast NX ujišťuje, že tato jádra se pokusí-li přítomna používat NX bit.

Některé stolní linuxové distribuce , jako je Fedora , Ubuntu a openSUSE , nemají volbu HIGHMEM64 ve výchozím nastavení výchozí jádra, které je potřebné k získání přístupu k NX bit v 32bitovém režimu, protože PAE režim, který je povinen použijte NX bit způsobí boot selhání na pre- Pentium Pro (včetně Pentium MMX) a Celeron M a Pentium M procesory bez podpory NX. Ostatní procesory, které nepodporují PAE jsou AMD K6 a starší, Transmeta Crusoe , VIA C3 a dříve, a Geode GX a LX. VMware Workstation verze starší než 4.0, Parallels Workstation verze starší než 4.0 a Microsoft Virtual PC a Virtual Server ne podporovat PAE na hosta. Fedora Core 6 a Ubuntu 9.10 a později poskytovat balíček kernel-PAE, který podporuje PAE a NX.

Ochrana paměti NX byl vždy k dispozici v Ubuntu pro všechny systémy, které měli hardware pro jeho podporu a běžel na 64bitové jádro nebo 32bitové jádro serveru. 32-bitové desktop PAE kernel (linux-image-generic-PAE) v Ubuntu 9.10 a později, také poskytuje režim PAE potřebné pro hardware s funkcí CPU NX. U systémů, které postrádají NX hardwaru, 32bitové jádra nyní poskytují aproximace funkce procesoru NX přes softwarové emulace, které mohou pomoci blokovat mnoho využívá útočník mohl spustit z komína nebo haldy paměti.

Non-execute funkce byla také přítomna u ostatních procesorů non-x86 podporujících tuto funkci k mnoha vydáních.

Exec Shield
Red Hat kernel developer Ingo Molnar vydala opravu jádra Linuxu s názvem Exec Shield , kterou se sbližují a využívat funkce NX na 32-bitových x86 CPU.

Náplast Exec Shield byl propuštěn na Linux kernel mailing list na 2. května 2003. To bylo pro sloučení se základním jádrem odmítnuta, protože se jednalo o nějaké rušivé změny v kódu jádra, aby se zvládnout složité části emulace trik.

Hardware Podporované procesory: Všechny, které Linux podporuje NX na
Emulace: NX přiblížení pomocí kódu segmentu limit na IA-32 ( x86 ) a kompatibilní
Jiné Podporované: Žádný
Standardní Distribuce: Fedora Core a Red Hat Enterprise Linux
Datum vydání: 02.05.2003
PaX
PaX technologie NX může emulovat NX bit nebo NX funkčnosti, nebo použijte hardware NX bit. PaX pracuje na procesorech x86, které nemají NX bit, jako je například 32-bit x86.

Projekt PaX vznikl 1. října 2000. To bylo později portován na 2,6, a je v době psaní tohoto článku ještě ve vývoji.

Linuxové jádro stále nejsou dodávány s PaX (od května 2007); Náplast musí být sloučeny ručně.

Hardware Podporované procesory: Alpha , AMD64 , IA-64 , MIPS (32 a 64 bit), PA-RISC , PowerPC , SPARC
Emulace: IA-32 ( x86 )
Ostatní Podporované: PowerPC (32 a 64 bit), SPARC (32 a 64 bit)
Standardní Distribuce: Adamantix , Tvrzené Gentoo , Tvrzené Linux , Alpine Linux
Datum vydání: 01.10.2000
NetBSD
Jak NetBSD 2.0 a novější (09.12.2004), architektur, které podporují to mít non-spustitelný stack a haldy.

Ti, kteří mají za-stránku granularity se skládají z: alpha, amd64, hppa, i386 (s PAE), powerpc (ibm4xx), SH5, sparc (sun4m, sun4d), sparc64.

Ty, které může podporovat pouze ty s regionu zrnitosti jsou: i386 (bez PAE), PowerPC (např macppc).

Ostatní architektury nemají prospěch z non-spustitelné zásobníku nebo haldy; NetBSD není ve výchozím nastavení používat žádné softwarové emulace nabídnout tyto funkce na těchto architektury.

OpenBSD
W ^ X
Hlavní článek: W ​​^ X
Technologie v OpenBSD operační systém , známý jako W ^ X, označí možností zápisu stránek ve výchozím nastavení jako non-spustitelný na procesory, které podporují to. Na 32-bitových x86 procesory, kód segmentu je nastaven, aby zahrnoval pouze část adresového prostoru, zajistit určitou úroveň ochrany spustitelného prostoru.

OpenBSD 3.3 dodává 01.05.2003, a byl první zahrnovat W ^ x.

Hardware Podporované procesory: Alpha , AMD64 , HPPA , SPARC
Emulace: IA-32 (x86)
Jiné Podporované: Žádný
Standardní Distribuce: Ano
Datum vydání: 01.05.2003
OS X
OS X pro Intel podporuje NX bit CPU všech podporovaných Apple (z 10.4.4 - první Intel vydání - a dále). Mac OS X 10.4 je podporován pouze NX ochranu zásobníku. V systému Mac OS X 10.5, všechny 64bitové spustitelné soubory mají NX stack a haldy; W ^ X ochrana. To zahrnuje x86-64 (Core 2 nebo novější) a 64-bit PowerPC na G5 Mac.

Solaris
Solaris podporuje globálně zakázání spuštění zásobníku na procesorech SPARC, protože Solaris 2.6 (1997); v Solaris 9 (2002), byla přidána podpora pro zakázání spuštění zásobníku na jednotlivé spustitelný.

Jak Solaris 10 (2005), použití NX bit je automaticky povolen ve výchozím nastavení na procesorech x86, které podporují tuto funkci. Výjimky jsou vyrobeny pro 32-bitové starší Abi v léčbě zásobníku segmentu programu. Drtivá většina programů bude fungovat beze změn. Pokud však program selže, ochrana může být zakázán pomocí vymáhat-Prot-exec možnost EEPROM. Sun doporučují, aby selhání by měla být označena jako programových chyb. 

Windows
Počínaje systémem Windows XP s aktualizací Service Pack 2 (2004) a Windows Server 2003 Service Pack 1 (2005), byly implementovány funkce NX poprvé na x86 architektuře.

Microsoft Windows používá ochranu NX na kritických služeb systému Windows výlučně ve výchozím nastavení. Pod Windows XP nebo Server 2003, funkce se nazývá Zabránění spuštění dat (zkráceně DEP), a to může být nakonfigurován pomocí kartě Upřesnit "systém" vlastnostmi. Pokud x86 procesor podporuje tuto funkci v hardwaru, pak funkce NX automaticky zapnou v systému Windows XP / Server 2003 ve výchozím nastavení. Není-li tato funkce není podporována procesorem x86, pak žádná ochrana je dána.

"Software DEP" nesouvisí s NX bit, a je to, co Microsoft nazývá jejich prosazování bezpečného Structured Exception Handling. Software DEP / SafeSEH kontroluje, když se výjimka vyvolá, aby se ujistil, že výjimka je registrován v tabulce funkcí pro aplikaci, a vyžaduje, aby program, který bude postaven s ním.

Brzy implementace DEP neposkytla žádné adresový prostor rozložení náhodného (ASLR), což umožnilo potenciální return-to-libc útoky , které by byly reálně použity k Zakázat DEP během útoku . PaX dokumentace rozpracovává o tom, proč ASLR je nezbytné; koncept proof-of- bylo vyrobeno popisovat metodu, pomocí které by bylo možné DEP obcházeny v nepřítomnosti ASLR. Je možné vyvinout úspěšný útok, pokud adresa připravených dat, jako jsou poškozené obrázky nebo MP3 může být známý útočníkem. Microsoft přidal ASLR funkce v systému Windows Vista a Windows Server 2008 , aby řešení tohoto avenue útoku.

Mimo x86 sféry, verze NX také existuje pro Intel IA-64 , která je implementována v systému Windows na této architektuře.

Hardware Podporované procesory: x86-64 (AMD64 a Intel 64), IA-64 , Efficeon , Pentium M (pozdější revize), AMD Sempron (pozdější revize)
Emulace: Ne
Jiné Podporované: Žádný
Standardní Distribuce: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1, Windows XP Professional x64 Edition , Windows Vista
Datum vydání: 06.08.2004