Fuzz Testing (Fuzzing) Tutorial
Hvad er Fuzz-test?
Fuzz test eller Fuzzing er en softwaretestteknik til at sætte ugyldige eller tilfældige data kaldet FUZZ ind i softwaresystemet for at opdage kodningsfejl og sikkerhedshuller. Formålet med fuzz-test er at indsætte data ved hjælp af automatiserede eller semi-automatiserede teknikker og teste systemet for forskellige undtagelser som systemnedbrud eller fejl i indbygget kode osv.
Fuzz-test blev oprindeligt udviklet af Barton Miller ved University of Wisconsin i 1989. Fuzz-test eller fuzzing er en softwaretestteknik, og det er en type Sikkerhedstest.
Hvorfor lave Fuzz-test?
- Normalt finder Fuzzy-test den mest alvorlige sikkerhedsfejl eller defekt.
- Fuzz-test giver et mere effektivt resultat, når det bruges sammen med Sort Box Test, Beta-testning og andre fejlfindingsmetoder.
- Fuzz-test bruges til at kontrollere softwarens sårbarhed. Det er meget omkostningseffektive testteknikker.
- Fuzz-test er en af de sorte boks-testteknikker. Fuzzing er en af de mest almindelige metoder, som hackere bruger til at finde systemets sårbarhed.
Sådan laver du Fuzz-test
Trinnene til fuzzy test inkluderer de grundlæggende testtrin-
Trin 1) Identificer målsystemet
Trin 2) Identificer input
Trin 3) Generer fuzzed data
Trin 4) Udfør testen ved hjælp af fuzzy data
Trin 5) Overvåg systemets adfærd
Trin 6) Log defekter
Eksempler på Fuzzers
- Mutationsbaserede fuzzere ændre eksisterende dataeksempler for at oprette nye testdata. Dette er den meget enkle og ligetil tilgang, dette starter med gyldige prøver af protokol og bliver ved med at mangle hver byte eller fil.
- Generationsbaserede fuzzere definere nye data baseret på input fra modellen. Det begynder at generere input fra bunden baseret på specifikationen.
- PROTOKOLBASERET-fuzzer, den mest succesrige fuzzer er at have detaljeret viden om det protokolformat, der testes. Forståelsen afhænger af specifikationen. Det involverer at skrive en række af specifikationen ind i værktøjet og derefter ved at bruge modelbaseret testgenereringsteknik gå gennem specifikationen og tilføje uregelmæssigheder i dataindholdet, sekvensen osv. Dette er også kendt som syntakstest, grammatiktest, robusthedstest, osv. Fuzzer kan generere testcases fra en eksisterende, eller de kan bruge gyldige eller ugyldige input.
Der er to begrænsninger af protokolbaseret fuzzing:
- Testning kan ikke fortsætte, før specifikationen er moden.
- Mange nyttige protokoller er en udvidelse af offentliggjorte protokoller. Hvis fuzz-testning er baseret på offentliggjorte specifikationer, Testdækning for nye protokoller vil være begrænset.
Den enkleste form for fuzzing-teknik er at sende tilfældige input til softwaren enten som protokolpakker eller som en begivenhed. Denne teknik til at sende tilfældige input er meget effektiv til at finde fejl i mange applikationer og tjenester. Andre teknikker er også tilgængelige, og det er meget nemt at implementere. For at implementere disse teknikker skal vi blot ændre de eksisterende input. Vi kan ændre input blot ved at udveksle input bits.
Typer af fejl opdaget af Fuzz Testing
- Påstandsfejl og hukommelseslækager denne metode er meget brugt til store applikationer, hvor fejl påvirker hukommelsessikkerheden, hvilket er en alvorlig sårbarhed.
- Ugyldigt input I fuzz-testning bruges fuzzere til at generere et ugyldigt input, som bruges til at teste fejlhåndteringsrutiner, og dette er vigtigt for softwaren, som ikke kontrollerer dens input. Simpel fuzzing kan være kendt som en måde at automatisere negativ test på.
- Korrekthedsfejl Fuzzing kan også bruges til at opdage nogle typer "korrektheds"-fejl. Såsom en beskadiget database, dårlige søgeresultater osv.
Fuzz-testværktøjer
Værktøjer som bruges i websikkerhed kan i vid udstrækning bruges i fuzz-test som f.eks Burp Suite, Peach Fuzzer osv.
- Peach Fuzzer: Peach Fuzzer giver mere robust og sikkerhedsdækning end en scanner. Andre testværktøjer kan kun søge efter kendte tråde, hvorimod Peach Fuzzer gør det muligt for brugere at finde kendte og ukendte tråde.
- Spike Proxy: Det er et værktøj af professionel kvalitet, der leder efter sårbarheder på applikationsniveau i webapplikationer. SPIKE Proxy dækker det grundlæggende, som f.eks SQL Injektion og cross-site-scripting, men det er helt åbent Python infrastruktur. SPIKE Proxy er tilgængelig for Linux og Windows.
- Webskarabé: Webscarab er skrevet i Java dermed bærbar til mange platforme. Til analyse af applikationer bruges Webscarab framework, der kommunikerer ved hjælp af HTTP- og HTTPS-protokoller.ex: Webscarab fungerer som en aflytningsproxy, det giver operatøren mulighed for at gennemgå og ændre anmodninger oprettet af browseren, før de modtages af serveren. Og tillade at gennemgå og opdatere svar genereret af serveren før modtaget af browseren. På denne måde, hvis web scarab finder et smuthul, vil det komme på listen over de rapporterede problemer.
- OWASP WSFuzzer: WSFuzzer er et GPL-program, der er skrevet ind Python. GPL har i øjeblikket et program rettet mod webtjenester. I den nuværende version af OWASPWSFuzzer HTTP baseret SOAP tjenester er hovedmålet.
Fordele ved Fuzz-test
- Fuzz-test forbedrer softwaren Sikkerhedstest.
- Bugs fundet i fuzzing er nogle gange alvorlige og bruges det meste af tiden af hackere, herunder nedbrud, hukommelseslækage, uhåndteret undtagelse osv.
- Hvis nogen af fejlene ikke bliver bemærket af testerne på grund af begrænsning af tid og ressourcer, findes disse fejl også i Fuzz-test.
Ulemper ved Fuzz-test
- Fuzz-test kan ikke alene give et komplet billede af en overordnet sikkerhedstrussel eller fejl.
- Fuzz-test er mindre effektiv til at håndtere sikkerhedstrusler, der ikke forårsager programnedbrud, såsom nogle vira, orme, trojanske, osv.
- Fuzz-test kan kun opdage simple fejl eller trusler.
- For at udføre effektivt vil det kræve betydelig tid.
- At indstille en grænseværdibetingelse med tilfældige input er meget problematisk, men nu løser de fleste af testerne dette problem ved at bruge deterministiske algoritmer baseret på brugerinput.
Resumé
I Software Engineering viser Fuzz-test tilstedeværelsen af fejl i en applikation. Fuzzing kan ikke garantere detektering af fejl fuldstændigt i en applikation. Men ved at bruge Fuzz teknik sikrer det, at applikationen er robust og sikker, da denne teknik er med til at afsløre de fleste af de almindelige sårbarheder.