|
Эта публикация цитируется в 1 научной статье (всего в 1 статье)
When stack protection does not protect the stack?
[Когда защита стека в компиляторах не срабатывает?]
Pavel Dovgalyuk, Vladimir Makarov Novgorod State University
Аннотация:
Основная часть уязвимостей в программах вызвана переполнением буфера. Чтобы предотвратить переполнение буфера и уменьшить ущерб от него используется безопасное программирование, аудит исходного кода, аудит бинарного кода, статические и динамические особенности кодогенерации. В современных компиляторах реализованы механизмы защиты, работающие на этапе компиляции и на этапе выполнения скомпилированной программы: переупорядочивание переменных, копирование аргументов и встраивание стековой канарейки. В статье описывается исследование, посвященное поиску недостатков в этих механизмах. Мы протестировали компиляторы MSVC, gcc и clang и обнаружили, что два из них содержат ошибки, позволяющие эксплуатировать переполнение буфера при определенных условиях.
Ключевые слова:
переполнение буфера, стековая канарейка, gcc, msvc, clang.
Образец цитирования:
Pavel Dovgalyuk, Vladimir Makarov, “When stack protection does not protect the stack?”, Труды ИСП РАН, 28:5 (2016), 55–72
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp67 https://www.mathnet.ru/rus/tisp/v28/i5/p55
|
|