Kas yra buferio perpildymas?

Buferio perpildymas įvyksta, kai programa bando įrašyti į buferį ir išeina už jo ribų, todėl programa įrašo informaciją į atmintį, kuri galbūt priklauso kitai programai. Tai pažeidžia operacinės sistemos atminties vientisumą, todėl gali atsirasti rimta klaida ir vykdomos programos gedimas. Pagrindinis buferio perpildymo pavojus kyla dėl dviejų pagrindinių elementų. Pirma, informacija, parašyta už buferio ribų, tariamai „prarandama“, nes kompiuterio atminties žemėlapis – jo atminties vietų sąrašas – negali to atsižvelgti. Antra, buferio perpildymas gali netyčia perrašyti kitos programos atmintyje saugomą informaciją, veiksmingai trukdydamas vykdyti ir kitą programą.

„Buferis“ yra atminties sritis, naudojama kaip laikina saugojimo vieta, kol kompiuteris perduoda informaciją iš vieno taško į kitą. Dažniausiai buferis naudojamas atkuriant vaizdo ar garso įrašą, kai kompiuteris atmintyje įrašo papildomas X sekundes filmuotos medžiagos ar garso, užtikrindamas, kad atkūrimas nebus pertrauktas, jei sistemoje kas nors laikinai atsirastų. Buferis egzistuoja tik konkrečioje, iš anksto nustatytoje kompiuterio atminties vietoje, panašiai kaip šalis egzistuoja tik žemėlapyje nubrėžtose ribose. Išeinant už šių virtualių „linijų“ kyla problemų ne tik veikiančiai programai, bet ir kitoms sistemos programoms.

Iš esmės programa išėjo už jai priskirtos jurisdikcijos ribų ir įsiveržė į kitos darbo programos erdvę. Kai tai įvyksta, informacija, parašyta už buferio ribų, iškrenta iš kompiuterio žemėlapio; kitaip tariant, sistema nebeturi jokio būdo jos gauti. Kadangi kompiuteris tik „moka“ ieškoti buferinės informacijos konkrečioje atmintyje skirtoje buferio erdvėje, jis negali išsiaiškinti, kur dingo perpildyta informacija.

Be to, buferio perpildymas gali sutrikdyti kitas kompiuteryje veikiančias programas. Įsivaizduokite, kad atminties vieta abiejose buferio pusėse jau priskirta kitoms veikiančioms programoms. Kai tik informacija buferyje nutekės už suplanuotos srities, ji perrašys ir sugadins visą informaciją, jau saugomą tose atminties dalyse. Todėl buferio perpildymas yra problema, kuri gali pakenkti gretimos programos veiksmingumui ir sugadinti jos pačios veikimą.