Az ASLR ( címtérelrendezési véletlenszerűsítés - " címtérelrendezési véletlenszerűsítés ") egy operációs rendszerekben használt technológia , amely véletlenszerűen megváltoztatja a fontos adatstruktúrák folyamatának helyét a címtérben , nevezetesen a végrehajtható fájlképeket , betölthető könyvtárakat , kupacokat és veremeket . .
Az ASLR-t úgy tervezték, hogy megnehezítse a különféle sérülékenységek kihasználását . Például, ha egy támadó képessé válik arra, hogy egy puffertúlcsordulás vagy más módszer segítségével tetszőleges címre vigye át az irányítást, akkor ki kell találnia, hogy a verem, kupac vagy más adatstruktúra melyik címre helyezhető a shellcode -ba . Hasonló problémák merülnek fel a return -to-libc támadásnál: a támadó nem ismeri a könyvtár betöltésének címét. A fenti példákban a konkrét címek el vannak rejtve a támadó elől, és ha a helyes címet nem lehet kitalálni, az alkalmazás valószínűleg összeomlik, ezáltal megfosztja a támadót az újbóli támadás lehetőségétől, és felkelti a rendszergazda figyelmét .
Az OpenBSD fejlesztői az elsők között vezették be az ASLR-t. Az ASLR alapértelmezés szerint engedélyezve van.
A Linux kernel 2005 óta rendelkezik az ASLR egyszerű változatával (a 2.6.12-es verzió óta). A bonyolultabb és teljesebb ASLR-változatokat javításként kínálják ( PaX , ExecShield stb.). Azokban a disztribúciókban, amelyek nevében szerepel a "hardened" szó, valamint az Ubuntu disztribúció modern verzióiban, a kemény változatok alapértelmezés szerint engedélyezve vannak.
Ahhoz, hogy az ASLR működjön (a végrehajtható fájlok véletlenszerű címeken történő memóriába helyezéséhez), a végrehajtható fájlokat pozíciófüggetlen futtatható módban kell lefordítani (egyfajta pozíciófüggetlen kód a végrehajtható fájlok számára).
Windows rendszeren az ASLR a Windows Vista (2007) [1] óta támogatott speciális jelzőkkel épített futtatható fájlok és könyvtárak esetében.
Az ASLR a Windows későbbi verzióiban is támogatott, mint például a Windows Server 2008 , Windows 7 , Windows Server 2008 R2 , Windows 8 , Windows 8.1 , Windows 10 .
Az ASLR-t nem használják speciális zászlók nélkül készült alkalmazásokhoz, és ha kompatibilitási módban futnak a Windows korábbi verzióihoz.
Windows XP és Windows Server 2003 rendszeren az ASLR bármely kiválasztott alkalmazáshoz engedélyezhető a Microsoft EMET [2] (Enhanced Mitigation Experience Toolkit) segítségével.
A Mac OS X v10.5 Leopard (2007) [3] rendszerben némi véletlenszerűséget adtak a könyvtárbetöltésben . Az OS X 10.8 Mountain Lion (2012) verziójában az ASLR a rendszer kernelének része [4] .
Az iOS a 4.3-as verzió óta ASLR technológiát használ [5] . Kernelhez, iOS 6 óta használják [6] .
Az ASLR egy kompromisszum a fokozott biztonság és a csökkentett 24 bites, 31 bites és 64 bites magántárhely között. A 24 bites és a 31 bites virtuális tárhely engedélyezésével a rendelkezésre álló privát tárhely 63 oldalra, illetve 255 oldalra csökken. A munkaterület kért méretét továbbra is ki kell elégíteni a csökkentett magánterületről, hogy a feladat futhasson. Azok a jobok, amelyeknek a hatókör mérete nem teljesíthető, 822-es ABEND hibát eredményeznek. Ha a job kért hatókörmérete kielégíti, lehetséges, hogy a csökkentett magántárhely mérete megakadályozza a feladat befejezését, ami 878-as ABEND hibát eredményez.
Az egyik módja annak, hogy meghatározzuk, hogy a jobok nem futhatnak-e a 24 bites vagy 31 bites privát tárhely méretkorlátjával, amely akkor fordul elő, ha az ASLR engedélyezve van, ha nagyobb értéket ad meg a CSA paraméternek a parmlibben. A 24 bites és a 31 bites CSA méretének 1 millióval való növelése hatékonyan csökkenti a 24 bites és 31 bites privát tárhely méretét 1 millióval, ami több, mint az ASLR-rel elérhető maximális csökkentés [7] .
Az ASLR használatához a végrehajtható fájlokat speciális zászlókkal kell felépíteni. Ennek eredményeként a kódban nem lesznek állandó címek, de ugyanakkor:
Ezenkívül a védelem megkerülhető memóriakiürítéssel [8] vagy Heap Spray módszerekkel [9] .