Фазинг-тестування (Fuzz testing)
Last updated
Last updated
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 також можна використовувати для виявлення деяких типів помилок «правильності». Наприклад, пошкоджена база даних, погані результати пошуку тощо;
Джерела:
Дод. матеріал: