Андрей Петухов / Николай Мартьянов, 3 курс, sec-sem

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

Модератор: staff

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

Андрей Петухов / Николай Мартьянов, 3 курс, sec-sem

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

Тема: Сравнение статических анализаторов безопасности веб-приложений

Расшифровка (для внутреннего пользования):
В настоящее время существует много статических анализаторов Java, как свободно распространяемых, так и коммерческих. Некоторые из них являются анализаторами общего назначения, некоторые – заточены специально для поиска уязвимостей в веб-приложениях. Мы бы хотели посмотреть, как и те и другие справляются с анализом реальных сложных веб-приложений. Фактически, мы хотим научиться сопоставлять статическому анализатору вектор его возможностей.

Трудность состоит в том, что качество решения многих задач статического анализа прямо пропорционально квалификации оператора. Например, когда для обнаружения определенного класса уязвимостей (или, в общем, неких свойств программы) оператор должен специальным образом аннотировать исходный код. Таким образом, возможности анализатора можно разделить на два класса – настраиваемые и нет. Ненастраиваемые возможности - это те возможности, на которые не может повлиять оператор. К примеру, умеет ли анализатор обрабатывать reflections в Java или двумерные массивы – это ненастраиваемая возможность анализатора.

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

Задачи, решаемые статическим анализатором, делятся на два вида: задачи по переводу исходного кода во внутреннее представление и задачи по анализу внутреннего представления (например, применение моделей уязвимостей). Есть мнение, что ненастраиваемые возможности – это возможности по переводу исходного кода во внутреннее представление. А весь дальнейший анализ уже зависит от оператора.

Scope of View: анализаторы Java, которые я скажу. Пока в списке Rational AppScan Build Edition, FindBugs, PMD, если получится достать Fortify SCA и Klocwork Truepath/Desktop.

Ожидаемый результат:
• набор функциональных тестов для статических анализаторов Java и его обоснование;
• результат прогона анализаторов на нем и интерпретация результатов;
• описание возможностей статических анализаторов по обнаружению уязвимостей в веб-приложениях.

Соответственно, в ходе работы потребуется определить все «грабли», которые встречаются статическому Java-анализатору на этапе перевода кода во внутреннее представление (циклы, динамическая память/указатели/сложные структуры данных, наследование и динамические методы, reflection, нити и т.д.). Эта информация как раз и ляжет в основу набора функциональных тестов.

Цель. Возможность обоснованного сравнения ненастраиваемых возможностей статических анализаторов Java. Описание возможностей статических анализаторов по обнаружению уязвимостей в веб-приложениях.

План работы.
  1. Theoretical Track первого семестра.
    a. Структуры данных для статического анализа (AST, CFG, DFG) и алгоритмы их построения.
    b. Задачи статического анализа, решаемые на этих структурах.
    c. Модели уязвимостей, используемых при статическом анализе.
  2. Practical Track первого семестра.
    a. Научиться применять анализаторы из списка к real world веб-приложениям (их можно взять для начала из проекта NIST SATE), а так же к специальным функциональным тестам из http://suif.stanford.edu/~livshits/securibench/.
    b. Описать опыт применения статических анализаторов (что декларируется в документации, а что есть на самом деле).
    c. Сделать предположение о моделях уязвимостей, используемых анализаторами, сделать вывод относительно классов обнаруживаемых уязвимостей.
  3. Второй семестр
    a. Спроектировать набор функциональных тестов и обосновать проект.
    b. Реализовать набор функциональных тестов и прогнать на нем статические анализаторы.
    c. Проинтерпретировать результаты.
    d. Написать текст курсовой.
Литература:
1. Introduction to Compilers. http://www.cs.cornell.edu/courses/cs412 ... edule.html
2. Мучник. “Advanced Compiler Construction”.
3. Публикации проекта SATE.
4. Публикации проекта SAMATE в части статических анализаторов.
Закрыто