Оглавление
Стр.
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Глава 1. Задача выявления поверхности атаки веб-приложения при
поиске уязвимостей методом “чёрного ящика” . . . . . . . . . . 10
1.1 Задача выявления серверных входных точек . . . . . . . . . . . . . 12
1.2 Обзор существующих методов . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 Динамический анализ . . . . . . . . . . . . . . . . . . . . . . 16
1.2.2 Статический анализ . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.3 Сравнительный анализ методов . . . . . . . . . . . . . . . . 21
1.3 Выводы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Глава 2. Исследование особенностей реального JavaScript-кода . . . . . 29
2.1 Корпус кода для исследования . . . . . . . . . . . . . . . . . . . . . 30
2.2 Метод исследования . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Выделенные особенности кода . . . . . . . . . . . . . . . . . . . . . 31
2.4 Эталонный набор веб-страниц . . . . . . . . . . . . . . . . . . . . . 36
2.5 Выводы и требования к инструментам . . . . . . . . . . . . . . . . . 40
Глава 3. Методика поиска уязвимостей с использованием
статического анализа клиентского JavaScript-кода . . . . . . . 42
3.1 Сбор информации об анализируемом приложении . . . . . . . . . . 42
3.2 Поиск уязвимостей . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3 Примеры применения методики для анализа приложений
методом “чёрного ящика” . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4 Выводы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Глава 4. Метод анализа клиентского кода веб-приложения для
обнаружения серверных входных точек . . . . . . . . . . . . . . 48
4.1 Построение графа вызовов и сбор возможных значений . . . . . . . 50
4.1.1 Обработка AST-вершин . . . . . . . . . . . . . . . . . . . . . 56
4.1.2 Алгоритм вычисления выражений . . . . . . . . . . . . . . . 69
4.2 Поиск AJAX-вызовов и их аргументов . . . . . . . . . . . . . . . . 78
4.2.1 Aнализ цепочек вызова, ведущих к AJAX-вызовам . . . . . 81
3
Стр.
4.3 Формирование спецификаций HTTP-запросов . . . . . . . . . . . . 85
4.4 Анализ закомментированного клиентского кода . . . . . . . . . . . 87
4.5 Особенности реализации метода . . . . . . . . . . . . . . . . . . . . 91
4.5.1 Использование управляемого браузера . . . . . . . . . . . . 91
4.5.2 Реализация статического анализатора . . . . . . . . . . . . . 94
4.6 Апробация реализованного метода . . . . . . . . . . . . . . . . . . . 95
4.6.1 Апробация на созданном эталонном наборе страниц . . . . 96
4.6.2 Эксперимент по сравнению с аналогами . . . . . . . . . . . 100
4.7 Эксперименты с поиском уязвимостей на реальных приложениях . 106
4.7.1 Уязвимости типа “Небезопасная десериализация” в
запрашиваемых из JavaScript-кода входных точках . . . . . . 106
4.7.2 Эксперименты с закомментированным кодом . . . . . . . . 112
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Список рисунков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Список таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Приложение А. Акты о внедрении результатов диссертационной работы131


