Fuzzing er en softwaretestteknik , ofte automatisk eller semi-automatisk , som består i at sende ukorrekte, uventede eller tilfældige data til applikationen som input. Emnet af interesse er nedbrud og fryser, krænkelser af intern logik og kontrol i applikationskoden , hukommelseslækager forårsaget af sådanne inputdata. Fuzzing er en form for tilfældig test, der ofte bruges til at teste sikkerhedsproblemer i software og computersystemer.
Ved kontrol af sikkerhed er det mest interessante kontrol af tillidsgrænsen [1] . For eksempel er det meget vigtigere at fuzze en filoverførselsformular af en uautoriseret bruger , end det er at have en konfigurationsfil upload af en autoriseret privilegeret bruger.
Tilfældige data er blevet brugt i app-test før. For eksempel genererede Monkey-applikationen til Mac OS , skabt af Steve Caps tilbage i 1983, tilfældige hændelser, der blev sendt til input fra de testede programmer for at søge efter fejl. Det blev især brugt ved test af MacPaint [2] .
Udtrykket " fuzz " opstod i et Barton Miller-seminar i 1988 ved University of Wisconsin [3] , hvor en simpel kommandolinjeprogramfuzzer blev skabt for at teste pålideligheden af Unix-applikationer. Det genererede tilfældige data, der blev sendt som parametre til andre programmer, indtil de stoppede med en fejl. Dette var ikke kun den første test nogensinde med tilfældige ustrukturerede data, men også den første specialiserede applikation til at teste en bred vifte af programmer under forskellige operativsystemer og med en systematisk analyse af de typer fejl, der opstår under en sådan test. Skaberne af projektet har åbnet kildekoderne til deres applikation, samt offentlig adgang til testprocedurer og rå resultater. Testen blev gentaget i 1995 - applikationen blev ændret til at teste GUI- applikationer , netværksprotokoller og systembiblioteker under Mac OS og Windows.
Det er værd at bemærke, at lignende testteknikker eksisterede længe før udtrykkets fremkomst og formaliseringen af proceduren. Så det er kendt, at Jerry Weinberg brugte et sæt kort med tilfældige tal til at sende dem til input af programmer tilbage i 1950'erne. [fire]
I 1991 blev crashme- applikationen udgivet , designet til at teste pålideligheden af programmer under Unix og Unix-lignende operativsystemer ved at udføre et tilfældigt sæt processorinstruktioner [5] .
Fuzzing er nu en integreret del af de fleste sikkerheds- og pålidelighedstjek på software og computersystemer.