Фазз-тестирование или фаззинг – это техника тестирования программного обеспечения методом “черного ящика”, которая в основном заключается в поиске ошибок реализации с помощью введения недостоверных/полунедостоверных данных в автоматизированной задаче.
Этот анализ является техникой тестирования программного обеспечения, используемой разработчиками и тестеровщиками на проникновение для проверки своих приложений на неожиданные, недопустимые и случайные наборы вводимых данных.
В ответ на это приложение выдает исключение или сбой.
Это действие показывает нам некоторые из основных уязвимостей в приложении, которые невозможно обнаружить иным способом.
Фаззинг – это относительно простое и эффективное решение, которое может быть включено в процессы обеспечения качества и тестирования безопасности.
Именно поэтому фаззинг также иногда называют тестированием на устойчивость или негативным тестированием.
История фаззинга
Классическое фазз-тестирование было разработано в университете Висконсин-Мэдисон в 1989 году профессором Бартоном Миллером и студентами.
Их работа в основном ориентирована на фаззинг командной строки и пользовательского интерфейса, и показывает, что современные операционные системы уязвимы даже для простого фаззинга.
Типы атак в фаззинге
Обычно фаззер (программа для фаззинга) пробует комбинации атак на:
- числа (целые числа со знаком/без знака/плоские числа и т.д.).
- символы (урлы, вводы командной строки).
- метаданные: вводимый пользователем текст (тег id3).
- бинарные последовательности
Общий подход к фаззингу заключается в определении списков “известных опасных значений” (fuzz vectors) для каждого типа, и внедрении их или их комбинаций.
- Для целых чисел: ноль, возможно, отрицательные или очень большие числа.
- Для символов: экранированные, интерпретируемые символы / инструкции (например: для SQL-запросов, кавычки / команды и т.д.).
- Для двоичных чисел: случайные единицы.
В Kali Linux доступны различные классы фаззеров, которые можно использовать для тестирования форматов файлов, сетевых протоколов, входов командной строки, переменных среды и веб-приложений.
Любой недоверенный источник ввода данных считается небезопасным и непоследовательным.
Например, граница доверия между приложением и интернет-пользователем непредсказуема.
Таким образом, все вводимые данные должны быть проверены на известные и неизвестные уязвимости.
В нашей последующей статье мы узнаем о фаззерах в системе Kali Linux.
Почему фаззинг важен для тестирования безопасности?
Цель фаззинга основана на предположении, что в каждой программе есть ошибки, которые ждут своего часа.
Значит, систематический подход рано или поздно должен их обнаружить.
Фаззинг может добавить другую перспективу к классическим методам тестирования программного обеспечения (ручной просмотр кода, отладка), поскольку это нечеловеческий подход.
Он не заменяет их, но является разумным дополнением, благодаря ограниченной работе, необходимой для внедрения процедуры.
см. также:
🕵️♂️ Обзор инструментов фаззинга для проверки веб-приложений