(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ă îngrijorați?
Pentru cei fără fundal de programare la nivel scăzut, ASLR poate fi confuz. Pentru ao înțelege, trebuie să înțelegeți mai întâi 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 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 un hard disk 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 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 în privința locului în care alte programe stochează date sau câte 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.
Spațiul de adresă Randomization Layout Space (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 mult de date nedorite pe care le poate gestiona, urmată 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ă. Metoda renumită JailbreakMe de jailbreaking iOS 4, de exemplu, a folosit un atac de suprasarcină 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 o sarcină 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 într-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.
Marțea trecută, cercetătorii de la SUNY Binghamton și de la Universitatea din California, Riverside, au prezentat o lucrare numită 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. Utilizând metoda autorilor, este posibil să se determine locațiile instrucțiunilor de brevet 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 și procesor modern.
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 numai î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 Windows XP.
Rețineți că atacatorii trebuie să-și facă codul pe dispozitivul dvs. pentru a face rău. Acest defect nu le oferă alte căi de infectare. Ca întotdeauna, trebuie să urmați cele mai bune practici de securitate. Utilizați antivirus, nu vă abțineți de la site-uri web și programe și păstrați-vă software-ul actualizat. Urmând acești pași și ținând actorii rău intenționați de pe calculatorul dvs., veți fi la fel de siguri ca și voi.
Credit de imagine: Steve / Flickr