NX bit

Z Multimediaexpo.cz

(Přesměrováno)

NX bit (Non eXecute bit, „bit nespustitelnosti“) je vlastnost novějších procesorů architektur x86 a AMD64, která umožňuje rozlišit části operační paměti, které obsahují proveditelný kód programu od těch, které obsahují nespustitelná data. Taková schopnost zvyšuje bezpečnost těchto systémů proti útokům. Firma Intel stejnou technologii označuje názvem XD bit (eXecute Disable bit).

NX bit je bit v hlavičce každé stránky, pomocí kterého může operační systém zvolit, zda je dovoleno provádět obsah této stránky jako kód. Pokud se program pokusí provádět kód ze stránky s nastaveným NX bitem, dojde k výjimce, která má obvykle za následek ukončení odpovídajícího procesu.

Používání NX bitu má za cíl výrazně ztížit útoky typu přetečení zásobníku apod. U procesorů x86, které NX bit nepodporují, lze spouštění povolovat pouze na úrovni segmentů, nikoliv jednotlivých stránek. Problémem této vlastnosti je, že v moderních operačních systémech se segmentace nepoužívá (respektive používá se na minimální možné úrovni, tzv. flat memory model).

Pro správnou funkci NX bitu je potřeba podpora v operačním systému (a v překladači, ale tam bývá samozřejmostí). Na omezení dané NX bitem však může narazit i neškodný program, pokud kvůli chybě neoznačuje správně některé části svého kódu; kvůli takovým aplikacím lze vynucování NX bitu vypnout.

Externí odkazy