Fuzzing - автоматическое тестирование безопасности

Preview:

Citation preview

Software quality assurance days17 Международная конференция по вопросам качества ПОsqadays.com

Минск. 29–30 мая 2015

Катерина ОвеченкоItera. Киев, Украина

Fuzzing – автоматическое тестирование безопасности

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

О себе

5+ лет в тестировании.Специалист по ручному тестированию и построению процесса тестирования на проектах.

2+ года в тестировании безопасности: от построения компетенции до координации проектов для внешних заказчиков.

Сейчас занимаю должность QA coordinator в компании Itera.

Докладчик конференций, один из основателей сообщества OWASP Украина, организатор конференции QA Fest.

Fuzz тестирование (aka Fuzzing) – это подход к поиску уязвимостей, обычно полу- или полностью автоматизированный, при котором невалидные, непредвиденные или случайные данные подаются на вход в приложение.

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Fuzzing – что это?

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Поиск уязвимостей White-box подход

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Поиск уязвимостей Black-box подход

Приложение

Файлы

Протоколы

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Уровни fuzzing

Память

Драйвера

URL адреса

Импорт-экспорт

UI и Формы

Запросы

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Какие баги находит fuzzing?

Ошибки в обработке входных данных

Переполнение буфера Отказ в обслуживании (DoS)

Атаки по обходу директорий (directory traversal)

XSS и SQL инъекцииУтечки памяти

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Fuzzing: Основные шаги

Определяем цель

Задаем интерфейсы

ввода данных

Генерируем тестовые данные

Посылаем данные в

приложение

Проверяем на исключения

Определяем уязвимость

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Шаг 1: Определяем цельЧто будем фаззить?

На каком уровне?

Есть ли известные уязвимости?

Функциональность с особым риском?

Шаг 2: Определяем интерфейсы ввода данных

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

На уровне кода приложенияНа уровне интерфейса приложения

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Шаг 3: Генерируем тестовые данные

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Пример модели

TFTP PACKET STRUCTURE----------------------------------------------

| \x00\x01 | Filename | 0 | Mode | 0 |

----------------------------------------------

FUZZ TEMPLATE<DataModel name="tftprrx">

<Blob name="opcode" valueType="hex" value="00 01" token="true"/><String name ="filename" value="filename.txt" nullTerminated="true" /><String name="mode" value="NETASCII" token="true" nullTerminated="true"/>

</DataModel>

<StateModel name="State1" initialState="Initial"><State name="Initial">

<Action type="output"><DataModel ref="tftprrx" />

</Action></State>

</StateModel>…

Автоматизация

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Генерация данных используя model-based или попарное тестирование

Выбрать набор данных из продуктовой среды, учитывая code coverage

Использование существующей автоматизации

Шаг 4: Посылаем данные в приложение

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Шаг 5: Проверяем на исключения

Проверяем:- Логи фаззера - Процессы- HTML ответы (response) - Регистр- Сообщения об ошибках - Статус коды- Память - Системные логи

и т.д.

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Шаг 6: Определяем уязвимость

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Fuzzers

vs

Демо

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Pros:•Легко автоматизируется•Выполняет много проверок •Множество вариаций входящих данных

Cons:•Простые ошибки•Тяжело оценить покрытие тестами•Технические знания для фаззинга (API, протоколы и драйвера)

Контакты

Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera

Mail kateryna.ovechenko@iteraconsulting.

com

Skypekateryna.ovechenko

Kateryna Ovechenko

Recommended