Kas yra kamino buferio perpildymas?

Stack buferio perpildymas yra tai, kas atsitinka, kai programa į kompiuterio atmintį įveda ilgesnį laiką nei skirta vieta. Tam tikromis aplinkybėmis tai gali sugadinti kitus atminties duomenis ir sukelti kompiuterio veikimo problemų. Kitais atvejais kenkėjiška programa gali išnaudoti dėklo buferio perpildymą, kad perimtų kitų kompiuterio dalių valdymą.

Krūvos buferio perpildymo pavadinimas pirmiausia kilęs iš dėklo, kuris iš esmės yra aktyvus sąrašas, kuriame tvarkomi duomenys: terminas kilęs iš fizinių elementų kaupimo analogijos. Viena iš to versijų, skambučių krūva, yra sąrašas, kurį kompiuterio programa naudoja tam, kad sektų įvairias programos dalis, paprogrames, kurios veikia bet kuriuo konkrečiu momentu. Kadangi skambučių krūva veikia laikinai ir ją reikia greitai pasiekti, ji yra kompiuterio atmintyje, o ne nuolatinėje saugykloje, pavyzdžiui, standžiajame diske.

Kadangi šiuolaikinės operacinės sistemos leidžia vienu metu paleisti kelias programas, reikia organizuoti atminties paskirstymo būdą, įskaitant iškvietimų krūvas. Tai atliekama efektyviai priskiriant buferius – vietos atmintyje, kuri yra pakankamai didelė, kad galėtų susidoroti su maksimalia tam tikram buferiui reikalingu vietos kiekiu. Daugeliu atvejų dalis vietos bus nenaudojama, todėl ji veikia kaip buferis tarp skirtingų programų duomenų, paliekant vietos susitvarkyti, jei staiga prireiks papildomos vietos. Vienas iš būdų tai įsivaizduoti būtų galvoti apie biblioteką, kurioje kiekvienai dalykinei sričiai būtų skirta tam tikra erdvė, paliekant šiek tiek papildomos erdvės, jei, pavyzdžiui, visos knygos viena tema būtų bibliotekoje. tuo pačiu metu, o ne bet kuris iš jų būtų patikrintas.

Krūvos buferio perpildymas įvyksta, kai programa įrašo iškvietimų dėklo duomenis į buferį tokiu būdu, kuris viršija skirtą vietą. Tai gali atsitikti per klaidą, dažniausiai dėl programos klaidos. Pavyzdžiui, jei programa sukurta taip, kad vartotojas galėtų įvesti telefono numerį, bet neribojamas įvestų simbolių skaičius, įsilaužėlis gali naudoti neribotą lauką, kad tyčia sukeltų kamino buferio perpildymą. . Atsižvelgiant į operacinės sistemos veikimo būdą, įsilaužėlis gali netiesiogiai pasiekti kitą programą arba pačią operacinę sistemą.

Yra keletas būdų, kaip sumažinti krūvos buferio perpildymo poveikį. Vienas iš jų yra žinomas kaip adresų erdvės išdėstymo atsitiktinumas. Taip atsitiktinai sutvarkomos svarbiausios duomenų sritys kompiuteryje. Idėja yra tokia, kad net jei įsilaužėlis sukelia arba išnaudoja dėklo buferio perpildymą, jis negalės patikimai išnaudoti pažeidimo.