Ce este un buffer overflow?

O depășire a memoriei tampon are loc atunci când un program încearcă să scrie într-un tampon și iese în afara granițelor acestuia, rezultând în scrierea informațiilor programului în memorie care aparține potențial unui alt program. Acest lucru încalcă integritatea memoriei în sistemul de operare, ducând la o eroare gravă și la o posibilă blocare a programului care se execută. Pericolul major al depășirii tamponului provine din două elemente majore. În primul rând, informațiile scrise în afara memoriei tampon sunt aparent „pierdute”, deoarece harta de memorie a computerului – lista sa de locații de memorie – nu poate explica. În al doilea rând, o depășire a memoriei tampon poate suprascrie accidental informațiile stocate în memorie pentru un alt program, interferând efectiv și cu execuția altui program.

Un „buffer” este o regiune de memorie folosită ca locație de stocare temporară în timp ce computerul transferă informații dintr-un punct în altul. Cea mai obișnuită utilizare a unui buffer este de obicei în redarea video sau audio, în cazul în care computerul indică încă X secunde de filmare sau audio în memorie, asigurându-se că redarea nu va fi întreruptă dacă ceva nu merge temporar pe sistem. Un buffer există doar într-o locație specifică, predeterminată din memoria computerului, la fel ca o țară există doar în limitele trasate pe o hartă. Ieșirea în afara acestor „linii” virtuale are ca rezultat probleme nu numai pentru programul care rulează, ci și pentru alte programe din sistem.

În esență, programul a ieșit în afara jurisdicției sale atribuite și a invadat spațiul altui program de lucru. Odată ce se întâmplă acest lucru, informațiile scrise în afara tamponului cad efectiv de pe harta computerului; cu alte cuvinte, sistemul nu mai are nicio modalitate de a-l recupera. Întrucât computerul „știe” doar să caute informații stocate în spațiul tampon specific alocat în memorie, nu are nicio modalitate de a afla unde au ajuns informațiile depășite.

În plus, o depășire a memoriei tampon are potențialul de a perturba alte programe care rulează pe computer. Imaginați-vă că spațiul de stocare în memorie de pe ambele părți ale buffer-ului a fost deja alocat altor programe care rulează. Odată ce informațiile din buffer trec dincolo de zona proiectată, va suprascrie și va deteriora orice informații deja stocate în acele secțiuni de memorie. Prin urmare, o depășire a memoriei tampon este o problemă care poate submina eficacitatea unui program adiacent, precum și poate deteriora propria funcționare.