fuzzing - автоматическое тестирование безопасности
Post on 11-Aug-2015
374 Views
Preview:
TRANSCRIPT
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
top related