Sunday, February 1, 2009

Stack overrun

Aici se face diferenta intre stack overrun si stack overflow. Stack overflow e atunci cand spatiul alocat de OS programului pentru stiva este depasit, de obicei prin recursivitate infinita sau prin definiri de variabile locale prea mari. Stack overrun e un caz de depasire a bufferului si inseamna ca se aloca un buffer pe stiva unei functii iar datele venite din exterior sunt mai mari decat spatiul destinat bufferului ajungand sa suprascrie alte portiuni de stiva, cum ar fi adresa de revenire. Un atac stack overrun se realizeaza apeland o astfel de functie cu un parametru care va suprascrie peste adresa de revenire salvata de program adresa unui cod dorit de atacator (de exemplu un shellcode care permite atacatorului sa preia controlul masinii). Wikipedia numeste stack overrun stack buffer overflow

No comments: