fuzzing - автоматическое тестирование безопасности
TRANSCRIPT
![Page 1: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/1.jpg)
Software quality assurance days17 Международная конференция по вопросам качества ПОsqadays.com
Минск. 29–30 мая 2015
Катерина ОвеченкоItera. Киев, Украина
Fuzzing – автоматическое тестирование безопасности
![Page 2: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/2.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
О себе
5+ лет в тестировании.Специалист по ручному тестированию и построению процесса тестирования на проектах.
2+ года в тестировании безопасности: от построения компетенции до координации проектов для внешних заказчиков.
Сейчас занимаю должность QA coordinator в компании Itera.
Докладчик конференций, один из основателей сообщества OWASP Украина, организатор конференции QA Fest.
![Page 3: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/3.jpg)
Fuzz тестирование (aka Fuzzing) – это подход к поиску уязвимостей, обычно полу- или полностью автоматизированный, при котором невалидные, непредвиденные или случайные данные подаются на вход в приложение.
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Fuzzing – что это?
![Page 4: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/4.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Поиск уязвимостей White-box подход
![Page 5: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/5.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Поиск уязвимостей Black-box подход
![Page 6: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/6.jpg)
Приложение
Файлы
Протоколы
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Уровни fuzzing
Память
Драйвера
URL адреса
Импорт-экспорт
UI и Формы
Запросы
![Page 7: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/7.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Какие баги находит fuzzing?
Ошибки в обработке входных данных
Переполнение буфера Отказ в обслуживании (DoS)
Атаки по обходу директорий (directory traversal)
XSS и SQL инъекцииУтечки памяти
![Page 8: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/8.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Fuzzing: Основные шаги
Определяем цель
Задаем интерфейсы
ввода данных
Генерируем тестовые данные
Посылаем данные в
приложение
Проверяем на исключения
Определяем уязвимость
![Page 9: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/9.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Шаг 1: Определяем цельЧто будем фаззить?
На каком уровне?
Есть ли известные уязвимости?
Функциональность с особым риском?
![Page 10: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/10.jpg)
Шаг 2: Определяем интерфейсы ввода данных
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
На уровне кода приложенияНа уровне интерфейса приложения
![Page 11: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/11.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Шаг 3: Генерируем тестовые данные
![Page 12: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/12.jpg)
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>…
![Page 13: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/13.jpg)
Автоматизация
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Генерация данных используя model-based или попарное тестирование
Выбрать набор данных из продуктовой среды, учитывая code coverage
Использование существующей автоматизации
![Page 14: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/14.jpg)
Шаг 4: Посылаем данные в приложение
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
![Page 15: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/15.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Шаг 5: Проверяем на исключения
Проверяем:- Логи фаззера - Процессы- HTML ответы (response) - Регистр- Сообщения об ошибках - Статус коды- Память - Системные логи
и т.д.
![Page 16: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/16.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Шаг 6: Определяем уязвимость
![Page 17: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/17.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Fuzzers
vs
![Page 18: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/18.jpg)
Демо
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
![Page 19: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/19.jpg)
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Pros:•Легко автоматизируется•Выполняет много проверок •Множество вариаций входящих данных
Cons:•Простые ошибки•Тяжело оценить покрытие тестами•Технические знания для фаззинга (API, протоколы и драйвера)
![Page 20: Fuzzing - автоматическое тестирование безопасности](https://reader036.vdocuments.site/reader036/viewer/2022062300/55c94f2ebb61ebe6518b45b5/html5/thumbnails/20.jpg)
Контакты
Fuzzing – автоматическое тестирование безопасностиКатерина Овеченко, Itera
Mail kateryna.ovechenko@iteraconsulting.
com
Skypekateryna.ovechenko
Kateryna Ovechenko