Programvaresårbarheter er et betydelig problem innen cybersikkerhet. De lar programvareprodukter bli angrepet, og når disse produktene er koblet til ellers sikre nettverk, kan de gi et inngangspunkt for hackere.

Alle profesjonelle programvareprodukter er grundig testet før utgivelse. Dessverre er sårbarheter fortsatt en vanlig forekomst. En måte å finne flere sårbarheter på er å bruke en programvaretestingsteknikk kjent som fuzzing.

Så hva er fuzzing og hvordan fungerer det?

Hva er fuzzing?

Fuzzing er en automatisert programvaretestingsteknikk som forsøker å finne sårbarheter ved å bruke tilfeldige inndata.

Programvare oppfører seg ofte uforutsigbart når brukeren legger inn et annet input enn det som ble bedt om. Fuzzing er praksisen med å legge inn store mengder uventede innganger og registrere hva som skjer. Tanken er at brukeren deretter kan overvåke programvaren og avgjøre om det er noen sårbarheter eller ikke.

Fuzzing brukes til å teste programvareprodukter og av sikkerhetseksperter for å finne ut om et nettverk er sikkert. Den brukes også av hackere som trener fuzzing for å finne sårbarheter som de selv kan bruke.

instagram viewer

Sårbarhetene som oppdages ved fuzzing varierer mye. En uventet inngang kan føre til at programvaren rett og slett krasjer. Men det kan også returnere privat informasjon eller tillate brukeren å få tilgang til deler av programvaren som ellers ville vært forbudt.

Hva er fordelene med fuzzing?

Fuzzing er bare en av mange måter programvareprodukter kan testes for sårbarheter. Det er populært fordi:

  • Fuzzing er helt automatisert. Når et fuzzing-program er satt opp, kan det fortsette å lete etter sårbarheter uten menneskelig innspill.
  • Fuzzing kan finne sårbarheter som andre teknikker for programvaretesting ikke gjør. På grunn av dette brukes det ofte i tillegg til manuelle teknikker.
  • Fuzzing brukes ofte av hackere til finne nulldagssårbarheter. Ved å bruke de samme teknikkene som hackere kan utviklere finne nulldagssårbarheter før de gjør det.

Hvordan fungerer fuzzing?

Et verktøy som brukes til fuzzing har vanligvis tre komponenter. De blir ofte referert til som en poet, en kurer og et orakel.

Poeten

Poeten starter prosessen og er ansvarlig for å generere en testcase. En testcase er en lang liste over potensielle innganger.

Kureren

Kureren setter inn alle tilfeldige inndata i den målrettede programvaren. Fuzzers er designet for å gjøre dette automatisk, slik at store mengder innganger kan testes i bulk.

Oraklet

Oraklet sjekker om noen av inngangene får programvaren til å gjøre noe annet enn den er laget for. Hvis fuzzing utføres for legitime formål, kan oppførselen deretter replikeres og fikses. Eller hvis fuzzing blir utført av en hacker, og den uventede oppførselen er nyttig, kan den brukes til ondsinnede formål.

Hvordan bruker angripere Fuzzing?

Fuzzing er en populær teknikk blant hackere fordi den lar dem finne sårbarheter i programvare uten tilgang til kildekoden. Fordi fuzzing er automatisert, er det også enkelt å utføre. Hvis en hacker oppdager en sårbarhet, kan de være i stand til å utføre følgende angrep.

DDoS-angrep

Hvis fuzzing oppdager at visse innganger krever lang tid å behandle, kan denne informasjonen brukes til å starte et DDoS-angrep. Et DDoS-angrep innebærer å sende så mange forespørsler til et system at det slutter å fungere. Fuzzing gjør at forespørsler kan skreddersys slik at de krever mest mulig systemressurser å svare på.

SQL-injeksjon

Et SQL-injeksjonsangrep er når ondsinnede SQL-setninger sendes til en applikasjon. Hvis disse uttalelsene ikke er ordentlig renset, kan de tillate en angriper å samhandle med databasen. Dette kan tillate dem å stjele data eller endre dem. Fuzzing er et effektivt verktøy for å forsøke store mengder SQL-setninger og avgjøre om noen gir en gunstig respons.

Bufferoverløp

Et bufferoverløpsangrep er når mer data legges til et programs buffer enn det kan håndtere. I dette scenariet er det mulig for en hacker å få det programmet til å kjøre ondsinnet kode. Dette kan brukes til å stjele data eller for å få uautorisert tilgang. Fuzzing brukes til å finne innganger som kan føre til at bufferoverløp oppstår.

Typer fuzzing

Fuzzing-verktøy kan klassifiseres basert på både hvordan testtilfeller genereres og hvor mye som er kjent om systemet.

Dumme vs. Smart

Dumb fuzzing legger ganske enkelt til store mengder tilfeldige innganger. Den velger ikke inndata som mest sannsynlig vil bli akseptert av søknaden. Dette gjør det enklere å implementere uten å vite noe om programvaren; Det er imidlertid også svært ineffektivt ettersom de fleste input vil bli avvist.

Smart fuzzing genererer inndata som applikasjonen sannsynligvis vil akseptere. Det krever at brukeren forstår hvilket inputformat som er akseptabelt og deretter genererer store mengder input innenfor det formatet. Smart fuzzing krever mer innsats og produktkunnskap å implementere, men det er betydelig mer effektivt.

Mutasjons vs. Generasjonell

Mutasjonsfuzzere tar et input som tidligere ble akseptert og gjør mindre endringer i det. Dette gjør det mulig å generere inndata som sannsynligvis vil bli akseptert uten kunnskap om det aksepterte formatet.

Generasjonsfuzzere skaper helt nye input basert på det som er kjent om det aksepterte formatet.

White Box vs. Svart boks

Black box fuzzing brukes uten informasjon om applikasjonen som testes. Det er mindre effektivt enn fuzzing med hvit boks, men kan brukes på alle programmer uten tilgang til kildekoden. Dette gjør det populært blant hackere.

White box fuzzing bruker informasjon om applikasjonen som testes for å lage input som mest sannsynlig vil bli akseptert og produsere sårbarheter. Det brukes først og fremst av programvareutviklere fordi det er mer effektivt enn black box fuzzing.

Fuzzing er en kraftig programvaretestmetode som brukes av programvareutviklere, sikkerhetseksperter og hackere. Det krever minimal innsats å implementere og er i stand til å finne sårbarheter som andre programvaretestteknikker ikke gjør.

Det er spesielt viktig fra et sikkerhetssynspunkt fordi det ofte brukes til å oppdage nulldagssårbarheter. Disse sårbarhetene kan enten oppdages og fikses av sikkerhetseksperter, eller oppdages og utnyttes av hackere.