Kaj je Fuzz testiranje?

Testiranje fuzzov ali fuzziranje je metoda preverjanja, kako se bo računalniški program ali sistem odzval na različne, včasih naključne, vhode in informacije. Postopek vključuje generiranje določene vrste podatkov, bodisi popolnoma naključnih ali naključnih v okviru določenih omejitev, in nato podajanje teh podatkov v program, da se preizkusi, kako obravnava nepričakovane informacije. Najosnovnejša oblika fuzz testiranja vključuje pošiljanje naključnega zaporedja pritiskov tipk ali znakov v program in preverjanje, ali jih pravilno obdela. Bolj zapletena različica fuzz testiranja uporablja strukturirane podatke, ki se nato naključno manipulirajo in pošljejo programu. Podatki lahko dosežejo program kot sistemski dogodki, vnosi s tipkovnice, lažni omrežni signali ali celo kot datoteke, ki jih je treba naložiti.

Obstajajo različni deli računalniškega programa, ki jih je mogoče preizkusiti z generatorjem fuzz. Grafični uporabniški vmesnik (GUI) je mogoče preizkusiti tako, da ustvarite zaporedje naključnih dogodkov miške in tipkovnice ter preverite, ali je GUI sposoben obravnavati vnos brez zrušitve, zamrznitve ali izvajanja nepričakovane naloge. Omrežne protokole je mogoče preizkusiti tako, da dovolite generatorju mehkega, da naključno spremeni dele veljavnega podatkovnega paketa in nato zagotovi, da lahko protokol še naprej deluje po prejemu napačno oblikovanih podatkov. Osnovne vhodne elemente skoraj vsakega programa je mogoče preveriti glede njihove sposobnosti, da se uprejo napakam, kot so vnos, ki je veliko predolg za vrsto pomnilnika, vnos, ki je drugačne vrste od pričakovanega, in vhod, ki je nekako nepopoln ali napačen.

Industrija računalniške varnosti lahko uporabi fuzz testiranje, da zagotovi, da v določenih sistemih ni očitnih varnostnih lukenj. To lahko storite z uporabo generatorja fuzz, ki je zasnovan za testiranje računalniške varnosti. Ti programi bodo poskušali uporabiti sistemske ključne besede, znana privzeta skrbniška gesla, funkcije v knjižnicah, ki jih program uporablja, in naključne klice sistemskih funkcij, da bi videli, kako se bo program odzval.

Različne vrste fuzz testiranja je mogoče prilagoditi tako, da so znotraj določenih razponov ali celo za testiranje samo določenih vrst vhodnih podatkov. To pomeni, da ima program lahko poslane samo veljavne ukaze, vendar so lahko v nesmiselnem vrstnem redu. Obstajajo bolj zapleteni programi za testiranje fuzz, ki lahko vzamejo elemente ciljnega programa in z njimi manipulirajo, da ustvarijo situacije, ki bi jih lahko zlonamerno izkoristili. To lahko vključuje spreminjanje vrstnega reda procesov, ki se sprožijo, spremembe dovoljenj ali spreminjanje osnovnih podatkov in knjižničnih datotek.

Končni rezultat fuzz testiranja je preveriti, ali je program varen in se ob nepričakovani situaciji obnaša, kot bi se moral. Če se uporablja skupaj s programsko opremo za profiliranje in analizo, lahko zazna tudi puščanje pomnilnika na področjih programa, kot so obravnavanje napak ali ozka grla pri zmogljivosti. V primerih računalniške varnosti se lahko s pravilno nastavitvijo ujamejo nevarne težave, kot so prelivanja, ki lahko ogrozijo sistem. Fuzz testiranje pa se ne more uporabljati kot edina metoda testiranja programske opreme in mora biti del širšega procesa zagotavljanja kakovosti in inšpekcijskega pregleda programske opreme.