Обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа
Расшифровка темы:
Некорректная обработка пользовательского ввода в веб-приложениях позволяет злоумышленникам реализовать, в частности атаки, связанные с внедрением кода, яркими представителями которых являются XSS и SQL Injection. Данные атаки реализуются через внедрение кода в параметры http-запроса. Большинство атак предполагает, что внедренный код будет задействован модулем-обработчиком http-запроса сразу. Однако возможен вариант, когда данные с внедренным кодом будут сохранены в СУБД или иное хранилище веб-приложения и задействованы позже, уже другим модулем-обработчиком, при обращении злоумышленника по другому адресу. Последний случай иллюстрирует пример межмодульной уязвимости, обнаружению которых и посвящена дипломная работа.
Актуальность:
В настоящее время процент зарегистрированных атак, связанных с использованием межмодульных уязвимостей уровня повышается. Следует полагать, что эта тенденция сохранится. Связано это с тем, что простые уязвимости, позволяющие осуществлять внедрение кода, научились сравнительно неплохо обнаруживать. Вместе с тем, область обнаружения межмодульных уязвимостей проработана недостаточно полно (одна работа на конец лета 2008 года). На четвертом курсе студент разработал модель межмодульных уязвимостей веб-приложений и показал её применимость на практике. В этом году студенту предлагается довести работу до конца, создав полноценный программный продукт, автоматизирующий обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа.
Цель:
Создание средства, автоматизирующего обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа.
Постановка задачи:
Задачей дипломной работы является создание программного продукта, автоматизирующего обнаружение межмодульных уязвимостей в веб-приложениях, написанных на языке Python, средствами динамического анализа. Требования к средству:
1. На вход средство должно получать:
- a) трассы работы веб-приложения от модуля динамического анализа интерпретатора языка Python. Трасса – это последовательность выполненных операций байт-кода модуля веб-приложения и их аргументов.
b) Http-запросы, которые обрабатываются при генерации этих трасс.
c) Конфигурационные файлы, которые содержат описание критических операций, операций, очищающих пользовательские данные, и операций, возвращающих пользовательские данные в соответствие с моделью Tainted Mode.
d) Схема используемой базы данных.
3. Трассы должны быть проанализированы на предмет зависимостей по данным через общие поля в СУБД и при наличии зависимости соответствующие графы зависимостей объединены.
4. Получившийся набор графов должен быть проанализирован на наличие межмодульных уязвимостей в соответствие с моделью, разработанной на 4 курсе.
5. Средство должно предоставить отчет о найденных уязвимостях в удобных для человека и машины форматах (html и xml).
6. Средство должно быть реализовано на языке Java.
7. Эффективность средства должна быть исследована на тестовых (серия HacMe компании FoundStone и OWASP WebGoat) и реальных веб-приложениях (необходимо найти через CVE).
8. Средство должно соответствовать требованиям, предъявляемым к программным продуктам, в частности иметь документацию по сборке из исходных кодов, по инсталляции и использованию.