Тема работы
Статический анализ безопасности web-приложений, построенных с помощью скриптовых языков, на уровне байт-кода.
Актуальность
В курсовых работах Г. Климова уже исследовалась тематика анализа безопасности web-приложений, построенных с помощью скриптовых языков. Этот анализ проводился на уровне исходного кода с построением AST, CFG, Call Graph, что получилось очень трудоемко. В тоже время работы в University of Maryland по анализу Java-программ показали, что на уровне байт-кода проводить анализ существенно проще, так как там очень небольшой ассемблер и стековая машина. В данной работе делается попытка создания анализатора байт-кода для языка Python с целью обнаружения уязвимостей web-приложений.
Цель работы
Есть два варианта: задача-минимум и задача-максимум. Минимум: построить анализатор байт-кода Python, который осуществляет вывод типов. Максимум: сделать анализ не только типов, но и анализ безопасности (например, taint-анализ).
План работы
1. Изучить литературу по анализу программ, сделать доклад по этой теме и написать краткое описание для текста курсовой.
2. Сделать обзор существующих анализаторов исходного кода/байт-кода приложений на Pyhton.
3. Сделать реализацию, используя результаты обзора.
4. Провести экспериментальное исследование и апробацию на реальных web-приложениях.
Ожидаемые результаты
1. Обзор.
2. Реализация.
3. Результаты экспериментального исследования.
Дмитрий Козлов / Александр Мищенко, 3 курс, dbms-sem
Модератор: Сотрудники лаборатории
-
- Аспирант
- Сообщения: 179
- Зарегистрирован: 23 сен 2008 01:19 pm
-
- Выпускник
- Сообщения: 1
- Зарегистрирован: 09 сен 2008 12:21 am
Отчет о научной работе за 5-й семестр
Мищенко Александр Игоревич, группа № 322
научные руководители: Козлов Д.Д., Коннов И.В.
Статический анализ программ на языке python и определение типов переменных
Для решения этой задачи необходимо решить следующие подзадачи:
Определение типов переменных для программ на языке python необходим:
Мищенко Александр Игоревич, группа № 322
научные руководители: Козлов Д.Д., Коннов И.В.
Статический анализ программ на языке python и определение типов переменных
Для решения этой задачи необходимо решить следующие подзадачи:
- 1.Изучить bytecode языка python;
2.Исследовать уже существующие алгоритмы статического анализа программ, написанных на сильно-типизированных языках
3.Разработать метод определения типов переменных для программ, написанных на языке python
4.Разработать и реализовать требуемый анализатор.
Определение типов переменных для программ на языке python необходим:
- 1.Для реализации возможности автодополнения;
2.Для последующего статического анализа.
- 1.Прочитаны первые 8 глав “Advanced Compiler Design and Implementation”, после этого было решено, что только читать – не особо интересно, и надо реализовывать начальные этапы;
2.Реализован модуль, который выполняет построение CFG (control flow graph) для кода на языке python – происходит анализ функций как независимых компонент:
Анализируются инструкции байт-кода, а именно:- 1.выделяются линейные участки кода(вершины графа)
2.проставляются связи(ребра) по обычным переходам
3.добавляются ребра, соответствующие явным выбросам исключений с помощью raise и/или возможным выбросам исключений внутри каждого из вызовов функций.
- 1.в виде графа, в вершинах которого полная информация о линейном участке кода,
2.в вершинах только номер линейного участка, а в соответствующем текстовом файле полная информация о линейных участках.
- 1.выделяются линейные участки кода(вершины графа)
- 1.Не разбирался еще с:
- 1.конструкция with и контекстные менеджеры;
2.yield (=> все генераторы) – трудность заключается в том, что в данном случае появляется фактически несколько точек входа в функцию и каждая в идеале имеет свой начальный контекст(восстановление состояния).
- 1.конструкция with и контекстные менеджеры;
- 1.http://docs.python.org/
2.Steven Muchnick, “Advanced Compiler Design and Implementation”, Morgan Kaufmann, 1997;
3.Flemming Nielson, Hanne Riis Nielson, Chris Hankin, “Principles of Program Analysis”, Springer, 2005;
4.Michael I. Schwartzbach, “Lecture Notes on Static Analysis”.