Fuzz-testing (fuzzing) veiledning
Hva er Fuzz-testing?
Fuzz-testing eller Fuzzing er en programvaretestteknikk for å sette ugyldige eller tilfeldige data kalt FUZZ inn i programvaresystemet for å oppdage kodefeil og sikkerhetshull. Formålet med fuzz-testing er å sette inn data ved hjelp av automatiserte eller semi-automatiserte teknikker og teste systemet for ulike unntak som systemkrasj eller feil i innebygd kode, etc.
Fuzz-testing ble opprinnelig utviklet av Barton Miller ved University of Wisconsin i 1989. Fuzz-testing eller fuzzing er en programvaretestingsteknikk, og det er en type Sikkerhetstesting.
Hvorfor gjøre Fuzz-testing?
- Vanligvis finner Fuzzy-testing den mest alvorlige sikkerhetsfeilen eller defekten.
- Fuzz-testing gir mer effektivt resultat når det brukes med Svart Box Testing, Beta-testing og andre feilsøkingsmetoder.
- Fuzz-testing brukes til å sjekke sårbarheten til programvare. Det er svært kostnadseffektive testteknikker.
- Fuzz-testing er en av de svarte boks-testteknikkene. Fuzzing er en av de vanligste metodene som hackere bruker for å finne sårbarheten til systemet.
Slik gjør du Fuzz-testing
Trinnene for uklar 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 å bruke uklare data
Trinn 5) Overvåk systemets oppførsel
Trinn 6) Loggfeil
Eksempler på Fuzzers
- Mutasjonsbaserte fuzzere endre eksisterende dataeksempler for å lage nye testdata. Dette er den veldig enkle og greie tilnærmingen, dette starter med gyldige prøver av protokollen og fortsetter å mangle hver byte eller fil.
- Generasjonsbaserte fuzzere definere nye data basert på input fra modellen. Den begynner å generere input fra bunnen av basert på spesifikasjonen.
- PROTOKOLL-BASERT-fuzzer, den mest vellykkede fuzzeren er å ha detaljert kunnskap om protokollformatet som testes. Forståelsen avhenger av spesifikasjonen. Det innebærer å skrive en rekke av spesifikasjonen inn i verktøyet og deretter ved å bruke modellbasert testgenereringsteknikk gå gjennom spesifikasjonen og legge til uregelmessigheter i datainnholdet, sekvensen osv. Dette er også kjent som syntakstesting, grammatikktesting, robusthetstesting, etc. Fuzzer kan generere testcases fra en eksisterende, eller de kan bruke gyldige eller ugyldige innganger.
Det er to begrensninger for protokollbasert fuzzing:
- Testingen 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, Testdekning for nye protokoller vil være begrenset.
Den enkleste formen for fuzzing-teknikk er å sende tilfeldige input til programvaren enten som protokollpakker eller som en hendelse. Denne teknikken for å sende tilfeldig inndata 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 de eksisterende inngangene. Vi kan endre input bare ved å bytte ut bitene av input.
Typer feil oppdaget av Fuzz-testing
- Påstandsfeil og minnelekkasjer denne metodikken er mye brukt for store applikasjoner der feil påvirker sikkerheten til minnet, som er en alvorlig sårbarhet.
- Ugyldig inndata I fuzz-testing brukes fuzzere for å generere en ugyldig inngang som brukes til å teste feilhåndteringsrutiner, og dette er viktig for programvaren som ikke kontrollerer input. Enkel fuzzing kan være kjent som en måte å automatisere negativ testing.
- Korrekthetsfeil Fuzzing kan også brukes til å oppdage noen typer "korrekthets"-feil. For eksempel en ødelagt database, dårlige søkeresultater osv.
Fuzz-testverktøy
Verktøy som brukes i nettsikkerhet kan brukes mye i fuzz-testing som f.eks Burp Suite, Peach Fuzzer, etc.
- Peach Fuzzer: Peach Fuzzer gir mer robust og sikkerhetsdekning enn en skanner. Andre testverktøy kan kun søke etter kjente tråder, mens Peach Fuzzer lar brukere finne kjente og ukjente tråder.
- Spike Proxy: Det er et verktøy av profesjonell kvalitet som leter etter sårbarheter på applikasjonsnivå i webapplikasjoner. SPIKE Proxy dekker det grunnleggende, som f.eks SQL Injeksjon og cross-site-scripting, men det er helt åpent Python infrastruktur. SPIKE Proxy er tilgjengelig for Linux og Windows.
- Webscarab: Webscarab er skrevet i Java dermed bærbar til mange plattformer. For å analysere applikasjoner brukes Webscarab-rammeverket som kommuniserer ved hjelp av HTTP- og HTTPS-protokoller.ex: Webscarab fungerer som en avskjærende proxy, den lar operatøren se gjennom og endre forespørselen opprettet av nettleseren før de mottas av serveren. Og tillate å gjennomgå og oppdatere svar generert av serveren før mottatt av nettleseren. På denne måten, hvis nett-skarabé finner smutthull, vil den lage listen over de rapporterte problemene.
- OWASP WSFuzzer: WSFuzzer er et GPL-program som er skrevet inn Python. GPL har et program som for øyeblikket er rettet mot webtjenester. I den gjeldende versjonen av OWASPWSFuzzer HTTP-basert SOAP tjenester er hovedmålet.
Fordeler med Fuzz-testing
- Fuzz-testing forbedrer programvaren Sikkerhetstesting.
- Bugs funnet i fuzzing er noen ganger alvorlige og brukes mesteparten av tiden av hackere, inkludert krasj, minnelekkasje, ubehandlet unntak, etc.
- Hvis noen av feilene ikke blir lagt merke til av testerne på grunn av begrenset tid og ressurser, finnes disse feilene også i Fuzz-testing.
Ulemper med Fuzz-testing
- Fuzz-testing alene kan ikke gi et fullstendig 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, trojanske, etc.
- Fuzz-testing kan bare oppdage enkle feil eller trusler.
- For å utføre effektivt, vil det kreve betydelig tid.
- Å sette en grenseverdibetingelse med tilfeldige innganger er svært problematisk, men nå bruker deterministiske algoritmer basert på brukerinndata løser de fleste testerne dette problemet.
Sammendrag
I Software Engineering viser Fuzz-testing tilstedeværelsen av feil i en applikasjon. Fuzzing kan ikke garantere oppdagelse av feil fullstendig i en applikasjon. Men ved å bruke Fuzz-teknikk sikrer det at applikasjonen er robust og sikker, da denne teknikken bidrar til å avdekke de fleste vanlige sårbarhetene.