2. План
•
Что такое фаззинг (fuzzing) и зачем он нужен
•
Обзор инструментов для фазз тестирования
•
Фаззинг файлов
•
Фаззинг протоколов
•
Фаззинг драйверов
•
Фаззинг веб-приложений
•
Пример фаззинга веб-приложения
•
Пример фаззинга сетевого приложения
•
Какие баги можно найти при помощи фаззинга
•
Фаззинг в процессе тестирования
•
Полезные ссылки и литература
3. Что такое фаззинг
(fuzzing)
Фаззинг (fuzzing) – методика тестирования,
при которой на вход программы подаются
невалидные, непредусмотренные или
случайные данные
6. Что можно фаззить?
•
Файлы
•
Драйверы
•
Приложения
•
Веб-приложения
•
Протоколы
•
API
7. Как можно фаззить?
1) Генерация
- случайные данные (dumb)
-
входные данные,
сформированные по моделям
(smart)
2) Мутация
- изменение существующих входных
данных
8. Фаззинг файлов
1) Выбираем входные данные
2) Фаззер искажает эти данные
3) Фаззер запускает приложение с
передачей ему искаженных данных
4) Фаззер перебирает входные
данные
5) В случае возникновения ошибки,
записываем данные и анализируем
результаты
11. Фаззинг протоколов
1) Выбираем фаззер (свой или
сторонний)
2) Создаем модели данных
3) Описываем параметры модели в
входном файле
4) Запускаем фаззер
5) В случае возникновения ошибки,
записываем данные и анализируем
результаты
16. Фаззинг веб-приложений
1) Выбираем какими запросами
будем фазить
2) Подбираем фаззер
3) Создаем скрипт для фаззинга
4) Запускаем фаззер
5) В случае возникновения ошибки,
записываем данные и анализируем
результаты
20. Прочие фаззеры
•
Sulley — фреймворк для создания
сложных структур данных
•
Fusil — библиотека на Python для
написания фаззеров
•
Bunny The Fuzzer – фаззер для
протоколов на языке С
•
Много фаззеров на http://code.google.com
23. Какие баги можно найти при
помощи фаззинга
•
Утечки памяти
•
Переполнение буфера
•
Неверные коды ошибок
•
Ошибки обработки входных данных
•
Отказ в обслуживании
24. Фаззинг в процессе
тестирования
•
Часть процесса тестирования
безопасности
•
Стоит попробовать с другими
видами тестирования
•
Необходимо знание протоколов и
форматов данных
•
Документирование
•
Это не очень сложно
25. Полезные ссылки и
литература
•
http://en.wikipedia.org/wiki/Fuzz_testing
•
http://www.xakep.ru/post/52726/
•
http://www.fuzzing.org/
•
http://msdn.microsoft.com/en-
us/library/cc162782.aspx
•
Педрам Амини, «Fuzzing.
Исследование уязвимостей методом
грубой силы», Символ-Плюс, 2009 г.
26. Спасибо за внимание!
Вопросы?
E-mail: ochir.abushinov@gmail.com
Skype: ochir_abushinov