Što je prelijevanje međuspremnika staka?

Prelijevanje međuspremnika stoga je ono što se događa kada program napravi unos u memoriju računala koji je duži od dodijeljenog prostora. U nekim okolnostima to može oštetiti druge podatke u memoriji, uzrokujući probleme u radu računala. U drugim slučajevima zlonamjerna aplikacija može iskoristiti prekoračenje međuspremnika stoga kako bi preuzela kontrolu nad drugim dijelovima računala.

Naziv iz preljeva međuspremnika stoga prvo potječe od steka, koji je zapravo aktivni popis u kojem su organizirani podaci: pojam dolazi iz analogije gomilanja fizičkih stavki. Jedna verzija ovoga, stog poziva, je popis koji računalni program koristi za praćenje različitih dijelova programa, potprograma, koji rade u bilo kojem određenom trenutku. Budući da stog poziva radi na privremenoj osnovi i potrebno mu je brzo pristupiti, nalazi se u memoriji računala, a ne u trajnoj pohrani kao što je tvrdi disk.

Budući da moderni operativni sustavi dopuštaju izvođenje više programa odjednom, postoji potreba za organiziranjem načina na koji se memorija dodjeljuje, uključujući i za pozivanje stogova. To se postiže učinkovito dodjeljivanjem međuspremnika, prostora u memoriji koji je dizajniran da bude dovoljno velik da se nosi s maksimalnim prostorom koji je potreban za određeni međuspremnik. U većini slučajeva dio prostora će biti neiskorišten, tako da djeluje kao međuspremnik između podataka iz različitih aplikacija, ostavljajući prostor da se nosi ako netko iznenada zatreba dodatni prostor. Jedan od načina da se to vizualizira bilo bi razmišljanje o knjižnici koja je dodijelila određenu količinu prostora svakom predmetnom području, pazeći da ostavite malo dodatnog prostora za rješavanje problema ako su, na primjer, sve knjige o jednoj temi bile u knjižnici u u isto vrijeme, umjesto da se bilo koji od njih odjavi.

Prelijevanje međuspremnika stoga događa se kada program zapisuje podatke o stogu poziva u međuspremnik na način koji premašuje dodijeljeni prostor. To se može dogoditi greškom, obično zbog greške u programu. Na primjer, ako je aplikacija dizajnirana tako da korisniku omogući upisivanje telefonskog broja, ali nema ograničenja u broju znakova koji se mogu unijeti, haker će možda moći koristiti neograničeno polje da namjerno izazove prelijevanje međuspremnika u stogu. . Ovisno o načinu na koji operativni sustav radi, to bi hakeru moglo omogućiti neizravan pristup bilo drugoj aplikaciji ili samom operacijskom sustavu.

Postoji nekoliko pristupa za ublažavanje učinaka prekoračenja međuspremnika steka. Jedna je poznata kao randomizacija rasporeda adresnog prostora. Time se najvažnija područja podataka na računalu raspoređuju na nasumičan način. Ideja je da čak i ako haker izazove ili iskoristi prelijevanje međuspremnika steka, neće moći iskoristiti proboj na pouzdan način.