Interested Article - Фаззинг

Фа́ззинг ( англ. fuzzing ) — техника тестирования программного обеспечения, часто автоматическая или полуавтоматическая, заключающаяся в передаче приложению на вход неправильных, неожиданных или случайных данных. Предметом интереса являются падения и зависания, нарушения внутренней логики и проверок в коде приложения, утечки памяти , вызванные такими данными на входе. Фаззинг является разновидностью выборочного тестирования ( random testing ), часто используемого для проверки проблем безопасности в программном обеспечении и компьютерных системах.

При проверке безопасности наибольший интерес вызывают проверки на границе доверия . Например, намного важнее провести фаззинг формы загрузки файлов неавторизованным пользователем , чем загрузку конфигурационного файла авторизованным привилегированным пользователем.

История

Случайные данные применялись при тестировании приложений и раньше. К примеру, приложение «Обезьяна» ( The Monkey ) под Mac OS , созданное Стивом Капсом ещё в 1983 году, генерировала случайные события, которые направлялись на вход тестируемым программам для поиска багов. Оно использовалось, в частности, при тестировании .

Термин « fuzz » появился в 1988 году на семинаре Бартона Миллера в Университете Висконсина , во время которого была создана простая программа fuzzer , предназначенная для командной строки, с целью тестирования надежности приложений под Unix . Она генерировала случайные данные, которые передавались как параметры для других программ до тех пор, пока они не останавливались с ошибкой. Это стало не только первым в истории тестированием с использованием случайных неструктурированных данных, но и первым специализированным приложением для тестирования широкого круга программ под разнообразные операционные системы , и с систематическим анализом типов ошибок, возникающих при таком тестировании. Создатели проекта открыли исходные коды своего приложения, а также публичный доступ к процедурам тестирования и сырым результатам. Тест был повторен в 1995 году — приложение доработали для тестирования приложений с GUI , сетевых протоколов и системных библиотек под Mac OS и Windows .

Стоит отметить, что схожие техники тестирования существовали задолго до появления термина и формализации процедуры. Так, известно, что Джерри Вейнберг использовал набор карт со случайными числами , чтобы передавать их на вход программ ещё в 1950-х годах .

В 1991 году было выпущено приложение crashme , созданное для тестирования надежности операционных систем путем исполнения случайного набора процессорных инструкций .

В настоящее время фаззинг является составной частью большинства проверок безопасности и надёжности программного обеспечения и компьютерных систем.

См. также

Примечания

  1. John Neystadt. . Microsoft (февраль 2008). Дата обращения: 14 мая 2009. 30 июля 2017 года.
  2. . Folklore.org (22 февраля 1999). Дата обращения: 28 мая 2010. 21 марта 2021 года.
  3. Michael Sutton; Adam Greene; Pedram Amini. Fuzzing: Brute Force Vulnerability Discovery (англ.) . — Addison-Wesley , 2007. — ISBN 0-321-44611-9 .
  4. Gerald M. Weinberg. . Дата обращения: 6 февраля 2017. 24 августа 2017 года.
  5. . CodePlex . Дата обращения: 26 июня 2012. Архивировано из 11 августа 2012 года.

Ссылки

  • Source of papers and fuzz software.
  • , conference video including fuzzy testing
  • от 10 января 2016 на Wayback Machine
Источник —

Same as Фаззинг