Ce este o depășire a tamponului stivei?

O depășire a bufferului de stivă este ceea ce se întâmplă atunci când un program face o intrare în memoria unui computer care este mai lungă decât spațiul alocat. În unele circumstanțe, acest lucru poate corupe alte date din memorie, cauzând probleme în funcționarea computerului. În alte cazuri, o depășire a tamponului de stivă poate fi exploatată de o aplicație rău intenționată pentru a prelua controlul asupra altor părți ale computerului.

Numele unui buffer overflow de stivă derivă mai întâi de la stivă, care este efectiv o listă activă în care sunt organizate datele: termenul provine din analogia adunării elementelor fizice. O versiune a acesteia, stiva de apeluri, este lista pe care un program de calculator o folosește pentru a ține evidența diferitelor părți ale programului, subrutinele, care funcționează la un anumit moment. Întrucât stiva de apeluri funcționează temporar și trebuie accesată rapid, se află mai degrabă în memoria computerului decât în ​​stocarea permanentă, cum ar fi hard disk-ul.

Deoarece sistemele de operare moderne permit rularea simultană a mai multor programe, este necesar să se organizeze modul în care este alocată memoria, inclusiv pentru stivele de apeluri. Acest lucru se realizează eficient prin alocarea de buffer-uri, un spațiu în memorie conceput să fie suficient de mare pentru a face față spațiului maxim necesar unui anumit buffer. În cele mai multe cazuri, o parte din spațiu va fi nefolosit, așa că acționează ca un buffer între datele din diferite aplicații, lăsând spațiu pentru a face față dacă cineva necesită brusc spațiu suplimentar. O modalitate de a-l vizualiza ar fi să ne gândim la o bibliotecă care a alocat o anumită cantitate de spațiu fiecărei discipline, asigurându-vă că lăsați un spațiu suplimentar pentru a face față dacă, de exemplu, toate cărțile despre un subiect se aflau în bibliotecă la în același timp, mai degrabă decât ca oricare dintre ele să fie verificat.

O depășire a memoriei tampon de stivă are loc atunci când un program scrie date despre stiva de apeluri în tampon într-un mod care depășește spațiul alocat. Acest lucru se poate întâmpla din greșeală, de obicei printr-o eroare într-un program. De exemplu, dacă o aplicație este concepută pentru a permite utilizatorului să introducă un număr de telefon, dar nu are limită pentru numărul de caractere care pot fi introduse, un hacker poate folosi câmpul nelimitat pentru a provoca în mod intenționat o depășire a memoriei tampon a stivei. . În funcție de modul în care funcționează sistemul de operare, acest lucru ar putea permite hackerului să acceseze indirect fie o altă aplicație, fie sistemul de operare însuși.

Există mai multe abordări pentru a atenua efectele depășirii buffer-ului stivei. Una este cunoscută sub denumirea de randomizare a aspectului spațiului de adrese. Aceasta aranjează cele mai importante zone de date de pe computer într-un mod aleatoriu. Ideea este că, chiar dacă un hacker provoacă sau exploatează o depășire a bufferului stivei, el nu va putea exploata încălcarea într-un mod fiabil.