ФазингФазинг (англ. fuzzing,fuzz testing) — техніка автоматизованого тестування програмного забезпечення, яка полягає в тому, що на вхід програми подаються недійсні, невідповідні або випадково згенеровані дані. Таким чином відбувається перевірка на обробку виключних ситуацій, випадкові падіння тощо. Як правило, фазери використовуються для тестування програм, які сприймають на ввід визначені структури даних, наприклад, файли відомого формату. Ефективний фазер може згенерувати потік даних, який стане «досить валідним» для того, щоб пройти початкові перевірки парсера, але при подальшій обробці виявить поведінку програми при перевищенні допустимих значень для певних параметрів або інші неочікувані ситуації. З міркувань безпеки найцікавішим є тестування коду, який порушує «рівні довіри». Наприклад, важливо перевірити код, який перевіряє формат файлів перед відправленням їх до сервера на обробку, або парсить конфігураційний файл, який задає налаштування користувача з підвищеними правами. ІсторіяІсторія фазингового тестування починається у 1950х, коли для введення даних використовувались перфокарти[1]. Програмісти застосовували використані перфокарти, взяті з контейнерів для сміття або випадковим чином пробиті карти для перевірки поточних програм на некоректну поведінку або баги. Різновидом таких перевірок стало випадкове тестування або мавпячі тести. У 1981 році з'явились наукові публікації, присвячені випадковому тестуванню ПЗ[2] [3]. Хоча воно визначалось неефективним, автори пропонували його як дешевшу альтернативу звичайному тестуванню. У 1983 програміст Стів Каппс[en] розробив програму «The Monkey», яка подавала потік випадково згенерованих даних програмам для класичної Mac OS[4]. Назва програми була відсилкою до теореми про те, що серед нескінченої кількості мавп, посаджених за клавіатури, знайдеться хоча б одна, здатна набрати літературний текст. Термін «фазинг» з'явився у курсі, що викладався Бартоном Міллером в університеті Вісконсину в 1988[5].Курс передбачав створення програми для Unix, яка б генерувала випадкові файли та аргументи командного рядка. Передбачалось тестування надійності інших програм шляхом подавання на вхід великої кількості рандомізованих даних. Для заохочення подальших досліджень усі вихідні коди утиліти та інші матеріали проекту були зроблені публічно доступними [6]. У вересні 2014 року стало відомо про сімейство багів у командній оболонці bash, що отримало загальну назву Shellock[en][7]. Більшість з цих багів було виявлено завдяки фазеру AFL («american fuzzy lop»)[8]. РізновидиУмовно фазери можна поділити на такі групи:[9]
Фазери з мутаційним підходом під час тестування модифікують деякий набір відомих зразків. Наприклад, для перевірки роботи бібліотеки, що обробляє зображення, користувач повинен буде підготувати ряд файлів; у процесі фазер буде їх змінювати, щоб знайти більше помилок. Відповідно до іншого підходу, фазери на основі поколінь генерують усі вхідні дані від самого початку, а тому їх результати не залежать від якості вхідного набору даних. Простими називають фазери, що не використовують дані про структуру вводу програми, такі як формат файлу або мережевий протокол. При цьому ефективний фазер може «вгадати» правильну структуру вхідних даних і використовувати її у роботі. Розумні фазери з самого початку знайомі зі структурою вхідних даних і генерують тестові дані відповідно до певних правил. Відомі проекти
Див. такожПримітки
|
Portal di Ensiklopedia Dunia