ASLR

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 31 decembrie 2018; verificările necesită 13 modificări .

ASLR ( address space layout randomization -   address space layout randomization  ”) este o tehnologie folosită în sistemele de operare , care schimbă aleatoriu locația în spațiul de adrese a unui proces de structuri de date importante, și anume imagini de fișiere executabile , biblioteci încărcate , grămezi și stivă .

ASLR este conceput pentru a face mai dificilă exploatarea mai multor tipuri de vulnerabilități . De exemplu, dacă un atacator dobândește capacitatea de a transfera controlul către o adresă arbitrară utilizând un buffer overflow sau o altă metodă, va trebui să ghicească la ce adresă stiva, heap-ul sau alte structuri de date pot fi plasate în shellcode . Probleme similare vor apărea cu un atac return -to-libc: atacatorul nu va ști adresa unde este încărcată biblioteca. În exemplele de mai sus, adresele specifice sunt ascunse de atacator și, dacă adresa corectă nu poate fi ghicită, este posibil ca aplicația să se prăbușească, privând astfel atacatorul de posibilitatea de a reataca și atrăgând atenția administratorului de sistem .

Implementări

OpenBSD

Dezvoltatorii OpenBSD au fost printre primii care au implementat ASLR. ASLR este activat implicit.

Linux

Nucleul Linux are o variantă simplă de ASLR din 2005 (începând cu versiunea 2.6.12). Variante ASLR mai complexe și complete sunt oferite ca patch-uri ( PaX , ExecShield etc.). În distribuțiile care includ cuvântul „întărit” în numele lor, precum și în versiunile moderne ale distribuției Ubuntu , variantele hard sunt activate în mod implicit.

Pentru ca ASLR să funcționeze (pentru plasarea fișierelor executabile în memorie la adrese aleatoare), fișierele executabile trebuie compilate în modul executabil independent de poziție (un fel de cod independent de poziție pentru fișierele executabile).

Microsoft Windows

Pe Windows , ASLR a fost acceptat începând cu Windows Vista (2007) [1] pentru fișiere executabile și biblioteci construite cu steaguri speciale.

ASLR este acceptat și pe versiunile ulterioare de Windows , cum ar fi Windows Server 2008 , Windows 7 , Windows Server 2008 R2 , Windows 8 , Windows 8.1 , Windows 10 .

ASLR nu este utilizat pentru aplicații create fără steaguri speciale și când rulează în modul de compatibilitate pentru versiunile anterioare de Windows.

Pe Windows XP și Windows Server 2003 , ASLR poate fi activat pentru orice aplicație selectată folosind Microsoft EMET [2] (Enhanced Mitigation Experience Toolkit).

Mac OS X

O anumită aleatorie în încărcarea bibliotecii a fost adăugată în Mac OS X v10.5 Leopard (2007) [3] . În OS X 10.8 Mountain Lion (2012), ASLR face parte din nucleul sistemului [4] .

iOS

iOS folosește tehnologia ASLR încă din versiunea 4.3 [5] . Pentru kernel, folosit începând cu iOS 6 [6] .

Impactul ASLR asupra memoriei virtuale

ASLR este un compromis între securitate sporită și stocarea privată disponibilă redusă pe 24 de biți, 31 de biți și 64 de biți. Activarea stocării virtuale pe 24 și 31 de biți va reduce stocarea privată disponibilă la 63 de pagini, respectiv 255 de pagini. Dimensiunea solicitată a zonei de lucru trebuie să fie în continuare satisfăcută din zona privată redusă pentru ca lucrarea să poată rula. Joburile a căror dimensiune nu poate fi satisfăcută vor avea ca rezultat o eroare ABEND 822. Dacă dimensiunea solicitată a sarcinii este satisfăcută, este posibil ca dimensiunea redusă de stocare privată să împiedice finalizarea sarcinii, rezultând eroarea ABEND 878.

O modalitate de a determina dacă joburile nu pot rula cu limita de dimensiune de stocare privată de 24 de biți sau 31 de biți care va apărea cu ASLR activat este de a specifica o valoare mai mare pentru parametrul CSA în parmlib. Mărirea dimensiunilor CSA de 24 de biți și 31 de biți cu 1M reduce efectiv dimensiunea stocării private pe 24 de biți și 31 de biți cu 1M, ceea ce este mai mult decât reducerea maximă care va avea loc cu ASLR [7] .

Dezavantaje

Pentru a utiliza ASLR, executabilele trebuie să fie construite cu steaguri speciale. Ca urmare, adresele permanente nu vor fi folosite în cod, dar în același timp:

În plus, protecția poate fi ocolită prin epuizarea memoriei [8] sau prin metodele Heap Spray [9] .

Note

  1. Apărări de securitate software Windows ISV . msdn.microsoft.com. Consultat la 10 aprilie 2012. Arhivat din original pe 18 aprilie 2012.
  2. Windows Internals: inclusiv Windows Server 2008 și Windows Vista, ediția a cincea (PRO-Developer) ISBN 978-0-7356-2530-3
  3. Randomizarea memoriei (ASLR) vine pe Mac OS X Leopard | ZDNet . Preluat la 5 ianuarie 2018. Arhivat din original la 15 august 2020.
  4. Prezentare generală a tehnologiilor de bază OS X Mountain Lion (iunie 2012). Preluat la 25 iulie 2012. Arhivat din original la 10 iulie 2012.
  5. Pwn2Own ziua 2: iPhone, BlackBerry bătut; Chrome, Firefox nu se afișează . - „iOS 4.3 introduce Address Space Layout Randomization (ASLR)”. Preluat la 18 septembrie 2014. Arhivat din original la 27 februarie 2017.
  6. Pagina de pornire a lui Yeongjin Jang . Consultat la 5 ianuarie 2018. Arhivat din original la 21 septembrie 2020.
  7. Randomizarea  aspectului  spațiului de adrese . www.ibm.com . Preluat: 12 septembrie 2022.
  8. ↑ Ocolire simplă a protecției ASLR în Windows 7/8 . Preluat la 2 martie 2015. Arhivat din original la 19 aprilie 2018.
  9. Copie arhivată . Consultat la 13 noiembrie 2016. Arhivat din original la 20 aprilie 2018.

Literatură

Link -uri