Урок за тестване на Fuzz (Fuzing).
Какво е Fuzz тестване?
Fuzz тестване или Fuzzing е техника за тестване на софтуер за въвеждане на невалидни или произволни данни, наречени FUZZ, в софтуерната система за откриване на грешки в кодирането и вратички в сигурността. Целта на fuzz тестването е вмъкване на данни с помощта на автоматизирани или полуавтоматизирани техники и тестване на системата за различни изключения като системен срив или повреда на вградения код и т.н.
Fuzz тестването първоначално е разработено от Barton Miller в Университета на Уисконсин през 1989 г. Fuzz тестването или fuzzing е техника за тестване на софтуер и е вид Тестване на сигурността.
Защо да правите Fuzz тестване?
- Обикновено Fuzzy тестването открива най-сериозния пропуск или дефект в сигурността.
- Fuzz тестването дава по-ефективен резултат, когато се използва с черно Box Тестване, бета тестване и други методи за отстраняване на грешки.
- Fuzz тестването се използва за проверка на уязвимостта на софтуера. Това е много рентабилна техника за тестване.
- Fuzz тестването е една от техниките за тестване на черната кутия. Fuzzing е един от най-разпространените методи, използвани от хакерите за намиране на уязвимости на системата.
Как да направите Fuzz тестване
Стъпките за размито тестване включват основните стъпки на тестване-
Стъпка 1) Идентифицирайте целевата система
Стъпка 2) Идентифицирайте входовете
Стъпка 3) Генериране на Fuzzed данни
Стъпка 4) Изпълнете теста с помощта на размити данни
Стъпка 5) Наблюдавайте поведението на системата
Стъпка 6) Дефекти в регистрационния файл
Примери за Fuzzers
- Фузъри, базирани на мутации променете съществуващи проби от данни, за да създадете нови тестови данни. Това е много прост и ясен подход, който започва с валидни примери на протокол и продължава да обърка всеки байт или файл.
- Базирани на генериране Fuzzers дефиниране на нови данни въз основа на входа на модела. Той започва да генерира вход от нулата въз основа на спецификацията.
- БАЗИРАН НА ПРОТОКОЛ-фузер, най-успешният fuzzer е да имате подробни познания за тествания формат на протокола. Разбирането зависи от спецификацията. Това включва писане на масив от спецификацията в инструмента, след което чрез използване на техника за генериране на тест, базирана на модел, преминаване през спецификацията и добавяне на нередности в съдържанието на данните, последователността и т.н. Това е известно също като тестване на синтаксис, тестване на граматика, тестване на устойчивост, и т.н. Fuzzer може да генерира тестови случаи от съществуващ или може да използва валидни или невалидни входни данни.
Има две ограничения на базирания на протокол размиване:
- Тестването не може да продължи, докато спецификацията не е узряла.
- Много полезни протоколи са разширение на публикувани протоколи. Ако тестването на мъх се основава на публикувани спецификации, Тестово покритие за нови протоколи ще бъдат ограничени.
Най-простата форма на фъзинг техника е изпращането на случаен вход към софтуера или като протоколни пакети, или като събитие. Тази техника за предаване на случаен вход е много мощна за намиране на грешки в много приложения и услуги. Предлагат се и други техники, които са много лесни за изпълнение. За да приложим тези техники, просто трябва да променим съществуващите входове. Можем да променим входа само като разменим битовете на входа.
Видове бъгове, открити от Fuzz Testing
- Неуспешни твърдения и изтичане на памет тази методология се използва широко за големи приложения, където грешките засягат безопасността на паметта, което е сериозна уязвимост.
- Невалидно въвеждане При тестване на размити размити се използват за генериране на невалиден вход, който се използва за тестване на рутинни процедури за обработка на грешки и това е важно за софтуера, който не контролира своя вход. Обикновеното размиване може да бъде известно като начин за автоматизиране на отрицателното тестване.
- Грешки в коректността Fuzzing може също да се използва за откриване на някои видове грешки в „коректността“. Като повредена база данни, лоши резултати от търсенето и др.
Инструменти за тестване на Fuzz
Инструментите, които се използват в уеб сигурността, могат да се използват широко при тестване на fuzz като напр Burp Suite, Peach Fuzzer и др.
- Праскова Fuzzer: Peach Fuzzer осигурява по-здраво и защитено покритие от скенер. Други инструменти за тестване могат да търсят само известни нишки, докато Peach Fuzzer позволява на потребителите да намират познати и непознати нишки.
- Спайк прокси: Това е инструмент от професионален клас, който търси уязвимости на ниво приложение в уеб приложенията. SPIKE Proxy покрива основите, като напр SQL Инжектиране и скриптове между сайтове, но е напълно отворен Python инфраструктура. SPIKE Proxy е достъпен за Linux намлява Windows.
- Уебскарабей: Webscarab е написан на Java по този начин преносим към много платформи. За анализиране на приложението се използва рамка Webscarab, която комуникира чрез HTTP и HTTPS протоколи.пр: Webscarab работи като прихващащ прокси, позволява на оператора да преглежда и променя заявката, създадена от браузъра, преди да бъде получена от сървъра. И позволява преглед и актуализиране на отговор, генериран от сървъра, преди да бъде получен от браузъра. По този начин, ако web scarab открие някаква вратичка, той ще влезе в списъка на докладваните проблеми.
- OWASP WSFuzzer: WSFuzzer е програма под GPL, написана на Python. GPL даде програма, която в момента е насочена към уеб услуги. В текущата версия на OWASPWSFuzzer базиран на HTTP SOAP услуги са основната цел.
Предимства на Fuzz тестването
- Fuzz тестването подобрява софтуера Тестване на сигурността.
- Грешките, открити във фъзинг, понякога са сериозни и през повечето време се използват от хакери, включително сривове, изтичане на памет, необработено изключение и т.н.
- Ако някоя от грешките не бъде забелязана от тестерите поради ограничението на времето и ресурсите, тези грешки също се откриват при тестване на Fuzz.
Недостатъци на Fuzz тестването
- Fuzz тестването само по себе си не може да предостави пълна картина на цялостна заплаха за сигурността или грешки.
- Fuzz тестването е по-малко ефективно за справяне със заплахи за сигурността, които не причиняват сривове на програмата, като някои вируси, червеи, троянски коне и др.
- Fuzz тестването може да открие само прости грешки или заплахи.
- За да се изпълни ефективно, това ще изисква значително време.
- Задаването на условие за гранична стойност с произволни входни данни е много проблематично, но сега с помощта на детерминистични алгоритми, базирани на потребителски входни данни, повечето тестери решават този проблем.
Oбобщение
В софтуерното инженерство Fuzz тестването показва наличието на грешки в дадено приложение. Fuzzing не може да гарантира пълно откриване на грешки в приложение. Но чрез използването на техниката Fuzz, тя гарантира, че приложението е стабилно и сигурно, тъй като тази техника помага да се разкрият повечето от често срещаните уязвимости.