Kas yra Fuzz testavimas?

Fuzz testavimas arba fuzzing yra metodas, skirtas patikrinti, kaip kompiuterio programa ar sistema reaguos į įvairius, kartais atsitiktinius, įvestis ir informaciją. Procesas apima tam tikro tipo duomenų, visiškai atsitiktinių arba atsitiktinių, atsižvelgiant į tam tikrus apribojimus, generavimą, o tada tų duomenų įvedimą į programą, kad patikrintų, kaip ji apdoroja netikėtą informaciją. Paprasčiausia pūkelių testavimo forma apima atsitiktinės klavišų paspaudimų ar simbolių sekos siuntimą į programą ir patikrinimą, ar ji tinkamai juos apdoroja. Sudėtingesnė „fuzz“ testavimo versija naudoja struktūrinius duomenis, kurie vėliau atsitiktinai manipuliuojami ir siunčiami į programą. Duomenys gali pasiekti programą kaip sistemos įvykiai, klaviatūros įvestis, netikri tinklo signalai ar net kaip failai, kuriuos reikia įkelti.

Yra įvairių kompiuterinės programos dalių, kurias galima išbandyti naudojant pūkelių generatorių. Grafinė vartotojo sąsaja (GUI) gali būti išbandyta sukuriant atsitiktinių pelės ir klaviatūros įvykių seką ir patikrinant, ar GUI gali apdoroti įvestį nesuduždama, neužšaldama ar neatlikdama netikėtos užduoties. Tinklo protokolus galima išbandyti leidžiant fuzz generatoriui atsitiktinai pakeisti galiojančio duomenų paketo dalis ir tada užtikrinant, kad protokolas galėtų toliau veikti gavus netinkamai suformuotus duomenis. Beveik bet kurios programos pagrindinius įvesties elementus galima patikrinti, ar jie gali atsispirti klaidoms, pvz., įvestis, kuri yra per ilga saugyklos tipui, įvestis, kuri yra kitokio tipo nei tikėtasi, ir įvestis, kuri kažkaip neišsami arba neteisinga.

Kompiuterių saugos pramonė gali naudoti „fuzz“ testavimą, kad įsitikintų, jog tam tikrose sistemose nėra akivaizdžių saugumo spragų. Tai galima padaryti naudojant pūkelių generatorių, skirtą kompiuterio saugumui tikrinti. Šios programos bandys naudoti sistemos raktinius žodžius, žinomus numatytuosius administratoriaus slaptažodžius, programos naudojamų bibliotekų funkcijas ir atsitiktinius sistemos funkcijų iškvietimus, kad pamatytų, kaip programa reaguos.

Įvairių tipų pūkelių testavimas gali būti pritaikytas tam tikruose diapazonuose arba netgi tikrinti tik tam tikrus įvesties tipus. Tai reiškia, kad programai gali būti išsiųstos tik galiojančios komandos, tačiau jos gali būti neprotinga tvarka. Egzistuoja sudėtingesnės „fuzz“ testavimo programos, kurios gali paimti tikslinės programos elementus ir jais manipuliuoti, kad sukurtų situacijas, kuriomis būtų galima piktybiškai išnaudoti. Tai gali apimti procesų, kurie atsiranda, eilės keitimą, leidimų pakeitimus arba pagrindinių duomenų ir bibliotekos failų modifikavimą.

Galutinis neapibrėžtųjų testų rezultatas yra patikrinti, ar programa yra saugi ir veikia taip, kaip turėtų, kai susiduria su netikėta situacija. Naudojant kartu su profiliavimo ir analizės programine įranga, ji taip pat gali aptikti atminties nutekėjimą tokiose programos srityse, kaip klaidų tvarkymas arba našumo kliūtys. Kompiuterio saugos atvejais tinkamos sąrankos atveju galima pastebėti pavojingas problemas, tokias kaip perpildymas, galintis pakenkti sistemai. Tačiau neryškus testavimas negali būti naudojamas kaip vienintelis programinės įrangos testavimo metodas ir turi būti didesnio kokybės užtikrinimo ir programinės įrangos tikrinimo proceso dalis.