Fuzz Testing (Fuzzing) Handledning: Vad är, typer, verktyg & Exempel

Innehållsförteckning:

Anonim

Fuzz-testning

Fuzz Testing eller Fuzzing är en programvarutestningsteknik för att sätta ogiltiga eller slumpmässiga data som kallas FUZZ i mjukvarusystemet för att upptäcka kodningsfel och säkerhetshål. Syftet med fuzz-testning är att infoga data med hjälp av automatiserade eller halvautomatiska tekniker och testa systemet för olika undantag som systemkrasch eller fel på inbyggd kod, etc.

Fuzz-testning utvecklades ursprungligen av Barton Miller vid University of Wisconsin 1989. Fuzz-testning eller fuzzing är en programvarutestningsteknik och det är en typ av säkerhetstestning .

Varför göra Fuzz-testning?

  • Vanligtvis hittar Fuzzy-test det allvarligaste säkerhetsfelet eller defekten.
  • Fuzz-testning ger ett mer effektivt resultat när det används med Black Box-testning, betatestning och andra felsökningsmetoder.
  • Fuzz-testning används för att kontrollera programvarans sårbarhet. Det är mycket kostnadseffektiva testtekniker.
  • Fuzz-testning är en av svarta lådans testtekniker. Fuzzing är en av de vanligaste metodhackarna som används för att hitta systemets sårbarhet.

Hur man gör Fuzz-testning

Stegen för suddig testning inkluderar de grundläggande teststegen-

Steg 1) Identifiera målsystemet

Steg 2) Identifiera ingångar

Steg 3) Generera fuzzed-data

Steg 4) Utför testet med fuzzy data

Steg 5) Övervaka systembeteendet

Steg 6) Loggfel

Exempel på Fuzzers

  • Mutationsbaserade Fuzzers ändrar befintliga dataprov för att skapa nya testdata. Detta är det mycket enkla och enkla tillvägagångssättet, det här börjar med giltiga prover av protokoll och fortsätter att blanda varje byte eller fil.

  • Generationsbaserade Fuzzers definierar ny data baserat på modellens inmatning. Det börjar generera input från grunden baserat på specifikationen.

  • PROTOCOL-BASED-fuzzer , den mest framgångsrika fuzzer är att ha detaljerad kunskap om protokollformat som testas. Förståelsen beror på specifikationen. Det handlar om att skriva en rad av specifikationen i verktyget och sedan genom att använda modellbaserad testgenereringsteknik gå igenom specifikationen och lägga till oegentligheter i datainnehållet, sekvensen etc. Detta kallas också syntaxtestning, grammatikprovning, robusthetstest, etc. Fuzzer kan generera testfall från ett befintligt, eller så kan de använda giltiga eller ogiltiga ingångar.

Det finns två begränsningar för protokollbaserad fuzzing:

  1. Testning kan inte fortsätta förrän specifikationen är mogen.
  2. Många användbara protokoll är en förlängning av publicerade protokoll. Om fuzz-testning baseras på publicerade specifikationer kommer testtäckningen för nya protokoll att vara begränsad.

Den enklaste formen av suddig teknik är att skicka slumpmässig inmatning till programvaran antingen som protokollpaket eller som en händelse. Denna teknik för att skicka slumpmässig inmatning är mycket kraftfull för att hitta buggar i många applikationer och tjänster. Andra tekniker finns också och det är väldigt enkelt att implementera. För att implementera dessa tekniker behöver vi bara ändra befintliga ingångar. Vi kan ändra ingång bara genom att byta ut ingångsbitarna.

Typer av buggar som upptäckts av Fuzz Testing

  • Påståendefel och minnesläckor denna metod används ofta för stora applikationer där fel påverkar minnets säkerhet, vilket är en allvarlig sårbarhet.

  • Felaktig input

    I fuzz-test används fuzzers för att generera en ogiltig ingång som används för att testa felhanteringsrutiner, och detta är viktigt för programvaran som inte styr dess ingång. Enkel fuzzing kan kallas ett sätt att automatisera negativ testning.

  • Korrekthet buggar

    Fuzzing kan också användas för att upptäcka vissa typer av "korrekta" buggar. Såsom en skadad databas, dåliga sökresultat etc.

    Fuzz-testverktyg

    Verktyg som används i webbsäkerhet kan i stor utsträckning användas i fuzz-tester som Burp Suite, Peach Fuzzer, etc.

  • Persika Fuzzer

    Peach Fuzzer ger mer robust och säkerhetstäckning än en skanner. Andra testverktyg kan bara söka efter kända trådar medan Peach Fuzzer gör det möjligt för användare att hitta kända och okända trådar.

  • Spike Proxy

    Det är ett professionellt verktyg som letar efter sårbarheter på applikationsnivå i webbapplikationer. SPIKE Proxy täcker grunderna, som SQL Injection och cross-site-scripting, men det är helt öppen Python-infrastruktur. SPIKE Proxy är tillgängligt för Linux och Windows.

  • Webbkarab

    Webscarab är skrivet i Java och därmed bärbart till många plattformar. För analys av applikation används Webscarab-ramverk som kommunicerar med HTTP- och HTTPS-protokoll.

    Ex: Webscarab fungerar som en avlyssningsproxy, det gör det möjligt för operatören att granska och ändra begäran som skapats av webbläsaren innan de tas emot av servern. Och låt granska och uppdatera svar som genererats av servern innan de tas emot av webbläsaren. På det här sättet, om webb-scarab hittar något kryphål, kommer det att komma till listan över de rapporterade problemen.

  • OWASP WSFuzzer

    WSFuzzer är ett GPL-program som skrivs i Python. GPL hade ett program för närvarande inriktat på webbtjänster. I den nuvarande versionen av OWASPWSFuzzer är HTTP-baserade SOAP-tjänster huvudmålet.

Fördelar med Fuzz-testning

  • Fuzz-test förbättrar säkerhetstestning av programvara.
  • Fel som finns i fuzzing är ibland allvarliga och används oftast av hackare inklusive kraschar, minnesläcka, undantaget med undantag osv.
  • Om någon av buggarna inte märks av testarna på grund av tidsbegränsning och resurser finns dessa buggar också i Fuzz-testning.

Nackdelar med Fuzz-testning

  • Fuzz-testning ensam kan inte ge en fullständig bild av ett övergripande säkerhetshot eller fel.
  • Fuzz-testning är mindre effektivt för att hantera säkerhetshot som inte orsakar programkrascher, till exempel vissa virus, maskar, trojaner etc.
  • Fuzz-testning kan bara upptäcka enkla fel eller hot.
  • För att kunna prestera effektivt kommer det att kräva betydande tid.
  • Att ställa in ett gränsvärdesvillkor med slumpmässiga ingångar är mycket problematiskt men nu använder deterministiska algoritmer baserat på användarens ingångar de flesta testarna löser detta problem.

Sammanfattning:

I Software Engineering visar Fuzz-testning förekomsten av buggar i en applikation. Fuzzing kan inte garantera upptäckt av buggar helt i en applikation. Men genom att använda Fuzz-tekniken säkerställer det att applikationen är robust och säker, eftersom den här tekniken hjälper till att avslöja de flesta vanliga sårbarheter.

Den här artikeln har bidragit av Priyanka Kothe