Дмитрий Козлов / Георгий Климов, 5 курс, dbms-sem

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

Модератор: staff

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

Дмитрий Козлов / Георгий Климов, 5 курс, dbms-sem

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

Примечание: Работа представляет собой продолжение работ 3-4 курса. В прошлом году студент пинал балду и толком ничего не сделал (см. отзывы рецензентов). В результате тему оставляем.

Тема:

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

Актуальность:

Одним из важных аспектов создания современных web-приложений является обеспечение безопасности, в том числе и на этапе разработки. Для поиска уязвимостей на этапе разработки традиционно применяются методы статического анализа программ. С другой стороны, большое число web-приложений создается с помощью скриптовых языков, для которых статический анализ затруднен. В результате появилась относительно новое направление исследований: обнаружение уязвимостей в web-приложениях, созданных с применением скриптовых языков. Работ в этом направлении пока немного, но есть основания полагать, что для скриптовых языков также может успешно применяться статический анализ.

Цель:

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

1. Должен быть реализовать framework для статического анализа различных скриптовых языков (Python, PHP), обладающий возможностью подключать новые языки.
2. Анализ должен по возможности производиться для всех языковых конструкций, включая объектно-ориентированные возможности языка. Должны быть обоснованы ограничения, накладываемые на язык, если таковые будут.
3. Должны быть даны оценки: sound или нет этот анализ и при каких условиях (ограничениях) будет sound.
4. Должно быть проведено экспериментальное исследование средства на реальных приложениях.
5. Реализация средства должна быть доведена до отчуждаемого production уровня и передана в OWASP.
6. Нужно провести исследование на тему расширения списка обнаруживаемых уязвимостей. Развить реализацию по итогам исследования.

Требования к реализации:
* полная поддержка конструкций языка
* предоставление отчетности об ошибках в терминах питона, а не PHP (в графах программы)
* рефакторинг Pixy: анализ должен быть разбит на фазы, после каждой фазы - возможность печати структур данных (AST, CFG, ...)
* документация
* хорошо бы еще GUI сделать (например, содрать из FindBugs или их Eclipse Plugin)

План работы:

1. Реализация для Python и PHP уровня production, документация.
2. Экспериментальное исследование на реальных web-приложениях.
3. Сформулировать ограничения и пути их преодоления.
4. Дать оценку sound или нет и описать необходимые ограничения.
5. Исследовать, какие типы уязвимостей можно обнаруживать, дополнить реализацию.

Ожидаемые результаты:

1. Средство обнаружения уязвимостей;
2. Результаты экспериментального исследования;
3. Результаты апробации на реальных web-приложениях.
4. Статья, выступление на конференции.
Георгий Климов
Выпускник
Сообщения: 2
Зарегистрирован: 18 дек 2008 02:13 pm

Сообщение Георгий Климов »

Студент: Климов Георгий Аркадьевич, гр. 522

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

Актуальность:

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

Цели работы:

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

Для достижения поставленной цели требуется выполнение следующих подзадач:

1. Реализация фреймворка для статического анализа скриптовых языков программирования (Python, PHP), обладающий возможностью подключать новые языки.
2. Формулировка и обоснование ограничений, накладываемых на язык программирования для анализа, если таковые будут
3. Оценка полноты и точности результатов анализа.
4. Экспериментальное исследование на искусственных и реальных приложениях.
5. Исследование возможности расширения списка обнаруживаемых уязвимостей.

Проделанная работа:

Доработка реализации:
• Реализован модуль упрощения Python кода перед переводом в представление Pixy – статического анализатора языка PHP.
• Начат рефакторинг Pixy.


Дальнейшие задачи:

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

Список литературы:

