Ce este ASLR și cum ține computerul sigur?
(ASLR) este o tehnică de securitate folosită în sistemele de operare, implementată pentru prima dată în 2001. Versiunile actuale ale tuturor sistemelor de operare importante (iOS, Android, Windows, MacOS și Linux) dispun de protecție ASLR. Dar, în ultima săptămână, a fost găsită o nouă metodă de ocolire a ASLR. Deci, ar trebui să vă faceți griji?
Pentru cei fără fundal de programare la nivel scăzut, ASLR poate fi confuz. Pentru ao înțelege, trebuie mai întâi să înțelegeți memoria virtuală.
Ce este memoria virtuală?
Memoria virtuală este o tehnică de gestionare a memoriei cu multe beneficii, dar a fost creată în primul rând pentru a ușura programarea. Imaginați-vă că aveți pe Google Chrome, Microsoft Word și alte câteva programe deschise pe un computer cu 4 GB de memorie RAM. În ansamblu, programele de pe acest computer utilizează mult mai mult de 4 GB de memorie RAM. Cu toate acestea, nu toate programele vor fi active în orice moment sau dacă au nevoie de acces simultan la memoria RAM.
Sistemul de operare alocă bucăți de memorie programelor numite pagini. Dacă nu este suficientă memorie RAM pentru a stoca toate paginile simultan, paginile cel mai puțin probabil să fie necesare sunt stocate pe hard discul mai lent (dar mai spațios). Când sunt necesare paginile memorate, ele vor schimba spațiile cu pagini mai puțin necesare în prezent în memoria RAM. Acest proces se numește paginare și îi dă numele fișierului pagefile.sys pe Windows.
Memoria virtuală facilitează programele să-și gestioneze propria memorie și, de asemenea, le face mai sigure. Programele nu trebuie să vă faceți griji cu privire la locurile în care alte programe stochează date sau câtă RAM este lăsată. Ei pot doar să ceară sistemului de operare pentru memorie suplimentară (sau să returneze memoria neutilizată) după cum este necesar. Toate programele vedeți este o singură bucată continuă de adrese de memorie pentru utilizarea sa exclusivă, numite adrese virtuale. Programul nu are voie să privească memoria altui program.
Când un program are nevoie de acces la memorie, acesta oferă sistemului de operare o adresă virtuală. Sistemul de operare contactează unitatea de gestionare a memoriei (MMU) a procesorului. MMU se traduce între adrese virtuale și fizice, returnând acele informații către sistemul de operare. În nici un moment programul nu interacționează direct cu memoria RAM.
Ce este ASLR?
Randomizarea spațiului de dispunere a spațiului (ASLR) este folosită în primul rând pentru a proteja împotriva atacurilor de depășire a tamponului. Într-un exces de tampon, atacatorii hrănesc o funcție cât mai multe date nedorite pe care le poate gestiona, urmate de o încărcătură periculoasă. Sarcina utilă va suprascrie datele pe care programul intenționează să le acceseze. Instrucțiunile de a sări într-un alt punct al codului reprezintă o sarcină utilă obișnuită. Faimoasa metodă de jailbreakMe de jailbreaking iOS 4, de exemplu, a folosit un atac de suprapunere tampon, determinând Apple să adauge ASLR la iOS 4.3.
Suprasarcini de tampon necesită un atacator să știe unde fiecare parte a programului este localizată în memorie. Aflând acest lucru este de obicei un proces dificil de încercare și de eroare. După ce au stabilit acest lucru, trebuie să realizeze un volum util și să găsească un loc potrivit pentru a-l injecta. Dacă atacatorul nu știe unde este localizat codul țintă, poate fi dificil sau imposibil să îl exploatezi.
ASLR funcționează alături de gestionarea memoriei virtuale pentru a randomiza locațiile diferitelor părți ale programului din memorie. De fiecare dată când programul este rulat, componentele (inclusiv stiva, heap și biblioteci) sunt mutate la o altă adresă în memoria virtuală. Atacatorii nu mai pot afla unde ținta lor este prin încercare și eroare, deoarece adresa va fi diferită de fiecare dată. În general, aplicațiile trebuie să fie compilate cu asistență ASLR, dar aceasta devine implicită și este chiar necesară pe Android 5.0 și versiuni ulterioare.
Deci ASLR vă protejează încă?
Marțea trecută, cercetătorii de la SUNY Binghamton și de la Universitatea din California, Riverside, au prezentat o lucrare intitulată Jump Over ASLR: Predictorii care atacă filialele pentru a ocoli ASLR. Hârtia detaliază o modalitate de a ataca Buffer Target Buffer (BTB). BTB face parte din procesor care accelerează declarațiile prin prezicerea rezultatului. Folosind metoda autorilor, este posibil să se determine locațiile instrucțiunilor de ramură cunoscute într-un program care rulează. Atacul în cauză a fost efectuat pe o mașină Linux cu un procesor Intel Haswell (lansat pentru prima dată în 2013), dar ar putea fi aplicat la orice sistem de operare modern și procesor.
Acestea fiind spuse, nu trebuie disperat neapărat. Lucrarea a oferit câteva moduri în care dezvoltatorii de hardware și de sisteme de operare pot atenua această amenințare. Noile tehnici ASLR cu granulație fină ar necesita mai mult efort din partea atacatorului, iar creșterea cantității de entropie (aleatorie) poate face imposibilă atacul Jump Over. Cel mai probabil, noile sisteme de operare și procesoare vor fi imune la acest atac.
Deci, ce a rămas pentru tu a face? Abordarea Jump Over este nouă și nu a fost încă văzută în sălbăticie. Când atacatorii o exploatează, defectele vor crește potențialele daune pe care un atacator le poate provoca pe dispozitiv. Acest nivel de acces nu este fără precedent; Microsoft și Apple au implementat ASLR doar în sistemele de operare lansate în 2007 și ulterior. Chiar dacă acest stil de atac devine obișnuit, nu veți fi mai rău decât v-ați întors în zilele de Windows XP.
Rețineți că atacatorii încă mai trebuie să-și facă codul pe dispozitivul dvs. să facă rău. Acest defect nu le oferă alte căi de infectare. Ca întotdeauna, ar trebui să urmați cele mai bune practici de securitate. Utilizați antivirus, stați departe de site-uri web și programe și păstrați-vă software-ul actualizat. Urmând acești pași și păstrând actorii rău intenționați de pe calculatorul dvs., veți fi la fel de sigur ca și voi.
Credit de imagine: Steve / Flickr