Fuzzing är en mjukvarutestteknik , ofta automatisk eller halvautomatisk, som består i att skicka felaktiga, oväntade eller slumpmässiga data till applikationen som indata. Ämnet av intresse är krascher och frysningar, brott mot intern logik och kontroller i applikationskoden , minnesläckor orsakade av sådan indata. Fuzzing är en typ av slumpmässig testning som ofta används för att testa säkerhetsproblem i mjukvara och datorsystem.
När man kontrollerar säkerheten är det mest intressanta kontrollerna av förtroendegränsen [1] . Till exempel är det mycket viktigare att förtydliga ett filuppladdningsformulär av en obehörig användare än att ladda upp en konfigurationsfil av en auktoriserad privilegierad användare .
Slumpmässig data har använts i apptestning tidigare. Till exempel genererade Monkey-applikationen för Mac OS , skapad av Steve Caps redan 1983, slumpmässiga händelser som skickades till ingången för de testade programmen för att söka efter buggar. Det användes i synnerhet vid testning av MacPaint [2] .
Termen " fuzz " har sitt ursprung i ett Barton Miller-seminarium 1988 vid University of Wisconsin [3] , under vilket en enkel kommandoradsprogram- fuzzer skapades för att testa tillförlitligheten hos Unix-applikationer. Den genererade slumpmässiga data som skickades som parametrar till andra program tills de slutade med ett fel. Detta var inte bara den första testningen någonsin med slumpmässig ostrukturerad data, utan också den första specialiserade applikationen för att testa ett brett utbud av program under olika operativsystem , och med en systematisk analys av de typer av fel som uppstår under sådana tester. Skaparna av projektet har öppnat källkoderna för sin applikation, samt allmänhetens tillgång till testprocedurer och råa resultat. Testet upprepades 1995 - applikationen modifierades för att testa GUI -applikationer , nätverksprotokoll och systembibliotek under Mac OS och Windows.
Det är värt att notera att liknande testtekniker fanns långt innan termens utseende och formaliseringen av proceduren. Så det är känt att Jerry Weinberg använde en uppsättning kort med slumpmässiga nummer för att skicka dem till ingången av program på 1950-talet. [fyra]
1991 släpptes crashme- applikationen , designad för att testa tillförlitligheten av program under Unix och Unix-liknande operativsystem genom att utföra en slumpmässig uppsättning processorinstruktioner [5] .
Fuzzing är nu en integrerad del av de flesta säkerhets- och tillförlitlighetskontroller av mjukvara och datorsystem.