Cuprins:
Definiție - Ce înseamnă Stack Smashing?
Stack smashing este o formă de vulnerabilitate în care stiva unei aplicații de calculator sau a unui sistem de operare este forțată să se revină. Acest lucru poate duce la inversarea programului / sistemului și blocarea acestuia.
O stivă, un prim circuit din ultima ieșire, este o formă de tampon care conține rezultate intermediare ale operațiunilor din cadrul acestuia. Pentru a simplifica, zdrobirea stivă punând mai multe date într-o stivă decât capacitatea sa de deținere. Hackerii pricepuți pot introduce în mod efectiv date excesive în stivă. Datele excesive pot fi stocate în alte variabile de stivă, inclusiv adresa de retur a funcției. Când funcția se întoarce, acesta sare la codul rău intenționat al stivei, ceea ce ar putea strică întregul sistem. Datele adiacente de pe stivă sunt afectate și forțează programul să se prăbușească.
Techopedia explică Stack Smashing
Dacă programul afectat de zdrobirea stivei acceptă date din rețele de încredere și rulează cu privilegii speciale, este un caz de vulnerabilitate a securității. Dacă bufferul conține date furnizate de un utilizator neîncredut, stiva poate fi coruptă prin injectarea codului executabil în program, obținând astfel acces neautorizat la un computer. Un atacator poate de asemenea să suprascrie informațiile despre fluxul de control stocat în stivă.
Deoarece zdrobirea stivei a devenit o vulnerabilitate foarte serioasă, anumite tehnologii sunt puse în aplicare pentru a depăși dezastrul de zdrobire a stivei. Protecția de reîncărcare a bufferului de stivă modifică organizarea datelor din cadrul stivei unui apel funcțional pentru a include valori canare. Aceste valori atunci când sunt distruse indică faptul că un tampon precedent în memorie a fost revărsat. Valorile canare monitorizează revărsările de buffer și sunt plasate între datele de control și tamponul pe stivă. Acest lucru asigură că un preaplin de tampon corupe canarul mai întâi. O verificare eșuată a datelor canare semnifică un overflow în stivă. Cele trei tipuri de canari sunt Random, Terminator și Random XOR.
Canarul terminatorului se bazează pe faptul că atacul de reîncărcare a tamponului de stivă depinde de operațiile de șir care se termină la terminatoare. Canarele aleatorii sunt generate la întâmplare dintr-un demon care adună entropie, ceea ce împiedică atacatorii să cunoască valorile. Canarele aleatorii sunt generate la inițializarea programului și sunt stocate în variabile globale. Canarele aleatoare ale XOR sunt purtători aleatori care sunt XOR zgâriați folosind date de control. Este similar cu canarele aleatorii, cu excepția faptului că „metoda citită din stivă” pentru a obține canarul este complexă. Hackerul are nevoie de datele canare, algoritm și control pentru a produce canarul original. Acestea protejează împotriva atacurilor care implică buffer-uri de revărsare într-o structură în indicatoare pentru a schimba indicatorul pentru a puncta o bucată de date de control.
