Fuzz тестване (Fuzzing) Урок: Какво е, типове, инструменти & Пример

Съдържание:

Anonim

Fuzz тестване

Fuzz Testing или Fuzzing е техника за тестване на софтуер за въвеждане на невалидни или произволни данни, наречени FUZZ, в софтуерна система за откриване на грешки в кодирането и вратички в сигурността. Целта на теста за размиване е вмъкване на данни с помощта на автоматизирани или полуавтоматизирани техники и тестване на системата за различни изключения като срив на системата или отказ на вградения код и др.

Fuzz тестването първоначално е разработено от Barton Miller от Университета на Уисконсин през 1989 г. Fuzz тестването или размиването е техника за тестване на софтуера и е вид Тестване на сигурността .

Защо да се прави Fuzz тестване?

  • Обикновено размитото тестване открива най-сериозната повреда или дефект в сигурността.
  • Fuzz тестването дава по-ефективен резултат, когато се използва с тестване на Black Box, бета тестване и други методи за отстраняване на грешки.
  • Fuzz тестване се използва за проверка на уязвимостта на софтуера. Това е много рентабилни техники за тестване.
  • Fuzz тестването е една от техниката за тестване на черната кутия. Fuzzing е един от най-разпространените хакери, използвани за намиране на уязвимост на системата.

Как да направите Fuzz тестване

Стъпките за размито тестване включват основните стъпки за тестване-

Стъпка 1) Идентифицирайте целевата система

Стъпка 2) Идентифицирайте входовете

Стъпка 3) Генериране на размити данни

Стъпка 4) Изпълнете теста, като използвате размити данни

Стъпка 5) Следете поведението на системата

Стъпка 6) Дефекти в дневника

Примери за Fuzzers

  • Въз основа на мутация Fuzzers променят съществуващите проби от данни, за да създадат нови тестови данни. Това е много простият и ясен подход, който започва с валидни проби от протокол и продължава да манипулира всеки байт или файл.

  • Базираните на поколения Fuzzers дефинират нови данни въз основа на входа на модела. Той започва да генерира входни данни от нулата въз основа на спецификацията.

  • ФУЗЕР НА ОСНОВАНИЯ ПРОТОКОЛ , най-успешният фузер е да има подробни познания за тествания формат на протокола. Разбирането зависи от спецификацията. Включва записване на масив от спецификацията в инструмента, след което с помощта на базираната на модел техника за генериране на тестове преминава през спецификацията и добавя нередности в съдържанието на данните, последователността и т.н. и т.н. Fuzzer може да генерира тестови случаи от съществуващ или може да използва валидни или невалидни входове.

Има две ограничения на размиването, базирано на протокол:

  1. Тестването не може да продължи, докато спецификацията не узрее.
  2. Много полезни протоколи са продължение на публикуваните протоколи. Ако тестването на fuzz се основава на публикувани спецификации, обхватът на тестовете за нови протоколи ще бъде ограничен.

Най-простата форма на техниката на размиване е изпращането на произволен вход към софтуера или като пакети от протоколи, или като събитие. Тази техника на предаване на произволно въвеждане е много мощна за намиране на грешки в много приложения и услуги. Предлагат се и други техники, които са много лесни за изпълнение. За да приложим тези техники, просто трябва да променим съществуващите входове. Можем да променим входа само като разменим битовете на входа.

Видове грешки, открити чрез Fuzz тестване

  • При неуспешни твърдения и изтичане на памет тази методология се използва широко за големи приложения, където грешките влияят върху безопасността на паметта, което е сериозна уязвимост.

  • Невалидно въвеждане

    При fuzz тестване, fuzzers се използват за генериране на невалиден вход, който се използва за тестване на процедури за обработка на грешки, и това е важно за софтуера, който не контролира своя вход. Обикновеното размиване може да бъде известно като начин за автоматизиране на отрицателното тестване.

  • Грешки в коректността

    Размиването може да се използва и за откриване на някои видове грешки в „коректността“. Като например повредена база данни, лоши резултати от търсенето и т.н.

    Инструменти за тестване на Fuzz

    Инструменти, които се използват в уеб сигурността, могат да бъдат широко използвани при тестване на размиване като Burp Suite, Peach Fuzzer и др.

  • Праскова Fuzzer

    Peach Fuzzer осигурява по-стабилно и защитно покритие от скенера. Други инструменти за тестване могат да търсят само известни нишки, докато Peach Fuzzer позволяват на потребителите да намират известни и неизвестни нишки.

  • Spike Proxy

    Това е инструмент от професионален клас, който търси уязвимости на ниво приложение в уеб приложенията. SPIKE Proxy обхваща основите, като SQL Injection и скриптове на различни сайтове, но е напълно отворена Python инфраструктура. SPIKE Proxy се предлага за Linux и Windows.

  • Уебскараб

    Webscarab е написан на Java, като по този начин се пренася на много платформи. За анализ на приложението се използва Webscarab framework, който комуникира чрез HTTP и HTTPS протоколи.

    Пример: Webscarab работи като прихващащ прокси сървър, той позволява на оператора да преглежда и модифицира заявка, създадена от браузъра, преди те да бъдат получени от сървъра. И позволете да прегледате и актуализирате отговора, генериран от сървъра, преди да бъде получен от браузъра. По този начин, ако уеб скарабеят намери някаква вратичка, той ще направи списъка с докладваните проблеми.

  • OWASP WSFuzzer

    WSFuzzer е програма на GPL, написана на Python. Понастоящем GPL е насочена към уеб услуги. В текущата версия на OWASPWSFuzzer базирани на HTTP SOAP услуги са основната цел.

Предимства на Fuzz тестването

  • Fuzz тестването подобрява софтуерното тестване на сигурността.
  • Грешките, открити при размиване, понякога са сериозни и през повечето време се използват от хакери, включително сривове, изтичане на памет, необработено изключение и т.н.
  • Ако някоя от грешките не успее да бъде забелязана от тестерите поради ограничението на времето и ресурсите, тези грешки също се намират при Fuzz тестване.

Недостатъци на Fuzz тестване

  • Fuzz тестването само по себе си не може да даде пълна картина на цялостна заплаха за сигурността или грешки.
  • Fuzz тестването е по-малко ефективно за справяне със заплахи за сигурността, които не причиняват сривове на програмата, като някои вируси, червеи, троянски коне и т.н.
  • Fuzz тестването може да открие само прости грешки или заплахи.
  • За ефективно представяне ще е необходимо значително време.
  • Задаването на условие за гранична стойност с произволни входове е много проблематично, но сега с помощта на детерминирани алгоритми, базирани на потребителски входове, повечето от тестерите решават този проблем.

Резюме:

В софтуерното инженерство Fuzz тестването показва наличие на грешки в дадено приложение. Fuzzing не може да гарантира напълно откриване на грешки в приложение. Но използвайки Fuzz техника, тя гарантира, че приложението е надеждно и сигурно, тъй като тази техника помага да се разкрият повечето от често срещаните уязвимости.

Тази статия е предоставена от Приянка Коте