RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2016, том 28, выпуск 5, страницы 55–72 (Mi tisp67)

Эта публикация цитируется в 1 статье

When stack protection does not protect the stack?

[Когда защита стека в компиляторах не срабатывает?]

Pavel Dovgalyuk, Vladimir Makarov

Novgorod State University

Аннотация: Основная часть уязвимостей в программах вызвана переполнением буфера. Чтобы предотвратить переполнение буфера и уменьшить ущерб от него используется безопасное программирование, аудит исходного кода, аудит бинарного кода, статические и динамические особенности кодогенерации. В современных компиляторах реализованы механизмы защиты, работающие на этапе компиляции и на этапе выполнения скомпилированной программы: переупорядочивание переменных, копирование аргументов и встраивание стековой канарейки. В статье описывается исследование, посвященное поиску недостатков в этих механизмах. Мы протестировали компиляторы MSVC, gcc и clang и обнаружили, что два из них содержат ошибки, позволяющие эксплуатировать переполнение буфера при определенных условиях.

Ключевые слова: переполнение буфера, стековая канарейка, gcc, msvc, clang.

Язык публикации: английский

DOI: 10.15514/ISPRAS-2016-28(5)-3



Реферативные базы данных:


© МИАН, 2024