Fuzz-testing
Fuzz Testing eller Fuzzing er en programvaretesteteknikk for å sette ugyldige eller tilfeldige data kalt FUZZ inn i programvaresystemet for å oppdage kodingsfeil og sikkerhetssmutthull. Hensikten med fuzz-testing er å sette inn data ved hjelp av automatiserte eller halvautomatiske teknikker og teste systemet for forskjellige unntak som systemkrasj eller svikt i innebygd kode, etc.
Fuzz-testing ble opprinnelig utviklet av Barton Miller ved University of Wisconsin i 1989. Fuzz-testing eller fuzzing er en programvaretesteteknikk, og det er en type sikkerhetstesting .
Hvorfor gjøre Fuzz-testing?
- Vanligvis finner Fuzzy testing den alvorligste sikkerhetsfeilen eller feilen.
- Fuzz-testing gir et mer effektivt resultat når det brukes med Black Box Testing, Beta Testing og andre feilsøkingsmetoder.
- Fuzz-testing brukes til å kontrollere sikkerhetsproblemet i programvaren. Det er veldig kostnadseffektive testteknikker.
- Fuzz-testing er en av testteknikkene i black box. Fuzzing er en av de vanligste metodene hackere brukes til å finne sårbarhet i systemet.
Hvordan gjøre Fuzz-testing
Trinnene for fuzzy testing inkluderer de grunnleggende testtrinnene-
Trinn 1) Identifiser målsystemet
Trinn 2) Identifiser innganger
Trinn 3) Generer Fuzzed-data
Trinn 4) Utfør testen ved hjelp av uklare data
Trinn 5) Overvåk systematferd
Trinn 6) Loggfeil
Eksempler på Fuzzers
-
Mutasjonsbaserte Fuzzers endrer eksisterende dataprøver for å lage nye testdata. Dette er den veldig enkle og greie tilnærmingen, dette starter med gyldige eksempler på protokoller og mangler hver byte eller fil.
-
Generasjonsbaserte Fuzzers definerer nye data basert på inngangen til modellen. Det begynner å generere innspill fra bunnen av basert på spesifikasjonen.
-
PROTOCOL-BASED-fuzzer , den mest vellykkede fuzzer er å ha detaljert kunnskap om protokollformat som testes. Forståelsen avhenger av spesifikasjonen. Det innebærer å skrive en rekke spesifikasjonene inn i verktøyet, og deretter bruke modellbasert testgenereringsteknikk, gå gjennom spesifikasjonen og legge til uregelmessighet i datainnholdet, sekvensen osv. Dette er også kjent som syntaksprøving, grammatikkprøving, robusthetsprøving, etc. Fuzzer kan generere testtilfeller fra en eksisterende, eller de kan bruke gyldige eller ugyldige innganger.
Det er to begrensninger for protokollbasert fuzzing:
- Testing kan ikke fortsette før spesifikasjonen er moden.
- Mange nyttige protokoller er en utvidelse av publiserte protokoller. Hvis fuzz-testing er basert på publiserte spesifikasjoner, vil testdekning for nye protokoller være begrenset.
Den enkleste formen for fuzzing-teknikk er å sende tilfeldig input til programvaren enten som protokollpakker eller som en hendelse. Denne teknikken for å sende tilfeldig input er veldig kraftig for å finne feil i mange applikasjoner og tjenester. Andre teknikker er også tilgjengelige, og det er veldig enkelt å implementere. For å implementere disse teknikkene trenger vi bare å endre eksisterende innganger. Vi kan endre inngang bare ved å bytte biter av inngang.
Typer av feil oppdaget av Fuzz Testing
-
Påstandssvikt og minnelekkasjer denne metoden brukes mye for store applikasjoner der feil påvirker sikkerheten til minnet, noe som er en alvorlig sårbarhet.
- Ugyldig inndata
I fuzz-testing brukes fuzzers til å generere en ugyldig inngang som brukes til å teste feilhåndteringsrutiner, og dette er viktig for programvaren som ikke kontrollerer inngangen. Enkel fuzzing kan være kjent som en måte å automatisere negativ testing på.
- Korrekthetsfeil
Fuzzing kan også brukes til å oppdage noen typer "korrekthets" feil. Slik som en ødelagt database, dårlige søkeresultater osv.
Fuzz testverktøy
Verktøy som brukes i websikkerhet kan brukes mye i fuzz-testing som Burp Suite, Peach Fuzzer, etc.
- Fersken Fuzzer
Peach Fuzzer gir mer robust og sikkerhetsdekning enn en skanner. Andre testverktøy kan bare søke etter kjente tråder, mens Peach Fuzzer gjør det mulig for brukere å finne kjente og ukjente tråder.
- Spike Proxy
Det er et profesjonelt verktøy som leter etter sårbarheter på applikasjonsnivå i webapplikasjoner. SPIKE Proxy dekker det grunnleggende, for eksempel SQL Injection og cross-site-scripting, men det er helt åpen Python-infrastruktur. SPIKE Proxy er tilgjengelig for Linux og Windows.
- Webscarab
Webscarab er skrevet i Java og dermed bærbar til mange plattformer. For å analysere applikasjon brukes Webscarab framework som kommuniserer ved hjelp av HTTP- og HTTPS-protokoller.
Eks: Webscarab fungerer som en avlyttende proxy, det lar operatøren gjennomgå og endre forespørsel opprettet av nettleseren før de mottas av serveren. Og tillat å se gjennom og oppdatere svar generert av serveren før de mottas av nettleseren. På denne måten, hvis nettskarabé finner noe smutthull, vil det komme opp på listen over rapporterte problemer.
- OWASP WSFuzzer
WSFuzzer er et GPL-program som er skrevet i Python. GPL hadde et program som for øyeblikket retter seg mot Web Services. I den nåværende versjonen av OWASPWSFuzzer er HTTP-baserte SOAP-tjenester hovedmålet.
Fordeler med Fuzz-testing
- Fuzz-testing forbedrer programvaresikkerhetstesting.
- Feil funnet i fuzzing er noen ganger alvorlige og brukes ofte av hackere, inkludert krasj, minnelekkasje, unhandled unntak, etc.
- Hvis noen av feilene ikke blir lagt merke til av testerne på grunn av tidsbegrensning og ressurser, finnes disse feilene også i Fuzz-testing.
Ulemper ved Fuzz Testing
- Fuzz-testing alene kan ikke gi et komplett bilde av en generell sikkerhetstrussel eller feil.
- Fuzz-testing er mindre effektiv for å håndtere sikkerhetstrusler som ikke forårsaker programkrasj, for eksempel noen virus, ormer, trojaner etc.
- Fuzz-testing kan bare oppdage enkle feil eller trusler.
- For å prestere effektivt, vil det ta betydelig tid.
- Å sette en grenseverdibetingelse med tilfeldige innganger er veldig problematisk, men nå bruker deterministiske algoritmer basert på brukerinnganger, de fleste testere løser dette problemet.
Sammendrag:
I Software Engineering viser Fuzz-testing tilstedeværelsen av feil i et program. Fuzzing kan ikke garantere oppdagelse av feil helt i et program. Men ved å bruke Fuzz-teknikken, sørger det for at applikasjonen er robust og sikker, siden denne teknikken hjelper med å avsløre de fleste vanlige sårbarhetene.
Denne artikkelen er bidratt av Priyanka Kothe