Кіріспе

Бағдарламалық аномалия
Жинаққа шабуыл, үйіндіге шабуыл немесе үйіндінің бұзылуы – бұл үйінді деректер аймағында пайда болатын буферлік ағып кету түрі. Жинақталған ағып кетулер стекке негізделген ағып кетулерден өзгеше жолмен пайдаланылады. Жинақтағы жад орындалу кезінде динамикалық түрде бөлінеді және әдетте бағдарлама деректерін қамтиды. Пайдалану осы деректерді белгілі бір жолдармен бұрмалау арқылы жүзеге асырылады, нәтижесінде қосымша ішкі құрылымдарды, мысалы, тізімдегі сілтемелерді қайта жазады. Стандартты жинақталған шабуыл әдісі динамикалық жадты бөлу байланысын (мысалы, malloc метадеректері) жазады және бағдарлама функциясының меңзерін жаза үшін алынған меңзер алмасуын пайдаланады. Мысалы, Linux-тың ескі нұсқаларында, жинақта бір-біріне жақын орналасқан екі буфердің біріншісі екінші буфердің метадеректерін жаза алуы мүмкін. Екінші буфердің қолданылып жатқан битін нөлге орнату және ұзындығын нөлдік байттарды көшіруге мүмкіндік беретін кішкентай теріс мәнге орнату арқылы, бағдарлама бірінші буферді босатуды шақырғанда, бұл екі буферді біріктіруге тырысады. Бұл орын алғанда, босатылған деп есептелетін буферде бұрын бөлінген буфердің алғашқы 8 байтында FD және BK екі меңзері болады деп күтіледі. BK, FD-ге жазылады және меңзерді жаза үшін қолданылуы мүмкін.

Салдарлар

Кездейсоқ ағып кету салдарынан әсер еткен жад аймағына қол жеткізетін кез келген процестің деректері бұзылуы немесе күтпеген әрекеттерге ұшырауы мүмкін. Жадты қорғау механизмі жоқ операциялық жүйелерде, бұл жүйедегі кез келген процесс болуы мүмкін. Мысалы, Microsoft JPEG GDI+ буферлік ағып кетуінің осалдығы зардап шеккен құрылымда кодты қашықтан орындауға мүмкіндік береді. iOS құрылғысын jailbreak арқылы бұзу көбінесе кез келген кодты орындау үшін үйінділік ағып кетулерді пайдаланады.