Андрей Петухов / Василий Баранов, 5 курс, sec-sem

На этом форуме публикуются и уточняются постановки задач студентам, а также отслеживается ход их выполнения

Модератор: staff

Закрыто
Бычков Иван
Аспирант
Сообщения: 179
Зарегистрирован: 23 сен 2008 01:19 pm

Андрей Петухов / Василий Баранов, 5 курс, sec-sem

Сообщение Бычков Иван »

Тема:
Обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа

Расшифровка темы:
Некорректная обработка пользовательского ввода в веб-приложениях позволяет злоумышленникам реализовать, в частности атаки, связанные с внедрением кода, яркими представителями которых являются XSS и SQL Injection. Данные атаки реализуются через внедрение кода в параметры http-запроса. Большинство атак предполагает, что внедренный код будет задействован модулем-обработчиком http-запроса сразу. Однако возможен вариант, когда данные с внедренным кодом будут сохранены в СУБД или иное хранилище веб-приложения и задействованы позже, уже другим модулем-обработчиком, при обращении злоумышленника по другому адресу. Последний случай иллюстрирует пример межмодульной уязвимости, обнаружению которых и посвящена дипломная работа.

Актуальность:
В настоящее время процент зарегистрированных атак, связанных с использованием межмодульных уязвимостей уровня повышается. Следует полагать, что эта тенденция сохранится. Связано это с тем, что простые уязвимости, позволяющие осуществлять внедрение кода, научились сравнительно неплохо обнаруживать. Вместе с тем, область обнаружения межмодульных уязвимостей проработана недостаточно полно (одна работа на конец лета 2008 года). На четвертом курсе студент разработал модель межмодульных уязвимостей веб-приложений и показал её применимость на практике. В этом году студенту предлагается довести работу до конца, создав полноценный программный продукт, автоматизирующий обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа.

Цель:
Создание средства, автоматизирующего обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа.

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

Сообщение Баранов Василий »

Отчет
Тема дипломной работы: Обнаружение межмодульных уязвимостей в веб-приложениях средствами динамического анализа

Некорректная обработка пользовательского ввода в веб-приложениях позволяет злоумышленникам реализовать, в частности, атаки, связанные с внедрением кода, яркими представителями которых являются XSS и SQL Injection. При проведении большинства атак предполагается, что внедренный код будет задействован модулем-обработчиком http-запроса сразу. Однако возможен вариант, когда данные с внедренным кодом будут сохранены в СУБД или иное хранилище веб-приложения и позже использованы другим модулем-обработчиком, в результате запроса к другим страницам приложения. Уязвимости веб-приложений, позволяющие проводить атаки такого типа, называются межмодульными [2]. Обнаружению таких уязвимостей и посвящена дипломная работа.
Одномодульные уязвимости [5, 9], позволяющие осуществлять внедрение кода, научились сравнительно неплохо обнаруживать. Вместе с тем, область обнаружения межмодульных уязвимостей проработана недостаточно полно (одна работа на конец лета 2008 года [7]). В рамках курсовой работы на четвертом курсе была разработана модель для обнаружения межмодульных уязвимостей. Целью дипломной работы является получение средства, автоматизирующего обнаружение межмодульных уязвимостей в веб-приложениях, написанных на языке Python

Постановка задачи
Необходимо создать анализатор трасс выполнения, генерируемых модулем динамического анализа интерпретатора языка Python, который удовлетворяет следующим требованиям:
  • 1. На вход анализатор получает:
    • a. Трассы работы веб-приложения от модуля динамического анализа интерпретатора языка Python. Трасса – это последовательность выполненных операций байт-кода модуля веб-приложения и их аргументов. Трассы формируются в бинарном виде, их формат известен.
      b. Конфигурационные файлы, которые содержат описание критических операций, операций, очищающих пользовательские данные, и операций, возвращающих пользовательские данные в соответствие с моделью Tainted Mode. Формат этих файлов требуется разработать.
      c. Схему используемой базы данных в виде списка команд языка SQL.
    2. Из каждой трассы средство должно построить точный граф зависимостей по данным. Затем трассы должны быть проанализированы на наличие зависимостей, которые появляются при совместном использовании полей базы данных несколькими модулями веб-приложения. При наличии таких зависимостей графы зависимостей соответствующих трасс должны быть объединены.
    3. Получившийся набор графов должен быть проанализирован на наличие межмодульных уязвимостей в соответствие с моделью уязвимостей, разработанной на четвертом курсе.
    4. Средство должно предоставить отчет о найденных уязвимостях в удобных для человека и машины форматах (html и xml). Структура этих отчетов задана.
    5. Средство должно быть реализовано на языке Java.
    6. Эффективность средства должна быть исследована на реальных веб-приложениях (необходимо найти через CVE [10]).
    7. Средство должно соответствовать требованиям, предъявляемым к программным продуктам, в частности иметь документацию по сборке из исходных кодов, по инсталляции и использованию.
