Введение
Глава 1. Обзор работ 9
1.1 Механизмы противодействия эксплуатации уязвимостей 9
1.1.1 Рандомизация размещения адресного пространства (ASLR) 9
1.1.2 Предотвращение выполнения данных (DEP) 10
1.1.3 «Канарейка» 11
1.1.4 Fortify source 12
1.1.5 Защита времени загрузки 13
1.1.6 Защита обработчиков исключений в Windows (SafeSEH) 13
1.1.7 Анализ современных дистрибутивов ОС Linux на предмет защищенности исполняемых файлов 15
1.2 Средства оценки эксплуатируемости программных дефектов 16
1.2.1 Средства анализа аварийных завершений 17
1.2.2 Средства автоматической генерации эксплойтов 21
1.3 Выводы 25
Глава 2. Оценка эксплуатируемости программных дефектов 28
2.1 Метод предварительной фильтрации аварийных завершений. 29
2.1.1 Классы аварийных завершений 32
2.1.2 Анализ аварийных завершений 36
2.1.3 Взаимосвязь между дефектами и классами аварийных завершений 37
2.2 Метод автоматической генерации эксплойтов 39
2.2.1 Определение точек получения входных данных 40
2.2.2 Определение точки аварийного завершения 41
2.3 Предикат пути 43
2.3.1 Выделение подтрассы 45
2.3.2 Трансляция в промежуточное представление 46
2.3.3 Интерпретация промежуточного представления 52
2.3.4 Построение символьных формул
2.3.5 Недостаточная и избыточная помеченности 55
2.4 Предикат безопасности 56
Глава 3. Реализация системы оценки эксплуатируемости дефектов 65
3.1 Система предварительной фильтрации аварийных завершений 66
3.2 Система автоматической генерации эксплойтов
3.2.1 Подсистема поиска точек получения входных данных 70
3.2.2 Подсистема поиска точки аварийного завершения 71
3.2.3 Подсистема построения предиката пути 72
3.2.4 Подсистема построения предиката безопасности 73
3.3 Технические ограничения 74
Глава 4. Применение 76
4.1 Оценка эксплуатируемости результатов фаззинга 76
4.2 Оценка эксплуатируемости дефектов из доступных источников 77
4.3 Оценка эксплуатируемости программ из DARPA Cyber Grand Challenge 79
4.4 Оценка эксплуатируемости модельных примеров 80
Заключение 82
Список литературы


