Vadnica za Fuzz testiranje (Fuzzing): Kaj je, vrste, orodja in amp; Primer

Kazalo:

Anonim

Fuzz testiranje

Fuzz Testiranje ali Fuzzing je tehnika testiranja programske opreme za vnos neveljavnih ali naključnih podatkov, imenovanih FUZZ, v programski sistem za odkrivanje napak pri kodiranju in varnostnih vrzeli. Namen fuzz testiranja je vstavljanje podatkov z uporabo avtomatiziranih ali polavtomatskih tehnik in testiranje sistema za različne izjeme, kot je zrušitev sistema ali okvara vgrajene kode itd.

Fuzz testiranje je prvotno razvil Barton Miller na Univerzi v Wisconsinu leta 1989. Fuzz testiranje ali mešanje je tehnika preizkušanja programske opreme in je vrsta varnostnega testiranja .

Zakaj narediti Fuzz testiranje?

  • Ponavadi Fuzzy testi odkrijejo najresnejšo varnostno napako ali napako.
  • Fuzz testiranje daje učinkovitejši rezultat pri uporabi s testiranjem črne skrinjice, beta testiranjem in drugimi metodami za odpravljanje napak.
  • Fuzz testiranje se uporablja za preverjanje ranljivosti programske opreme. To so zelo stroškovno učinkovite tehnike testiranja.
  • Fuzz testiranje je ena izmed tehnik testiranja črne škatle. Fuzzing je ena najpogostejših hekerjev, ki se uporabljajo za iskanje ranljivosti sistema.

Kako narediti Fuzz testiranje

Koraki za nejasno testiranje vključujejo osnovne korake testiranja -

Korak 1) Določite ciljni sistem

Korak 2) Ugotovite vhode

Korak 3) Ustvari Fuzzed podatke

Korak 4) Izvedite test s pomočjo mehkih podatkov

5. korak) Nadzirajte vedenje sistema

Korak 6) Napake dnevnika

Primeri Fuzzerjev

  • Mutacijski Fuzzerji spremenijo obstoječe vzorce podatkov, da ustvarijo nove testne podatke. To je zelo preprost in enostaven pristop, ki se začne z veljavnimi vzorci protokola in ohranja manipuliranje vsakega bajta ali datoteke.

  • Generatorji, ki temeljijo na generaciji, določajo nove podatke na podlagi vnosa modela. Uvod začne ustvarjati iz nič na podlagi specifikacije.

  • FUZER NA PODROČJU PROTOKOLA , najuspešnejši fuzzer je natančno znanje o formatu protokola, ki se preizkuša. Razumevanje je odvisno od specifikacije. Vključuje vpis niza specifikacij v orodje, nato pa s pomočjo tehnike generiranja testov, ki temelji na modelih, preidete skozi specifikacijo in dodajte nepravilnosti v vsebino podatkov, zaporedje itd. To je znano tudi kot sintaksa, gramatika, testiranje robustnosti, itd. Fuzzer lahko ustvari testne primere iz obstoječega ali pa uporabi veljavne ali neveljavne vnose.

Obstajata dve omejitvi mešanja protokola:

  1. Testiranje se ne more nadaljevati, dokler specifikacija ne dozori.
  2. Številni uporabni protokoli so podaljšek objavljenih protokolov. Če testiranje nejasnosti temelji na objavljenih specifikacijah, bo pokritost s preskusi za nove protokole omejena.

Najpreprostejša oblika tehnike mešanja je pošiljanje naključnega vnosa v programsko opremo bodisi kot paketni protokol bodisi kot dogodek. Ta tehnika posredovanja naključnega vnosa je zelo zmogljiva za iskanje napak v številnih aplikacijah in storitvah. Na voljo so tudi druge tehnike, ki jih je zelo enostavno izvesti. Za izvajanje teh tehnik moramo samo spremeniti obstoječe vložke. Vhod lahko spremenimo samo tako, da zamenjamo bite vhoda.

