Fuzz testavimas
„Fuzz Testing“ arba „Fuzzing“ yra programinės įrangos testavimo technika, leidžianti neteisingus ar atsitiktinius duomenis, vadinamus FUZZ, įdėti į programinės įrangos sistemą, kad būtų galima rasti kodavimo klaidas ir saugumo spragas. „Fuzz“ testavimo tikslas yra įterpti duomenis naudojant automatizuotas ar pusiau automatizuotas technologijas ir išbandyti sistemą, ar nėra įvairių išimčių, pvz., Sistemos strigčių ar integruoto kodo gedimo ir kt.
„Fuzz“ testavimą iš pradžių sukūrė Bartonas Milleris Viskonsino universitete 1989 m. „Fuzz“ testavimas arba „fuzzing“ yra programinės įrangos testavimo technika ir tai yra saugumo testavimo rūšis .
Kodėl reikia atlikti „Fuzz“ testavimą?
- Paprastai atliekant „Fuzzy“ testavimą nustatomas rimčiausias saugumo sutrikimas ar defektas.
- „Fuzz“ testavimas suteikia efektyvesnį rezultatą, kai naudojamas su „Black Box“ testavimu, beta testavimu ir kitais derinimo metodais.
- „Fuzz“ testavimas naudojamas programinės įrangos pažeidžiamumui patikrinti. Tai labai ekonomiški testavimo metodai.
- „Fuzz“ testavimas yra viena iš juodosios dėžės testavimo technikos. „Fuzzing“ yra vienas iš labiausiai paplitusių įsilaužėlių, naudojamų sistemos pažeidžiamumui nustatyti.
Kaip atlikti „Fuzz“ testavimą
Neaiškių bandymų veiksmai apima pagrindinius bandymo veiksmus -
1 žingsnis) Nustatykite tikslinę sistemą
2 žingsnis) Nustatykite įvestis
3 žingsnis) Generuokite „Fuzzed“ duomenis
4 žingsnis) Atlikite testą naudodami neaiškius duomenis
5 žingsnis) Stebėkite sistemos elgseną
6 žingsnis) Žurnalo defektai
„Fuzzers“ pavyzdžiai
-
Mutacijomis pagrįsti „Fuzzers“ keičia esamus duomenų pavyzdžius, kad sukurtų naujus bandymų duomenis. Tai yra labai paprastas ir aiškus metodas, pradedant nuo galiojančių protokolo pavyzdžių ir nuolat baksnojant kiekvieną baitą ar failą.
-
Kartos „Fuzzers“ apibrėžia naujus duomenis, remdamiesi modelio įvestimi. Jis pradeda generuoti įvestį nuo nulio, remdamasis specifikacija.
-
PROTOKOLO PAGRINDAS - „Fuzzer“ , sėkmingiausias „Fuzzer“ yra turėti išsamių žinių apie bandomą protokolo formatą. Supratimas priklauso nuo specifikacijos. Tai reiškia, kad į įrankį reikia įrašyti specifikacijos masyvą, tada naudojant modeliu pagrįstą bandymų generavimo techniką pereiti specifikaciją ir pridėti duomenų turinio, sekos ir kt. Netolygumų. Tai taip pat žinoma kaip sintaksės testavimas, gramatikos testavimas, tvirtumo testavimas ir tt „Fuzzer“ gali generuoti bandymo atvejus iš esamo arba naudoti galiojančius ar neteisingus įvestis.
Yra du apribojimai protokolais pagrįsti:
- Testavimas negali būti tęsiamas, kol specifikacija nėra subrendusi.
- Daugelis naudingų protokolų yra paskelbtų protokolų pratęsimas. Jei „fuzz“ testavimas grindžiamas paskelbtomis specifikacijomis, naujų protokolų testavimo aprėptis bus ribota.
Paprasčiausia sumaišytos technikos forma yra atsitiktinio įvesties siuntimas programinei įrangai kaip protokolo paketai arba kaip įvykis. Ši atsitiktinio įvesties perdavimo technika yra labai galinga norint rasti klaidų daugelyje programų ir paslaugų. Taip pat yra kitų būdų, kuriuos labai lengva įgyvendinti. Norėdami įgyvendinti šias technikas, mes tiesiog turime pakeisti esamus duomenis. Mes galime pakeisti įvestį, tiesiog pakeisdami įvesties bitus.
„Fuzz Testing“ aptiktų klaidų tipai
-
Tvirtinimo gedimai ir atminties nutekėjimas ši metodika plačiai naudojama didelėms programoms, kuriose klaidos daro įtaką atminties saugumui, o tai yra didelis pažeidžiamumas.
- Neteisinga įvestis
Atliekant „Fuzz“ testavimą, „Fuzzers“ naudojami sugeneruoti neteisingą įvestį, naudojamą klaidų tvarkymo rutinoms tikrinti, ir tai svarbu programinei įrangai, kuri nevaldo jo įvesties. Paprastas sumaišymas gali būti žinomas kaip būdas neigiamam testavimui automatizuoti.
- Teisingumo klaidos
„Fuzzing“ taip pat gali būti naudojamas tam tikrų tipų „teisingumo“ klaidoms aptikti. Pavyzdžiui, sugadinta duomenų bazė, prasti paieškos rezultatai ir kt.
„Fuzz“ testavimo įrankiai
Žiniatinklio saugumui naudojami įrankiai gali būti plačiai naudojami atliekant „Fuzz“ bandymus, pvz., „Burp Suite“, „Peach Fuzzer“ ir kt.
- Persikų „Fuzzer“
„Peach Fuzzer“ suteikia patikimesnę ir saugesnę aprėptį nei skaitytuvas. Kiti bandymo įrankiai gali ieškoti tik žinomų gijų, o „Peach Fuzzer“ leidžia vartotojams rasti žinomas ir nežinomas gijas.
- „Spike Proxy“
Tai profesionalaus lygio įrankis, ieškantis žiniatinklio programų pažeidžiamumų. „SPIKE Proxy“ apima pagrindus, tokius kaip „SQL Injection“ ir skirtingų svetainių scenarijus, tačiau tai yra visiškai atvira „Python“ infrastruktūra. „SPIKE Proxy“ galima naudoti „Linux“ ir „Windows“.
- „Webscarab“
„Webscarab“ yra parašytas „Java“ kalba, todėl jį galima perkelti į daugelį platformų. Programai analizuoti naudojama „Webscarab“ sistema, kuri bendrauja naudojant HTTP ir HTTPS protokolus.
Pvz .: „ Webscarab“ veikia kaip perimantis tarpinis serveris, jis leidžia operatoriui peržiūrėti ir modifikuoti naršyklės sukurtą užklausą, kol serveris jų negavo. Leiskite peržiūrėti ir atnaujinti atsakymą, kurį sugeneravo serveris, kol jo negavo naršyklė. Tokiu būdu, jei žiniatinklio skarabėjus aptiks kokių nors spragų, jis sudarys nurodytų problemų sąrašą.
- OWASP WSFuzzer
„WSFuzzer“ yra „GPL'd“ programa, parašyta „Python“. „GPL'd“ programa šiuo metu taikoma žiniatinklio paslaugoms. Dabartinėje OWASPWSFuzzer versijoje HTTP tikslinės SOAP paslaugos yra pagrindinis tikslas.
Fuzz testavimo pranašumai
- „Fuzz“ testavimas pagerina programinės įrangos saugos testavimą.
- Dažniausiai aptinkamos klaidos yra sunkios ir dažniausiai įsilaužėliai naudojasi, įskaitant avarijas, atminties nutekėjimą, neapdorotas išimtis ir kt.
- Jei dėl laiko ir išteklių ribotumo testuotojai nepastebi kokios nors klaidos, šios klaidos taip pat randamos „Fuzz“ testavime.
„Fuzz“ testavimo trūkumai
- Vien „Fuzz“ testavimas negali pateikti išsamaus bendros grėsmės saugumui ar klaidų vaizdo.
- „Fuzz“ testavimas yra mažiau efektyvus sprendžiant saugumo grėsmes, kurios nesukelia programos strigčių, pvz., Kai kuriuos virusus, kirminus, Trojaną ir kt.
- „Fuzz“ bandymai gali aptikti tik paprastus gedimus ar grėsmes.
- Norint efektyviai veikti, reikės daug laiko.
- Ribinės vertės sąlygos nustatymas atsitiktiniais įėjimais yra labai problemiškas, tačiau dabar naudojant deterministinius algoritmus, pagrįstus vartotojų įvestimis, dauguma testuotojų išsprendžia šią problemą.
Santrauka:
Programinės įrangos inžinerijoje „Fuzz“ testavimas parodo klaidų buvimą programoje. „Fuzzing“ negali garantuoti, kad programoje aptiktos klaidos. Tačiau naudojant „Fuzz“ techniką, tai užtikrina, kad programa yra patikima ir saugi, nes ši technika padeda atskleisti daugumą įprastų pažeidžiamumų.
Prie šio straipsnio prisidėjo Priyanka Kothe