Дом аудио Что такое разрушение стека? - определение из техопедии

Что такое разрушение стека? - определение из техопедии

Оглавление:

Anonim

Определение - что означает Stack Smashing?

Разрушение стека - это форма уязвимости, когда стек приложения компьютера или ОС вынужденно переполняется. Это может привести к подрыву программы / системы и ее поломке.


Стек, схема «первым пришел - последним вышел», является формой буфера, содержащего промежуточные результаты операций внутри него. Чтобы упростить, разбить стек, поместив в стек больше данных, чем его вместимость. Опытные хакеры могут сознательно вводить избыточные данные в стек. Избыточные данные могут храниться в других переменных стека, включая адрес возврата функции. Когда функция возвращается, она переходит к вредоносному коду в стеке, который может повредить всю систему. Это влияет на соседние данные в стеке и приводит к сбою программы.

Техопедия объясняет, как разбить стек

Если программа, подверженная разрушению стека, принимает данные из ненадежных сетей и запускается со специальными привилегиями, это случай уязвимости безопасности. Если в буфере содержатся данные, предоставленные ненадежным пользователем, стек может быть поврежден путем введения исполняемого кода в программу, тем самым получая несанкционированный доступ к компьютеру. Злоумышленник также может перезаписать информацию о потоке управления, хранящуюся в стеке.


Поскольку разрушение стека переросло в очень серьезную уязвимость, для преодоления катастрофического разрушения стека применяются определенные технологии. Защита от переполнения буфера стека изменяет организацию данных в кадре стека при вызове функции, чтобы включить канареечные значения. Эти значения при уничтожении указывают, что предшествующий ему буфер в памяти был переполнен. Канарские значения отслеживают переполнение буфера и помещаются между управляющими данными и буфером в стеке. Это гарантирует, что переполнение буфера сначала повредит канарейку. Неудачная проверка канарских данных означает переполнение в стеке. Три типа канарейки: случайный, терминатор и случайный XOR.


Канарский терминатор основан на том факте, что атака переполнения стекового буфера зависит от строковых операций, заканчивающихся на терминаторах. Случайные канарейки генерируются случайным образом из демона сбора энтропии, который не позволяет злоумышленникам узнать значения. Случайные канарейки генерируются при инициализации программы и хранятся в глобальных переменных. Случайные XOR канарейки - это случайные носители, которые XOR скремблируют с использованием контрольных данных. Это похоже на случайные канарейки за исключением того, что «метод чтения из стека» для получения канарейки является сложным. Хакеру нужны канарейка, алгоритм и контрольные данные для создания оригинальной канарейки. Они защищают от атак, включающих переполнение буферов в структуре в указатели, чтобы изменить указатель так, чтобы он указывал на часть контрольных данных.

Что такое разрушение стека? - определение из техопедии