Фазинг-тестування (Fuzz testing)

FUZZ testing (fuzzing) - це тип тестування безпеки, який виявляє помилки кодування та лазівки у програмному забезпеченні, операційних системах чи мережах. Фазинг включає введення величезної кількості випадкових даних, званих fuzz, в програмне забезпечення, що тестується, щоб змусити його дати збій або прорвати його захист. Фазинг часто виявляє уразливості, які можуть бути використані за допомогою SQL-ін'єкції, переповнення буфера, відмови в обслуговуванні (DOS) та XSS. Fuzz-тестування виконується за допомогою фазера – програми, яка автоматично вводить напіввипадкові дані у програму та виявляє помилки. Fuzz-тестування зазвичай виконується автоматично.

Зазвичай fuzzing виявляє найбільш серйозні помилки або дефекти безпеки. Це дуже економічно ефективний метод тестування. Fuzzing - один із найпоширеніших методів хакерів, які використовуються для виявлення вразливості системи (сюди відносяться популярні SQL- або скриптові ін'єкції). Приклади фазерів:

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

  • Generation-Based Fuzzers: Цей тип фазера вимагає більшого інтелекту створення тестових даних із нуля, тобто. нові тестові дані створюються з урахуванням вхідний моделі. Зазвичай він розбиває протокол або формат файлу на фрагменти, які потім вишиковуються в допустимому порядку, і ці фрагменти випадково розподіляються незалежно один від одного;

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

Типи помилок, які виявляються Fuzz testing:

  • Збої асертів та витоку пам'яті (Assertion failures and memory leaks). Ця методологія широко використовується для великих програм, де помилки впливають на безпеку пам'яті, що є серйозною вразливістю;

  • Некоректне введення (Invalid input). Фазери використовуються для генерування неправильного введення, яке використовується для тестування процедур обробки помилок, і це важливо для програмного забезпечення, яке не контролює його введення. Простий фазинг може бути способом автоматизації негативного тестування;

  • Виправлення помилок (Correctness bugs). Fuzzing також можна використовувати для виявлення деяких типів помилок «правильності». Наприклад, пошкоджена база даних, погані результати пошуку тощо;

Джерела:

Дод. матеріал:

Фазинг тестування веб-інтерфейсу. Розшифровка доповіді

Last updated