Полное руководство по фазз-тестированию
Опубликовано: 2021-05-17Тестирование безопасности — один из самых важных шагов для обеспечения того, чтобы ваше программное обеспечение было готово к официальному выпуску, будь то для деловых или коммерческих целей. Это позволяет вам обнаруживать любые уязвимости, которые могут быть в вашем программном обеспечении, и разрабатывать меры противодействия им, если хакер воспользуется такой уязвимостью.
Если вы заинтересованы в тестировании безопасности, вы можете узнать факты здесь прямо сейчас, но одна вещь, которую вы должны знать, это то, что существуют всевозможные способы проведения тестирования безопасности, такие как оценка риска, тестирование на проникновение и сканирование уязвимостей. И если вы уже немного знакомы с тестированием безопасности, вы, вероятно, слышали термин «нечеткое тестирование».
В настоящее время Fuzz-тестирование является относительно распространенным методом тестирования в отрасли, особенно с учетом того, что такие корпоративные гиганты, как Microsoft и Google, используют его уже более десяти лет. Но что удивительно, несмотря на то, что это стандартная техника, о ней мало кто знает. Сказав это, это руководство призвано объяснить, что такое фазз-тестирование, начиная с его определения.
Что такое фазз-тестирование?
Нечеткое тестирование, или то, что другие называют «фаззингом», включает в себя ввод неверных или случайных данных в программу для обнаружения любых уязвимостей, которые могут привести к ошибкам, которые можно использовать. Этот ввод может быть в форме файла или прямого ввода от пользователя. Так, например, если вы создаете какую-то вычислительную программу, вам обычно нужно вводить числа или математические операции. Но если вы проводите нечеткое тестирование, вам придется вводить недопустимые данные, такие как буквы или даже специальные символы.
Если это приведет к сбою программы или вызовет любую другую ошибку, программист предполагает наличие уязвимости и, следовательно, может работать над изменением кода в надежде исправить проблему. На первый взгляд может показаться, что фазз-тестирование ничем не отличается от других методов, таких как сканирование уязвимостей или тестирование на проникновение, но есть причина его популярности.
Почему компании используют Fuzz-тестирование?
Когда речь идет о тестировании безопасности, не существует универсального решения. Каждый метод может обнаруживать проблемы, которые другие не могут обнаружить; некоторые требуют более низких эксплуатационных расходов, в то время как другие легче выполнять. Как и любой метод тестирования безопасности, фазз-тестирование по-своему уникально. Ниже приведены несколько преимуществ, которые побуждают компании использовать фазз-тестирование.
- Простота: вы уже знаете, как работает нечеткое тестирование — это вопрос ввода неверных данных в программу. Простота процесса в целом служит большим преимуществом для отдельных лиц или организаций, которым не хватает навыков и опыта в области тестирования безопасности.
- Автоматизация. Тестирование безопасности может быть важным шагом в разработке программного обеспечения и приложений, но зачастую кроме постоянного тестирования программы нужно делать и другие вещи. Однако с фазз-тестированием дело обстоит иначе, поскольку вы можете автоматизировать весь процесс с помощью фаззеров.
Фаззеры — это инструменты, отвечающие за автоматический ввод данных в программу при наличии необходимой команды и условий. Тот факт, что фазз-тестирование позволяет автоматизировать бизнес, делает его идеальным методом тестирования для компаний.
- Удобно: Обычно при тестировании нужно использовать как можно больше инструментов, чтобы снизить вероятность ошибок и максимально повысить безопасность программы. Поскольку фазз-тестирование является автоматизированным и простым, это удобный способ повысить безопасность программного обеспечения.
Фаззинг, как правило, прост и удобен в реализации, но стоит отметить, что существуют всевозможные подходы к фаззинговому тестированию. В зависимости от того, какой тип вы используете, сложность и сложность процесса тестирования могут различаться. На этой ноте, возможно, самое время поговорить о различных типах фазз-тестирования.
Различные подходы к Fuzz-тестированию
Хотя существует несколько типов фазз-тестирования, они в основном похожи друг на друга, за исключением того, что генерируют входные данные по-разному. Несмотря на это, существует четыре подхода к фазз-тестированию:
- Тупой фаззинг: когда кто-то хочет генерировать входные данные совершенно случайным образом, они обычно используют тупой фаззинг. Глупый фаззер — это инструмент, который производит ввод без предварительного знания или понимания программы, отсюда и название.
Например, если вы создаете программу проверки грамматики, тупой фаззер может в конечном итоге сгенерировать изображение, далекое от ожидаемого программой. Тупой фаззинг — это самый простой подход к фаззинг-тестированию.
- Умный фаззинг. На другой стороне медали находится умный фаззинг. В отличие от тупого фаззинга, интеллектуальный фаззинг генерирует входные данные, зная, что программа ожидает получить. Более того, интеллектуальный фаззер не будет генерировать входные данные, которые неизбежно приведут к сбою программы. Вместо этого он выдаст входные данные, которые могут вызвать неожиданное поведение.
Так что в предыдущем примере интеллектуальный фаззер мог генерировать специальные символы, но никогда не генерировал изображения или любые другие неподходящие входные данные. Хотя интеллектуальные фаззеры сложнее реализовать, чем тупые фаззеры, в большинстве случаев они более точны.
- Мутационный фаззинг: мутационный фаззинг включает в себя создание входных данных путем модификации или, точнее, «мутации» существующих допустимых входных данных. В нашем примере с программой-калькулятором мутационный фаззер может выбрать существующий допустимый ввод.
Предположим, что выбранный ввод — «10+9». Мутационный фаззер попытается изменить этот ввод, добавив, удалив или изменив часть этого ввода, например, увеличив значение и превратив его в «180+129» или изменив операцию, чтобы получить результат «10/9».
- Генерационный фаззинг. Наконец, фаззинг поколений генерирует входные данные с нуля, что является противоположностью мутационного фаззинга, который генерирует входные данные из существующих. Поскольку эталонов нет, реализовать фаззеры поколений намного сложнее, чем фаззеры мутаций, но они могут предоставить тестеру больше данных.
Что делает нечеткое тестирование немного более интересным, чем другие методы, так это то, что вы можете комбинировать различные типы для улучшения инструмента тестирования. Например, вы можете создать интеллектуальный мутационный фаззер или фаззер с простым поколением, в зависимости от того, что нужно вашей программе. Возможно, бесчисленное количество комбинаций, которые вы можете выполнить с помощью фазз-тестирования, является еще одной причиной, по которой компании предпочитают фазз-тестирование другим методам.
Подведение итогов
Как только вы узнаете больше о нечетком тестировании, легко понять, почему оно стало таким популярным, как сейчас. Однако также стоит отметить, что, как и любой другой метод, фазз-тестирование имеет некоторые недостатки. Таким образом, важно определить, может ли фазз-тестирование принести больше пользы, чем вреда для вашего приложения или программного обеспечения. Как было сказано ранее, не существует универсального решения для тестирования безопасности программного обеспечения, и фазз-тестирование, безусловно, не будет таким решением.
Есть какие-нибудь мысли по этому поводу? Дайте нам знать внизу в комментариях или перенесите обсуждение в наш Twitter или Facebook.