Fuzz-test
Fuzz Testing eller Fuzzing er en softwaretestteknik til at placere ugyldige eller tilfældige data kaldet FUZZ i softwaresystemet for at opdage kodningsfejl og sikkerhedsknegler. 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 svigt af 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 med Black Box Testing, Beta Testing og andre fejlretningsmetoder.
- Fuzz-test bruges til at kontrollere sårbarheden i software. Det er meget omkostningseffektive testteknikker.
- Fuzz-test er en af de sorte boks-testteknikker. Fuzzing er en af de mest almindelige metoder, hackere bruges til at finde systemets sårbarhed.
Hvordan man laver Fuzz-test
Trinene 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 systemadfærd
Trin 6) Logfejl
Eksempler på Fuzzers
-
Mutationsbaserede Fuzzers ændrer eksisterende dataprøver for at oprette nye testdata. Dette er den meget enkle og ligetil tilgang, dette starter med gyldige eksempler på protokoller og holder ved med at blande hver byte eller fil.
-
Generationsbaserede Fuzzers definerer nye data baseret på input af modellen. Det begynder at generere input fra bunden baseret på specifikationen.
-
PROTOCOL-BASED-fuzzer , den mest succesrige fuzzer er at have detaljeret viden om protokolformat, der testes. Forståelsen afhænger af specifikationen. Det indebærer at skrive en matrix af specifikationen i værktøjet og derefter ved hjælp af modelbaseret testgenereringsteknik gennemgå specifikationen og tilføje uregelmæssighed i dataindholdet, sekvensen osv. Dette er også kendt som syntaks-test, grammatik-test, robusthedstest, osv. Fuzzer kan generere testcases fra en eksisterende, eller de kan bruge gyldige eller ugyldige input.
Der er to begrænsninger for protokolbaseret fuzzing:
- Testning kan ikke fortsætte, før specifikationen er moden.
- Mange nyttige protokoller er en udvidelse af offentliggjorte protokoller. Hvis fuzz-test er baseret på offentliggjorte specifikationer, er testdækningen for nye protokoller begrænset.
Den enkleste form for fuzzing-teknik er at sende tilfældig input til softwaren enten som protokolpakker eller som en begivenhed. Denne teknik til at videregive tilfældig input er meget effektiv til at finde fejl i mange applikationer og tjenester. Andre teknikker er også tilgængelige, og det er meget let at implementere. For at implementere disse teknikker er vi bare nødt til at ændre de eksisterende input. Vi kan ændre input bare ved at udveksle inputbitene.
Typer af bugs opdaget ved Fuzz Testing
-
Påstandsvigt og hukommelseslækage Denne metode bruges i vid udstrækning til store applikationer, hvor fejl påvirker hukommelsessikkerheden, hvilket er en alvorlig sårbarhed.
- Ugyldigt input
I fuzz-test bruges fuzzers til at generere et ugyldigt input, der bruges til at teste fejlhåndteringsrutiner, og dette er vigtigt for softwaren, der ikke styrer dens input. Enkel fuzzing kan være kendt som en måde at automatisere negativ test på.
- Korrekthedsfejl
Fuzzing kan også bruges til at opdage nogle typer "korrekthed" -fejl. Såsom en beskadiget database, dårlige søgeresultater osv.
Fuzz testværktøjer
Værktøjer, der bruges i websikkerhed, kan i vid udstrækning bruges i fuzz-test såsom Burp Suite, Peach Fuzzer osv.
- Fersken Fuzzer
Peach Fuzzer giver mere robust og sikkerhedsdækning end en scanner. Andre testværktøjer kan kun søge efter kendte tråde, mens Peach Fuzzer gør det muligt for brugere at finde kendte og ukendte tråde.
- Spike Proxy
Det er et professionelt værktøj, der søger sårbarheder på applikationsniveau i webapplikationer. SPIKE Proxy dækker det grundlæggende, såsom SQL Injection og cross-site-scripting, men det er helt åben Python-infrastruktur. SPIKE Proxy er tilgængelig til Linux og Windows.
- Webscarab
Webscarab er skrevet i Java og dermed bærbar til mange platforme. Til analyse af applikation anvendes Webscarab framework, der kommunikerer ved hjælp af HTTP- og HTTPS-protokoller.
Eks: Webscarab fungerer som en opsnappende proxy, det giver operatøren mulighed for at gennemgå og ændre anmodning oprettet af browseren, før de modtages af serveren. Og tillad at gennemgå og opdatere svar genereret af serveren før modtaget af browseren. På denne måde, hvis web-scarab finder noget smuthul, vil det komme op på listen over de rapporterede problemer.
- OWASP WSFuzzer
WSFuzzer er et GPL-program, der er skrevet i Python. GPL havde et program, der i øjeblikket er målrettet mod webtjenester. I den aktuelle version af OWASPWSFuzzer er HTTP-baserede SOAP-tjenester det vigtigste mål.
Fordele ved Fuzz-test
- Fuzz-test forbedrer softwaresikkerhedstest.
- Fejl, der findes i fuzzing, er undertiden alvorlige, og det meste af tiden bruges af hackere, herunder nedbrud, hukommelseslækage, ubehandlet undtagelse osv.
- Hvis nogen af fejlene ikke bliver bemærket af testerne på grund af tidsbegrænsning og ressourcer, findes disse fejl også i Fuzz-test.
Ulemper ved Fuzz-test
- Fuzz-test alene kan ikke give et komplet billede af en generel sikkerhedstrussel eller fejl.
- Fuzz-test er mindre effektiv til håndtering af sikkerhedstrusler, der ikke forårsager programnedbrud, såsom nogle vira, orme, trojaner osv.
- Fuzz-test kan kun registrere enkle 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 ved hjælp af deterministiske algoritmer baseret på brugerindgange løser de fleste testere dette problem.
Resumé:
I Software Engineering viser Fuzz-test tilstedeværelsen af bugs i en applikation. Fuzzing kan ikke garantere afsløring af fejl helt i en applikation. Men ved at bruge Fuzz-teknikken sikrer det, at applikationen er robust og sikker, da denne teknik hjælper med at afsløre de fleste af de almindelige sårbarheder.
Denne artikel er bidraget af Priyanka Kothe