În fiecare zi, hackerii din întreaga lume descoperă și exploatează noi vulnerabilități în site-uri web, aplicații și chiar arhitectura sistemului. Un lucru obișnuit la toate dispozitivele electronice, vechi sau noi, este că sunt rulate de programe care sunt stocate în memorie. Hackerii au exploatat acest lucru și au găsit vulnerabilități cunoscute sub numele de depășiri de buffer.
Deși nu sunt noi, atacurile și vulnerabilitățile de depășire a tamponului au făcut ravagii în spațiul cibernetic. Aici, vă vom explica ce sunt atacurile de buffer overflow și cum le puteți preveni.
Înțelegerea memoriei tampon și a memoriei de sistem
Pentru a înțelege ce este un atac de buffer overflow și cum funcționează, trebuie să știți ce este un buffer și cum funcționează memoria unui computer.
Stack și heap memorie sunt două caracteristici principale ale memoriei unui computer. Sunt structuri de date utilizate pentru alocarea memoriei. Deși sunt asemănătoare, memoria stivă și memoria heap diferă în mai multe moduri.
Stiva, care folosește conceptul Last-in, First-out (LIFO), este folosită în RAM (memoria cu acces aleatoriu) pentru a stochează execuțiile programului temporar, în timp ce heap-ul alocă memorie folosind alocarea dinamică la global variabile. Dar singurul lucru pe care îl au în comun este un tampon.
Ce este un tampon?
Un buffer este o regiune de memorie folosită pentru a stoca date, cel mai probabil în memoria RAM a unui computer, în timp ce acesta este mutat dintr-o locație în alta. Aceste date sunt de obicei programe care trebuie executate. Tampoanele sunt stocate în stivă sau în heap. Ele optimizează execuția datelor.
Ce este un buffer overflow?
O depășire a memoriei tampon are loc atunci când tamponul primește mai multe date decât capacitatea sa de stocare. Deoarece nu poate procesa acea cantitate de date, se revarsă.
Acum, în memoria unui computer, imediat după un buffer sau un spațiu tampon este o adresă de retur. Această adresă de retur se numește de fapt un indicator de instrucțiuni extinse (EIP). Funcția sa este de a direcționa computerul către un program specificat atunci când este completat. Când un buffer are mai multe date decât poate reține și se revarsă, se revarsă în adresa de retur.
Pentru a înțelege acest lucru, să presupunem că aveți un spațiu tampon care poate conține doar cinci litere. Deci, dacă completați cuvinte precum „zahăr” sau „pace”, fluxul tampon îl poate conține. Dar atunci când aveți un cuvânt precum „autentificare”, acesta se va revărsa inevitabil. Acest lucru duce la o eroare sau o blocare a sistemului. Dar hackerii pot exploata această vulnerabilitate pentru a începe un atac de depășire a tamponului.
Ce este un atac de depășire a tamponului și cum funcționează?
Atacurile de depășire a tamponului au loc atunci când hackerul preia controlul asupra adresei de retur sau EIP. Când atacatorul știe dimensiunea memoriei unui sistem, poate scrie intenționat date în acel sistem doar pentru a le depăși. Apoi se asigură că adresa EIP sau de retur este scrisă pentru a indica un program care le poate oferi acces la sistem sau dezvăluie informații sensibile stocate în sistem.
Atacatorul poate chiar să scrie unele date care conțin cod rău intenționat și să provoace depășirea tamponului. EIP este apoi scris pentru a redirecționa sistemul înapoi la codul rău intenționat și este făcut să ruleze. Apoi, hackerul preia controlul asupra sistemului.
Există cinci pași majori în atacurile de depășire a tamponului:
- Spiking
- Fuzzing
- Găsirea decalajului
- Suprascrierea EIP sau adresa de retur
- Exploatarea vulnerabilității
Spikingul este primul pas. Aici, hackerii găsesc partea din memoria programului care este vulnerabilă la depășirile de buffer. Apoi vine fuzzing, care este similar cu spiking, dar aici, hackerul trimite caractere la program pentru a vedea dacă poate fi rupt. Odată ce a reușit, atacatorul continuă să găsească offset-ul, care este locul în care tamponul a debordat. Acest lucru se face pentru a cunoaște dimensiunea bufferului și adresa de retur. Apoi, hackerul introduce un cod shell rău intenționat și controlează sistemul.
Care sunt tipurile de atacuri de buffer overflow?
Există două tipuri principale de atacuri de buffer overflow: atacuri bazate pe stivă și atacuri bazate pe heap.
1. Atacurile de depășire a tamponului bazate pe stivă
Atacurile de depășire a tamponului bazate pe stivă sunt cel mai popular tip de atacuri de depășire a tamponului. Acestea apar atunci când memoria stivă a sistemului este depășită și exploatată. Este, de asemenea, cunoscut sub numele de spargerea stivei.
2. Atacurile de depășire a memoriei tampon bazate pe heap
Acest tip de depășire a stivei nu este foarte comun, deoarece este dificil de implementat și exploatat. Apare atunci când memoria alocată unui program depășește. În ianuarie 2021, Google a descoperit o depășire a memoriei tampon bazată pe heap vulnerabilitate în componenta V8 a Chrome.
Cum puteți preveni atacurile de depășire a tamponului?
Atacurile de depășire a memoriei tampon pot fi atenuate utilizând protecțiile de rulare ale sistemului de operare, limbaje de programare securizate, randomizarea spațiului de adrese și asigurarea măsurilor generale de securitate adecvate.
1. Utilizarea OS Runtime Protection
Protecția runtime este cunoscută și sub denumirea de verificare a limitelor matricei de rulare. Acest lucru asigură că fiecare program rulat se află în spațiul tampon sau în memoria disponibilă. Și verifică toate datele scrise în memoria sistemului. Acest lucru face dificil pentru hackeri să suprascrie datele în sistem și să exploateze vulnerabilitatea.
2. Utilizarea limbajelor de programare securizate
Limbajele de programare precum C și C++ nu implementează verificarea limitelor matricei de rulare, deoarece este nevoie de cod suplimentar pentru a verifica fiecare program scris în sistem și îl încetinește. Prin urmare, sunt mai susceptibili la atacurile de depășire a tamponului. Folosirea unor limbaje mai sigure, cum ar fi C#, Java și Python, este mai bună, deoarece prezintă un risc mai mic de atacuri de depășire a memoriei tampon.
3. Utilizați randomizarea aspectului spațiului de adrese (ASLR)
Această măsură de securitate atribuie aleatoriu adresele programelor și funcțiilor din memoria unui sistem diferitelor regiuni de date. Îngreunează navigarea unui atacator prin funcțiile sensibile din memorie.
4. Asigurați politici stricte de securitate
Aceasta implică menținerea sistemului actualizat în mod regulat, validarea tuturor datelor scrise în sistem și atribuirea celor mai puține privilegii utilizatorilor. Cu politicile de securitate adecvate, nu ar trebui să vă faceți griji cu privire la un atac de depășire a tamponului.
Menținerea securității este esențială pentru a combate atacurile de depășire a tamponului
Potrivit unei vorbe populare din securitate, „atâta timp cât un sistem este folosit de oameni, există o vulnerabilitate”, ceea ce este adevărat și inevitabil. Cu toate acestea, se pot reduce întotdeauna șansele de atac, asigurându-se că măsurile de securitate adecvate sunt aplicate și respectate cu strictețe.
Amintiți-vă că hackerii găsesc în mod constant noi modalități de a exploata vulnerabilități precum aceasta. Prin urmare, depinde de tine să fii în fața lor, fiind cu ochii pe cele mai recente progrese în domeniul securității cibernetice.