Vrste napak, zaznanih s Fuzz testiranjem

  • Trditve zaradi napak in uhajanja pomnilnika se ta metodologija pogosto uporablja za velike aplikacije, kjer napake vplivajo na varnost pomnilnika, kar je resna ranljivost.

  • Neveljaven vnos

    Pri testiranju nejasnosti se mešalniki uporabljajo za ustvarjanje neveljavnega vnosa, ki se uporablja za testiranje rutin za obravnavo napak, kar je pomembno za programsko opremo, ki ne nadzoruje svojega vnosa. Preprosto mešanje lahko poznamo kot način avtomatizacije negativnega testiranja.

  • Napake glede pravilnosti

    Fuzzing lahko uporabimo tudi za odkrivanje nekaterih vrst napak "pravilnosti". Na primer poškodovana baza podatkov, slabi rezultati iskanja itd.

    Fuzz orodja za testiranje

    Orodja, ki se uporabljajo v spletni varnosti, se lahko široko uporabljajo pri testiranju nejasnosti, kot so Burp Suite, Peach Fuzzer itd.

  • Peach Fuzzer

    Peach Fuzzer zagotavlja močnejšo in varnejšo pokritost kot skener. Druga orodja za testiranje lahko iščejo samo znane niti, medtem ko Peach Fuzzer uporabnikom omogoča iskanje znanih in neznanih niti.

  • Spike Proxy

    Je profesionalno orodje, ki išče ranljivosti na ravni aplikacij v spletnih aplikacijah. SPIKE Proxy pokriva osnove, kot sta vbrizgavanje SQL in skriptiranje med spletnimi mesti, vendar je popolnoma odprta Pythonova infrastruktura. SPIKE Proxy je na voljo za Linux in Windows.

  • Webscarab

    Webscarab je napisan v Javi in ​​je tako prenosljiv na številne platforme. Za analizo aplikacije se uporablja ogrodje Webscarab, ki komunicira s protokoloma HTTP in HTTPS.

    Na primer: Webscarab deluje kot prestrezni proxy in operaterju omogoča pregled in spreminjanje zahtev, ki jih ustvari brskalnik, preden jih strežnik prejme. In omogočite pregled in posodobitev odziva, ki ga je ustvaril strežnik, preden ga prejme brskalnik. Na ta način, če spletni skaraber najde kakršno koli vrzel, bo sestavil seznam prijavljenih težav.

  • OWASP WSFuzzer

    WSFuzzer je program GPL, napisan v Pythonu. Program GPL'd trenutno cilja na spletne storitve. V trenutni različici storitve SOAP, ki temelji na HTTP, so OWASPWSFuzzer.

Prednosti Fuzz testiranja

  • Fuzz testiranje izboljša testiranje varnosti programske opreme.
  • Napake, ki jih najdemo pri motenju, so včasih hude in večino časa uporabljajo hekerji, vključno z zrušitvami, uhajanjem pomnilnika, neobdelano izjemo itd.
  • Če preizkuševalci zaradi omejenosti časa in virov ne odkrijejo nobene napake, te napake najdejo tudi pri Fuzz testiranju.

Slabosti Fuzz testiranja

  • Samo Fuzz testiranje ne more dati popolne slike splošne varnostne grožnje ali napak.
  • Fuzz testiranje je manj učinkovito pri reševanju varnostnih groženj, ki ne povzročajo zrušitev programov, kot so nekateri virusi, črvi, trojanski itd.
  • Fuzz testiranje lahko zazna samo preproste napake ali grožnje.
  • Za učinkovito delovanje bo potrebno veliko časa.
  • Nastavitev pogoja mejne vrednosti z naključnimi vhodi je zelo problematična, toda zdaj z uporabo determinističnih algoritmov, ki temeljijo na vnosih uporabnikov, večina preizkuševalcev reši to težavo.

Povzetek:

Pri programskem inženirstvu Fuzz testiranje kaže prisotnost napak v aplikaciji. Fuzzing ne more zagotoviti popolnega odkrivanja napak v aplikaciji. Toda s pomočjo tehnike Fuzz zagotavlja, da je aplikacija robustna in varna, saj ta tehnika pomaga razkriti večino pogostih ranljivosti.

Ta članek prispeva Priyanka Kothe