Підручник з тестування Fuzz (Fuzzing): Що таке, типи, інструменти та підсилювач; Приклад

Зміст:

Anonim

Нечітке тестування

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

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

Чому робити Fuzz тестування?

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

Як зробити Fuzz тестування

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

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

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

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

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

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

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

Приклади Fuzzers

  • Мутаційні Fuzzers змінюють існуючі зразки даних, щоб створити нові тестові дані. Це дуже простий і зрозумілий підхід, він починається з дійсних зразків протоколу і продовжує маніпулювати кожним байтом або файлом.

  • Fuzzers на основі поколінь визначають нові дані на основі введення моделі. Він починає генерувати вхідні дані з нуля на основі специфікації.

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

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

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

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

Типи помилок, виявлених Fuzz-тестуванням

  • Помилки тверджень та витоки пам'яті ця методологія широко використовується для великих додатків, де помилки впливають на безпеку пам'яті, що є серйозною вразливістю.

  • Неправильні дані

    Під час тестування нечітких сигналів інструменти використовуються для створення недійсного вводу, який використовується для тестування процедур обробки помилок, і це важливо для програмного забезпечення, яке не контролює свій вхід. Просте розмивання може бути відоме як спосіб автоматизації негативного тестування.

  • Помилки правильності

    Нечіткість також може бути використана для виявлення деяких типів помилок "правильності". Такі як пошкоджена база даних, погані результати пошуку тощо.

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

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

  • Персик Fuzzer

    Peach Fuzzer забезпечує більш надійне та захищене покриття, ніж сканер. Інші інструменти тестування можуть шукати лише відомі теми, тоді як Peach Fuzzer дозволяє користувачам знаходити відомі та невідомі теми.

  • Шиповий проксі

    Це інструмент професійного рівня, який шукає вразливості на рівні додатків у веб-додатках. Проксі-сервер SPIKE охоплює основи, такі як SQL Injection та сценарії між сайтами, але це повністю відкрита інфраструктура Python. Проксі-сервер SPIKE доступний для Linux та Windows.

  • Веб-карабін

    Webscarab написаний на Java, таким чином, портативний для багатьох платформ. Для аналізу додатків використовується фреймворк Webscarab, який взаємодіє за допомогою протоколів HTTP і HTTPS.

    Приклад: Webscarab працює як перехоплюючий проксі-сервер, він дозволяє оператору переглядати та модифікувати запит, створений браузером, до того, як сервер отримає їх. І дозволити переглянути та оновити відповідь, створену сервером до отримання браузером. Таким чином, якщо веб-скарабей знайде якусь лазівку, він створить список повідомлених проблем.

  • OWASP WSFuzzer

    WSFuzzer - це програма GPL, написана на Python. Програма GPL наразі націлена на веб-служби. У поточній версії OWASPWSFuzzer протоколи SOAP на основі HTTP є основною метою.

Переваги Fuzz-тестування

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

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

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

Короткий зміст:

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

Цю статтю внесла Приянка Коте