[1] Andrews M., The State of Web Security. IEEE Security & Privacy, vol. 4, no. 4, pp. 14-15, 2006.
[2] Web Application Security Statistics Project 2007 [HTML] (http://www.webappsec.org/projects/statistics/)
[3] Jovanovic N., Kruegel C., Kirda E. Pixy: A Static Analysis Tool for Detecting Web Application Vulnerabilities. 2006 IEEE Symposium on Security and Privacy, Oakland, CA, May 2006
[4] Y.-W. Huang, D.T. Lee. Web Application Security – Past, Present and Future [PDF] (http://www.iis.sinica.edu.tw/~dtlee/dtl ... r_2005.pdf).
[5] Ахо А.В., Сети Р., Ульман Д.Д. Компиляторы: принципы, технологии, инструменты // Изд-во Вильямс, 2001г.
[6] M.I. Schwartzbach. Lecture Notes in Static Analysis. [PDF] (http://www.brics.dk/~mis/static.pdf)
[7] W. Landi. Undecidability of Static Analysis. ACM Letters on Programming Languages and Systems, vol. 1, no. 4, pp. 323-337, 1992.
[8] Y. Xie, A. Aiken. Static Detection of Security Vulnerabilities in Scripting Languages [PDF] (http://theory.stanford.edu/~aiken/publi ... enix06.pdf).
[9] Python 2.4.4 Library Reference, compiler.ast package [HTML] (http://www.python.org/doc/2.4.4/lib/mod ... r.ast.html).
[10] V. B. Livshits and M. S. Lam. Finding security errors in Java programs with static analysis. [PDF] (http://suif.stanford.edu/~livshits/pape ... xsec05.pdf)
Последний раз редактировалось Георгий Климов 23 дек 2008 11:33 am, всего редактировалось 1 раз.
Андрей Петухов
Сотрудник
Сообщения: 84
Зарегистрирован: 13 сен 2004 02:13 pm

Замечания рецензента Петухова А.А.

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

Итак, мои замечания по Вашему отчету.
В Вашей ПЗ заявлены следующие подзадачи:
1. Реализация фреймворка для статического анализа скриптовых языков программирования (Python, PHP), обладающий возможностью подключать новые языки.
2. Формулировка и обоснование ограничений, накладываемых на язык программирования для анализа, если таковые будут
3. Оценка полноты и точности результатов анализа.
4. Экспериментальное исследование на искусственных и реальных приложениях.
5. Исследование возможности расширения списка обнаруживаемых уязвимостей.

В результатах Вы пишете (цитирую):
Доработка реализации:
• Разбиение преобразования программы Python на 2 части: упрощение кода и перевод в представление Pixy – статического анализатора языка PHP.
• Начат рефакторинг Pixy.

Я рецензировал Вашу работу на четвертом курсе. Из написанного Вами непонятно, на сколько и куда сдвинулась работа за осенний семестр пятого курса. То, что Вы написали в качестве результатов осеннего семестра, было получено на четвертом курсе. Если есть какие-то существенные изменения - опишите эти изменения кокретно.

Кроме того, исходя из вашего отчета и формулировок планов на будущее, следует, что Вы не собираетесь выполнять 2 и 3 подзадачи.

Резюме: из отчета неясно, на сколько сдвинулась Ваша работа по сравнению с окончанием 4-го курса. Пока Вы не убедите меня в обратном, я считаю, что Вы за осенний семестр ничего не сделали.
Исходя их этого, выражаю сомнения, что Вы успеете наработать до защиты диплома хотя бы на положительную оценку.

Жду Ваших объяснений.

Данный текст также отправлен по электронной почте.
Игорь Коннов
Сотрудник
Сообщения: 25
Зарегистрирован: 14 сен 2005 11:45 am
Откуда: ЛВК
Контактная информация:

Сообщение Игорь Коннов »

Георгий, можно оценить в процентном соотношении успехи в достижении первой цели (например, 5%, 50%, 95%) и первого пункта плана работы? Верно ли, что в остальные пункты плана не выполнены вообще и по достижению остальных целей нет никакого прогресса?

Можно ли перечислить следующие конструкции языка:
1. На которых анализатор не работает вообще (некорректно завершается, выдаёт совершенно неадекватные результаты).
2. На которых анализатор работает, но может выдать неточный результат.
3. На которых анализатор работает со 100%-ной точностью.

Какие конструкции языка используются в конечном итоге в "упрощённом коде"? Все ли конструкции исходной программы переводятся в "упрощённый код" или есть какие-то исключения?

Известны ли все потенциальные проблемы Pixy, из-за которых стоит проводить рефакторинг (желательно перечислить). Есть ли план рефакторинга? До защиты осталось не так много времени, а целей ещё много. Реально ли выполнить рефакторинг этого проекта за короткое время?
Георгий Климов
Выпускник
Сообщения: 2
Зарегистрирован: 18 дек 2008 02:13 pm

Сообщение Георгий Климов »

Андрей Петухов писал(а):на сколько сдвинулась Ваша работа по сравнению с окончанием 4-го курса
В данный момент производится работа по доработке реализации, чтобы она удовлетворяла более строгим требованиям (см. "требования к реализации").

Основная проделанная работа за данный семестр - упрощение кода Python программы перед переводом его в представление для Pixy.
Это позволяет увеличить процент поддерживаемых конструкций языка и увеличить модульность реализации, что в дальшейшем упростит подключение новых языков. То есть работа направлена на п. 1, 3 требований к реализации.
Андрей Петухов писал(а):следует, что Вы не собираетесь выполнять 2 и 3 подзадачи
Пункт "ограничения на язык" я подразумевал включенным в "документацию".
Пункт "оценка полноты и точности" - "оценка анализа" после экспериментального исследования. Если полнота анализа Python'а во многом зависит от модуля преобразования Python в Pixy и её можно оценить до экспериментального исследования, то точность целиком зависит от реализации непосредственно анализа, для которого используется сторонняя реализация. Соответственно, точность можно оценить только по результатам экспериментального исследования.
Игорь Коннов писал(а):можно оценить в процентном соотношении успехи в достижении первой цели (например, 5%, 50%, 95%) и первого пункта плана работы? Верно ли, что в остальные пункты плана не выполнены вообще и по достижению остальных целей нет никакого прогресса?
Первая цель: думаю около 75%.
Вторая цель: сама собой вытечет из первой
Третья и четвертая сильно связаны вместе. Третья будет во многом результатом четвертой.
Игорь Коннов писал(а):Можно ли перечислить следующие конструкции языка:
Анализатор не работает на конструкциях, связанных с List compehensions, генераторах.
Может работать некорректно при перегрузке операторов, замыканиях, исключениях.
100% точность при данном подходе недостижима при использовании хотя бы наследования, а конкретные условия, при которых достигается максимальная точность будут выявлены при экспериментах.
Игорь Коннов писал(а):Какие конструкции языка используются в конечном итоге в "упрощённом коде"? Все ли конструкции исходной программы переводятся в "упрощённый код" или есть какие-то исключения?
В данный момент это арифметические операции (n-арные с точки зрения питоновского парсера операции приведены к бинарным), if, for, while, списки, ассоциативные массивы (и операции с ними), вызовы функций.
Игорь Коннов писал(а):Известны ли все потенциальные проблемы Pixy, из-за которых стоит проводить рефакторинг (желательно перечислить). Есть ли план рефакторинга? До защиты осталось не так много времени, а целей ещё много. Реально ли выполнить рефакторинг этого проекта за короткое время?
Помимо архитектурных улучшений, планируется во время рефакторинга повысить точность анализа условных операторов и циклов, а так же модифицировать модуль построения отчетов анализа.
Плана нет. Считаю, что намеченных результатов рефакторинга достичь реально, но могут всплыть пока скрытые недостатки Pixy. Возможность исправления этих недостатков зависит собственно от недостатков, сейчас их предсказать тяжело.
Закрыто