Jump to content

Теневой стек

В компьютерной безопасности теневой стек — это механизм защиты процедуры сохраненного адреса возврата . [1] например, из-за переполнения буфера стека . Сам теневой стек — это второй, отдельный стек, который « затеняет программы » стек вызовов . В прологе функции функция сохраняет свой адрес возврата как в стеке вызовов, так и в теневом стеке. В эпилоге функции функция загружает адрес возврата как из стека вызовов, так и из теневого стека, а затем сравнивает их. Если две записи обратного адреса различаются, то обнаруживается атака; типичный вариант действий — просто закрыть программу или предупредить системных администраторов о возможной попытке вторжения. Теневой стек похож на канарейки стека в том, что оба механизма направлены на поддержание целостности потока управления защищенной программы путем обнаружения атак, которые подделывают сохраненный адрес возврата злоумышленником во время попытки эксплуатации .

Теневые стеки можно реализовать путем перекомпиляции программ с измененными прологами и эпилогами. [2] с помощью методов динамической двоичной перезаписи для достижения того же эффекта, [3] или с аппаратной поддержкой. [4] В отличие от стека вызовов, в котором также хранятся локальные переменные программы, переданные аргументы, нераспределенные регистры и другие данные, теневой стек обычно хранит только вторую копию адреса возврата функции.

Теневые стеки обеспечивают большую защиту адресов возврата, чем канарейки стека, которые полагаются на секретность значения канареек и уязвимы для атак с несмежной записью. [5] Сами теневые стеки можно защитить с помощью защитных страниц. [6] или со скрытием информации, так что злоумышленнику также потребуется найти теневой стек, чтобы перезаписать хранящийся там обратный адрес.

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

В 2016 году Intel объявила о предстоящей аппаратной поддержке теневых стеков с помощью своей технологии Control-flow Enforcement. [7]

Теневые стеки сталкиваются с некоторыми проблемами совместимости. После того, как программа выдает исключение или происходит longjmp , адрес возврата в верхней части теневого стека не будет соответствовать адресу возврата, полученному из стека вызовов. Типичное решение этой проблемы — извлекать записи из теневого стека до тех пор, пока не будет найден соответствующий адрес возврата, и завершать программу только тогда, когда совпадений в теневом стеке не найдено. [3]

программа Многопоточная , которая будет иметь стек вызовов для каждого выполняющегося потока, также будет иметь теневой стек, дублирующий каждый из стеков вызовов.

См. также

[ редактировать ]
  1. ^ Дельшадтехрани, Лейла; Элдридж, Шайлер; Чанакчи, Садулла; Эгеле, Мануэль; Джоши, Аджай (01 января 2018 г.). «Нил: программируемый сопроцессор мониторинга» . Письма IEEE по компьютерной архитектуре . 17 (1): 92–95. дои : 10.1109/LCA.2017.2784416 . ISSN   1556-6056 .
  2. ^ «StackShield: инструмент защиты от техники «разрушения стека» для Linux» . Продавец.
  3. ^ Jump up to: а б Синнадурай, Сараванан; Чжао, Цинь; Вонг, Вен Фай (2008). «Прозрачный теневой стек времени выполнения: защита от вредоносных модификаций обратного адреса» (PDF) .
  4. ^ Оздоганоглу, Х.; Бродли, К. ; Виджайкумар, Т.; Куперман, Б. (2006). «SmashGuard: аппаратное решение для предотвращения атак на адрес возврата функции» (PDF) . Транзакции IEEE на компьютерах . 55 (10): 1271–1285. дои : 10.1109/TC.2006.166 .
  5. ^ Секереш, Ласло; Пайер, Матиас ; Вэй, Тао; Песня, Рассвет (2003). «SoK: Вечная война в памяти» (PDF) . Симпозиум IEEE по безопасности и конфиденциальности : 48–63.
  6. ^ Чие, Цикер; Сюй, Фу-Хау (2001). «RAD: решение на этапе компиляции для защиты от атак переполнения буфера». Материалы 21-й Международной конференции по распределенным вычислительным системам . стр. 409–417. дои : 10.1109/ICDSC.2001.918971 . ISBN  0-7695-1077-9 . S2CID   32026510 .
  7. ^ «Обзор технологии обеспечения контроля потока управления» (PDF) . Корпорация Интел .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e0732a35c560d2dd46b33e10d48a3acb__1718413380
URL1:https://arc.ask3.ru/arc/aa/e0/cb/e0732a35c560d2dd46b33e10d48a3acb.html
Заголовок, (Title) документа по адресу, URL1:
Shadow stack - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)