Підручник з тестування Fuzz (Fuzzing).

Що таке Fuzz Testing?

Тестування нечіткістю або Fuzzing — це техніка тестування програмного забезпечення, яка полягає у введенні недійсних або випадкових даних під назвою FUZZ у програмну систему для виявлення помилок кодування та лазівок у безпеці. Метою фаз-тестування є вставлення даних за допомогою автоматизованих або напівавтоматичних методів і перевірка системи на наявність різноманітних винятків, таких як збій системи або збій вбудованого коду тощо.

Fuzz-тестування спочатку було розроблено Бартоном Міллером з Університету Вісконсіна в 1989 році. Fuzz-тестування або фаззинг – це метод тестування програмного забезпечення, який Тестування безпеки.

Тестування нечіткістю

Навіщо проводити Fuzz Test?

  • Зазвичай тестування Fuzzy виявляє найсерйознішу помилку або дефект безпеки.
  • Фуз-тестування дає більш ефективний результат при використанні з Black Box Тестування, Бета-тестування та інші методи налагодження.
  • Тестування Fuzz використовується для перевірки вразливості програмного забезпечення. Це дуже економічно ефективні методи тестування.
  • Фаз-тестування є одним із методів тестування чорного ящика. Фаззинг є одним із найпоширеніших методів, які використовують хакери для пошуку вразливості системи.

Як виконати Fuzz Test

Етапи нечіткого тестування включають основні етапи тестування:

Крок 1) Визначте цільову систему

Крок 2) Визначте вхідні дані

Крок 3) Створення нечітких даних

Крок 4) Виконайте тест, використовуючи нечіткі дані

Крок 5) Відстежуйте поведінку системи

Крок 6) Дефекти журналу

Приклади Fuzzers

  • Фуззери на основі мутацій змінити наявні зразки даних, щоб створити нові тестові дані. Це дуже простий і зрозумілий підхід, він починається з дійсних зразків протоколу і продовжує спотворювати кожен байт або файл.
  • Фазери на основі генерації визначити нові дані на основі вхідних даних моделі. Він починає генерувати вхідні дані з нуля на основі специфікації.
  • Фазер НА ОСНОВІ ПРОТОКОЛУ, найуспішнішим фаззером є детальне знання формату протоколу, що тестується. Розуміння залежить від специфікації. Це передбачає запис масиву специфікації в інструмент, а потім за допомогою техніки генерації тестів на основі моделі переглядає специфікацію та додає неправильність у вміст даних, послідовність тощо. Це також відомо як тестування синтаксису, тестування граматики, тестування надійності, і т. д. Fuzzer може генерувати тестові випадки з існуючого, або вони можуть використовувати дійсні чи недійсні вхідні дані.

Існує два обмеження фаззингу на основі протоколу:

  1. Тестування не може тривати, доки специфікація не стане зрілою.
  2. Багато корисних протоколів є розширенням опублікованих протоколів. Якщо фаз-тестування базується на опублікованих специфікаціях, Випробування покриття для нових протоколів буде обмежено.

Найпростішою формою техніки фаззингу є надсилання випадкових вхідних даних програмному забезпеченню у вигляді пакетів протоколу або у вигляді події. Ця техніка передачі випадкового введення дуже потужна для пошуку помилок у багатьох програмах і службах. Інші методи також доступні, і їх дуже легко реалізувати. Щоб реалізувати ці методи, нам просто потрібно змінити існуючі входи. Ми можемо змінити вхідні дані, просто помінявши біти вхідних даних.

Типи помилок, виявлених Fuzz Testing

  • Помилки твердження та витоки пам'яті ця методологія широко використовується для великих програм, де помилки впливають на безпеку пам’яті, що є серйозною вразливістю.
  • Неправильні дані У фаз-тестуванні фаззери використовуються для створення недійсних вхідних даних, які використовуються для тестування процедур обробки помилок, і це важливо для програмного забезпечення, яке не контролює свої вхідні дані. Простий фаззинг можна назвати способом автоматизації негативного тестування.
  • Помилки коректності Фаззинг також можна використовувати для виявлення деяких типів помилок «правильності». Наприклад, пошкоджена база даних, погані результати пошуку тощо.

Інструменти тестування Fuzz

Інструменти, які використовуються в веб-безпеці, можуть широко використовуватися в тестуванні фаз, наприклад Burp Suite, Peach Fuzzer тощо.

  • Персиковий Фузер: Peach Fuzzer забезпечує більш надійне та безпечне покриття, ніж сканер. Інші засоби тестування можуть шукати лише відомі потоки, тоді як Peach Fuzzer дозволяє користувачам знаходити відомі та невідомі потоки.
  • Спайк проксі: це професійний інструмент для пошуку вразливостей на рівні програми у веб-додатках. SPIKE Proxy охоплює основи, такі як SQL Ін’єкція та міжсайтовий сценарій, але він повністю відкритий Python інфраструктура. SPIKE Proxy доступний для Linux та Windows.
  • Веб-скарабей: Webscarab написано мовою Java таким чином переноситься на багато платформ. Для аналізу додатків використовується фреймворк Webscarab, який спілкується за допомогою протоколів HTTP і HTTPS.Ex: Webscarab працює як проксі-перехоплювач, він дозволяє оператору переглядати та змінювати запити, створені браузером, перш ніж вони будуть отримані сервером. Дозволяє переглядати й оновлювати відповідь, згенеровану сервером, перш ніж її отримає браузер. Таким чином, якщо веб-скарабей знайде будь-яку лазівку, він потрапить у список повідомлених проблем.
  • OWASP WSFuzzer: WSFuzzer — це програма під ліцензією GPL, написана на Python. Програма під ліцензією GPL наразі націлена на веб-служби. У поточній версії OWASPWSFuzzer базується на HTTP Сервіси SOAP є основною ціллю.

Переваги Fuzz Testing

  • Fuzz-тестування покращує програмне забезпечення Тестування безпеки.
  • Помилки, виявлені у фаззингу, іноді серйозні, і найчастіше ними користуються хакери, включаючи збої, витік пам’яті, необроблені винятки тощо.
  • Якщо будь-яка з помилок не помічається тестувальниками через обмеження часу та ресурсів, ці помилки також виявляються під час тестування Fuzz.

Недоліки Fuzz-тестування

  • Само по собі Fuzz-тестування не може дати повної картини загальної загрози безпеці або помилок.
  • Fuzz-тестування є менш ефективним для боротьби із загрозами безпеці, які не спричиняють збої програм, наприклад, деякі віруси, хробаки, трояни тощо.
  • Fuzz-тестування може виявити лише прості помилки або загрози.
  • Для ефективної роботи знадобиться багато часу.
  • Встановлення умови граничного значення за допомогою випадкових вхідних даних є дуже проблематичним, але тепер більшість тестувальників вирішують цю проблему за допомогою детермінованих алгоритмів, заснованих на введених користувачами даних.

Підсумки

У розробці програмного забезпечення тестування Fuzz показує наявність помилок у програмі. Фаззинг не може гарантувати повне виявлення помилок у програмі. Але використання техніки Fuzz гарантує, що програма є надійною та безпечною, оскільки ця техніка допомагає виявити більшість поширених уразливостей.