Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.

Презентация:



Advertisements
Похожие презентации
Тамбовский государственный университет имени Г.Р. Державина Институт математики, физики и информатики Кафедра информатики и информационных технологий Иванова.
Advertisements

Нарушение целостности структуры SQL-запроса. Внедрение SQL-кода (SQL injection) один из распространённых способов взлома ПО, работающего с базами данных,
Тестирование безопасности или Security and Access Control Testing.
SQL-injections for dummies. Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL-
Автоматическое построение профилей нормального поведения веб-приложений Гамбаров Эльдар, группа 522 Научные руководители: Петухов А. А., д. ф.-м. н. профессор.
Подготовил Дубровин Александр Ученик 9 класса Ольховской школы.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Проблемы обеспечения безопасности приложений Тема 20.
I. Информация и информационные процессы 1. Определение информации. Свойства информации. 2. Представление и кодирование информации с помощью знаковых систем.
Использование механизмов СУБД для генерации тестовых данных входных параметров web приложения Докладчик: Зинатуллин Феликс Минисагитович.
Проблемы обеспечения безопасности приложений Тема 20.
Соколова В. В. Поддержка баз данных в РНР. Соколова В. В. Лаб 6 Работа с базами данных в РНР В РНР реализована обширная поддержка практически всех существующих.
Корпоративные системы Лекция 5. Механизмы доступа к БД через Web-интерфейс.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
НАЧАТЬ ТЕСТ по КИТ2 Разработчики: Оскерко В.С., доцент, к.э.н. Панько Н.Г., студентка ДФФ-1, 2-й курс 2011 г.
Разработка системы информационного поиска в базе знаний Белякова Д.Ю. Группа С-105 МИЭМ
Троицкий Д.И. Интернет-технологии1 ДИНАМИЧЕСКИЕ WEB-СТРАНИЦЫ СЕРВЕРНЫЕ СЦЕНАРИИ Лекция 9 Кафедра «Автоматизированные станочные системы» Dept. of Automated.
Александр Сербул Руководитель направления контроля качества интеграции и внедрений Автоматическая проверка безопасности интернет-проектов.
Программируемый клиент ORACLE Технология Pro C/C++
Интернет- технологии МИИГаИК. Указание XML-документов в ориентире на будущее
Транксрипт:

Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.

2 Наиболее распространенные веб- уязвимости 70% сайтов открыты для взлома* *IEEE Security and Privacy, vol.4, no

3 Пример уязвимости S1: $skip = $_GET["skip"]; S2: if ($skip < 0) S3: $skip = 0; S4: $QueryOffset = $skip. ", 10"; S5: mysql_connect(); S6: mysql_select_db("myDB"); S7: $request= "SELECT fld_Text FROM news LIMIT ".$QueryOffset; S8: $result=mysql_query($request); Нормальный запрос: SELECT fld_Text FROM news LIMIT 0, 10 Однако при skip=10; DELETE FROM news; будет выполнен запрос : SELECT fld_Text FROM news LIMIT 10; DELETE FROM news;

4 Существующие методы обнаружения уязвимостей Тестирование на проникновение Задаются шаблоны значений HTTP-параметров Задаются шаблоны ожидаемых ответов Проводится сканирование Динамический анализ Tainted mode Есть для Perl, Ruby, PHP Статический анализ Tainted mode на графе потоков данных программы Есть для Java, PHP

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

6 Предположения Все данные, полученные через HTTP-запросы, считаются ненадежными Все ресурсы, локальные по отношению к web- приложению, считаются надежными Ненадежные данные могут стать надежными вследствие специальной обработки

7 Уязвимость Ненадежные данные не должны использоваться при построении HTTP-ответов Ненадежные данные не должны сохраняться в локальных хранилищах данных Ненадежные данные не должны использоваться при конструировании команд к внешним по отношению к Web-приложению сервисам Ненадежные данные не должны использоваться при формировании исходного кода для интерпретации на лету

8 Tainted mode S1: $skip = $_GET["skip"]; S2: if ($skip < 0) S3: $skip = 0; S4: $QueryOffset = $skip. ", 10"; S5: mysql_connect(); S6: mysql_select_db("myDB"); S7: $request= "SELECT fld_Text FROM news LIMIT ".$QueryOffset; S8: $result=mysql_query($request);

9 Список конструкций, возвращающих ввод пользователя параметры запросов, значения cookie, заголовки запросов в примере: массив $_GET Список критических к вводу функций работа с СУБД, ФС, почтой, интерпретатором ОС системные вызовы вывод HTML в браузер клиента в примере: mysql_connect, mysql_select_db, mysql_query Список конструкций, фильтрующих ввод пользователя кодирование служебных символов (> &gthn;) экранирование служебных символов ( \) приведение к типу (строку к целому) в примере: $Skip = 0 Tainted mode Конфигурация

10 Алгоритм: Для каждого аргумента каждой критической к вводу функции F j построить граф зависимостей по данным В каждом графе выделить пути от корня F j ко всем переменным, инициализируемым от пользовательского ввода, X i Если среди выделенных путей существует путь без вершины с фильтрацией ввода, сигнализировать о возможной уязвимости Уязвимость - это отсутствие проверки для входного параметра X i относительно критической к вводу функции F j, {(X i, F j )} Tainted mode Алгоритм

11 Реализация 1)Модификация встроенных строковых типов 2)Присваивание входным данным метки Taint 3)Распространение метки Taint 4)Снятие метки Taint 5)Реагирование на Taint данные

12 Модификация встроенных типов Встроенные в язык Python структуры для представления строк дополнены полем меткой Taint, сигнализирующей, прошла ли эта строка проверку на корректность или нет

13 Присваивание входным данным метки Taint Флаг Taint устанавливается, если строковая переменная инициализируется от данных HTTP- запроса

14 Распространение метки Taint - Флаг Taint устанавливается, если строковая переменная получает свое значение от других переменных с поднятым флагом taint

15 Снятие метки Taint - Флаг Taint снимается, если строковая переменная проходит функцию проверки на корректность данных

16 Реагирование на Taint данные

17 Результаты 1)Разработан метод динамического анализа для обнаружения уязвимостей, связанных с некорректной обработкой пользовательского ввода 2)Произведена его реализация путем модификации интерпретатора Python 3)Проведена настройка метода на специфику технологии mod_python

18 Относительность «опасных» символов Для различных критических к пользовательскому вводу функций опасны различные конструкции Реализация фильтрации пользователем Существует много альтернативных способов произвести фильтрацию пользовательского ввода Ошибки в алгоритмах фильтрации Ручная перенастройка метода при применении различных фреймворков Поиск фильтрующих функций во фреймворке Поиск оберток критических функций во фреймворке Tainted mode Недостатки метода

19 Спасибо за внимание! Вопросы?