Съдържание:
Определение - Какво означава Stack Smashing?
Разбиването на стекове е форма на уязвимост, при която стекът на компютърно приложение или ОС е принуден да прелива. Това може да доведе до подриване на програмата / системата и до нейното сриване.
Стек, верига за първо влизане, е форма на буфер, съдържащ междинни резултати от операции в него. За да се опрости, разбиването на стека поставя повече данни в стека от капацитета му за задържане. Опитните хакери могат умишлено да въведат прекомерни данни в стека. Прекомерните данни може да се съхраняват в други променливи стека, включително връщащ адрес на функцията. Когато функцията се върне, тя прескача злонамерения код на стека, който може да повреди цялата система. Съседните данни в стека са засегнати и принуждават програмата да се срине.
Techopedia обяснява Stack Smashing
Ако програмата, засегната от разбиването на стека, приема данни от ненадеждни мрежи и работи със специални привилегии, става въпрос за уязвимост на сигурността. Ако буферът съдържа данни, предоставени от ненадежден потребител, стекът може да бъде повреден чрез инжектиране на изпълним код в програмата, като по този начин получи неправомерен достъп до компютър. Нападателят може да презапише информацията за контролния поток, съхранявана в стека.
Тъй като разбиването на стака прерасна в много сериозна уязвимост, някои технологии се прилагат за преодоляване на катастрофата за разрушаване на стека. Защитата от преливане на стек буфер променя организацията на данни в рамката на стека на функционално обаждане, за да включва канарски стойности. Тези стойности при унищожаване показват, че буфер, предхождащ него в паметта, е препълнен. Канарските стойности контролират буфера за препълване и се поставят между контролните данни и буфера в стека. Това гарантира, че буферното преливане повреди първо канала. Неуспешната проверка на данните от канарчетата означава преливане в стека. Трите типа канарки са Random, Terminator и Random XOR.
Канарът на терминатора се основава на факта, че атаката на препълване на буфер на стека зависи от низовите операции, завършващи на терминаторите. Случайни канарчета се генерират на случаен принцип от ентропийски събиращ демон, който не позволява на нападателите да знаят стойности. Случайни канари се генерират при инициализация на програмата и се съхраняват в глобални променливи. Случайните канали XOR са случайни носители, които се кодират с XOR, използвайки контролни данни. Той е подобен на случайните канарчета, само че методът "четене от стека" за получаване на канарчето е сложен. Хакерът се нуждае от данни от канала, алгоритъм и контрол, за да произведе оригиналния канар. Те предпазват от атаки, включващи преливащи буфери в структурата в указатели, за да променят показалеца, за да насочат към част от контролните данни.
