Веб-краулер для поиска уязвимостей авторизации (командный проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Новая страница, с помощью формы Новый_командный_проект)
 
(Контактная информация)
Строка 69: Строка 69:
  
 
=== Контактная информация ===
 
=== Контактная информация ===
 +
Денис Гамаюнов
 +
 +
Электронная почта: gamajun@gmail.com
 +
 
Контакт в Tg: @jamadharma
 
Контакт в Tg: @jamadharma
  

Версия 13:29, 11 сентября 2017

Компания SolidSoft
Учебный семестр Осень 2017
Учебный курс 3-й курс
Максимальное количество студентов, выбравших проект: 2-3



Что это за проект?

Уязвимости авторизации - один из сложных типов логических уязвимостей в приложениях, которые возникают в следствие ошибок в проектировании, реализации или настроек. В результате недостаточной или неточной реализации модели разделения доступа пользователи приложения могут получить доступ (чтение, запись, создание, удаление) к объектам приложения, которые им не принадлежат. См. в частности Noseevich G., Petukhov A. Detecting insufficient access control in web applications //SysSec Workshop (SysSec), 2011 First. – IEEE, 2011. – С. 11-18.

Для обнаружения уязвимостей этого типа можно использовать подход на основе анализа различий: для различных ролей пользователей на основе обхода интерфейса приложения строится карта достижимости функций (объектов) приложения, после чего выполняется поиск таких функций (объектов), которые не доступны для пользователя из его интерфейса, но доступны по прямой ссылке. Подход использует неявное предположение, что всё, что недоступно пользователю через интерфейс (недостижимо ни по какому пути в интерфейсе), должно быть недоступно всегда.

В рамках проекта требуется реализовать веб-краулер для приложений с динамическим интерфейсом (HTML5, AJAX), который автоматически обнаруживает уязвимости авторизации.

Теоретические и практические трудности задачи:

1) краулинг динамических приложений - нужно уметь обнаруживать и использовать динамически порождаемые элементы управления (точки ввода данных);

2) выделение шаблонов - нужно уметь обнаруживать функционально идентичные состояния приложения, которые различаются по контенту. Например, страница блога после добавления новой записи функционально ничем не отличается от такой же страницы до того, т.е. должна представляться одним и тем же состоянием приложения. В общем случае нужно выполнять сегментирование страниц и выделение шаблона;

3) автоматическое выявление сценариев использования - для построения модели доступа в виде сценария использования для пользовательской роли нужно уметь выводить сценарий из интерфейса и доступных в нём управляющих элементов. Наиболее сложная задача.

Чему научатся студенты? Что самое интересное в проекте?

1. Устройство современных веб-приложений, HTML5, JavaScript MVC фреймворки.

2. Устройство headless браузеров, построение краулеров.

3. Анализ приложений методом черного ящика.

Организация работы (Как студенты будут работать в команде?)

В команде может быть от двух до четырех человек, между которыми распределяются задачи по боту и планировщику в соответствии с отдельными задачами, которые надо решать в рамках этих компонентов. Задачи по UI и базе знаний рассматриваются как второстепенные, по остаточному принципу.

Компоненеты (Из каких частей состоит проект?)

Бот (веб-краулер) Планировщик (запускает боты, housekeeping) UI База знаний

Какие будут использоваться технологии?

Варианты базы для краулера: Selenium web driver, SlimerJS, Firefox headless mode. Варианты для бэкенда: Flask+Tarantool(PostgreSQL,MySQL).

Какие начальные требования?

1. Умение разрабатывать программы на Python, JavaScript (NodeJS).

2. Умение пользоваться виртуальными машинами и автоматизировать работу с ними - делать снимки состояния, откатывать, перезапускать, контролировать потребление ресурсов.

Темы вводных занятий

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

Критерии оценки

4 балла. Реализован веб-краулер, который умеет строить модель состояний для некоторых (не менее 3, кроме SPA) динамических приложений из Alexa Top100. Реализован анализ различий, который работает на стендовом приложении (подобранном из opensource проектов).

6 баллов. Реализован веб-краулер, который умеет работать с SPA.

8 баллов. Реализовано автоматическое построение сценариев использования, которое работает на некоторых (не менее 3) приложениях из Alexa Top100, для не менее чем 2 различных ролей пользователей (с разным уровнем доступа).

+1 балл. Проведен эксперимент на стенде из виртуальных машин, с демонстрацией обнаружения уязвимости авторизации.

+1 балл. Реализована возможность параллельной обработки множества приложений, housekeeping для краулеров на стороне "поискового сервера".

+1 балл. Обнаружение ранее неизвестной уязвимости в популярном opensource приложении.

Похожие проекты

Коммерческие продукты: IBM AppScan

Похожий дипломный проект: https://github.com/phonexicum/jaxsnoop

Контактная информация

Денис Гамаюнов

Электронная почта: gamajun@gmail.com

Контакт в Tg: @jamadharma

Для выполнения проекта создайте приватный репозиторий в BitBucket или GitHub, и добавьте в collaborators ментора:

- BitBucket: jamadharma - GitHub: jama-dharma