Проделанная работа
  • 1. Изучен язык разметки XML, API для работы с XML на Java. Разработаны форматы конфигурационных файлов средства и написан их разборщик.
    2. Изучена библиотека для построения и обработки графов JGraphT, порекомендованная научным руководителем. Реализовано внутреннее представление для трасс на основе этой библиотеки и собственной объектной модели.
    3. Изучен формат трасс в байт-коде и разработан алгоритм их разбора и преобразования в вид, удобный для использования в программе. Реализация алгоритма не окончена.
    4. Написано введение в диплом и утверждено научным руководителем.
    5. Основная работа в этом семестре несла больше теоретический характер: разработка и описание алгоритмов, утверждение форматов входных данных, изучение библиотек Java и написание текста дипломной работы.
Планы на следующий семестр
Полученная в первом семестре теоретическая база позволяет в дальнейшем заниматься только реализацией программного средства. Дальнейшая разработка программы предполагает реализацию следующих алгоритмов:
  • • построение графов зависимостей по данным;
    • объединение графов зависимостей по данным;
    • анализ полученного графа на предмет обнаружения межмодульных уязвимостей.
Планируется реализация генератора отчетов о работе программы и проведение тестов. В заключении планируется дописать текст дипломной работы и составить документацию к программному продукту.

Литература
  • 1. “Исследование методов защиты web-приложений от атак, связанных с внедрением кода второго уровня”, курсовая работа Баранова Василия, МГУ, ВМиК, 2008
    2. “Second order Code injection Attacks”, Gunter Ollmann,
    3. “Hacking of Web Applications Exposed”, Joel Scambray, Mike Shema
    4. “SQL Injection”, Kevin Spett,
    5. “The Essence of Command Injection Attacks in Web Applications”, Zhendong Su, Gary Wasserman, University of California
    6. “XSS Exploits & Defences”, Jeremiah Grossman, Robert “RSnake” Hansen, Petko “pdp” D. Petkov, Anton Rager, Syngress Publishing, Inc., 2007
    7. “Multi-Module Vulnerability Analysis of Web-based Applications”, Davide Balzarotti, Marco Cova, Viktoria V. Felmetsger, Giovanni Vigna, University of California, Santa Barbara, USA, 2008
    8. “Методы обнаружения уязвимостей в web-приложениях”, Козлов Д. Д., Петухов А.А., Изд. Факультета ВМиК МГУ, 2006
    9. "Detecting security vulnerabilities in web-applications using dynamic analysis with penetration testing", Andrey Petukhov, Dmitry Kozlov.
    10. CVE – Common Vulnerabilities and Exposures (http://cve.mitre.org/about/index.html)
Последний раз редактировалось Баранов Василий 23 дек 2008 12:40 am, всего редактировалось 2 раза.
Андрей Петухов
Сотрудник
Сообщения: 84
Зарегистрирован: 13 сен 2004 02:13 pm

Замечания рецензентов

Сообщение Андрей Петухов »

1. Смелянский Р.Л.
Интересует, что же конкретно сделал студент: что он делал сам, что он
использовал от других и в каком объеме, какова сложность решенных им задач.
То, что написано в отчете, выглядит, как реализация созданного ранее алгоритма и интеграция с такими-то и такими-то средствами. Тогда отчет должен содержать описание реализации, отчет о валидации (проверке правильности), как проведено интегрирование, примеры отчетов.

2. Козлов Д.Д.
Отчет написан хорошим языком, но из формулировки проделанной работы
совершенно непонятно, что именно сделал автор, в какой степени и что
получилось в результате. С этих формулировках совершенно излишнее
углубление в техниеские аспекты не дает возможности оценить наличие
концептуального результата.
Закрыто