Hägu testimise (fuzzing) õpetus
Mis on fuzz-testimine?
Fuzzi testimine või Fuzzing on tarkvara testimistehnika, mille abil sisestatakse tarkvarasüsteemi kehtetud või juhuslikud andmed, mida nimetatakse FUZZ-iks, et avastada kodeerimisvigu ja turvalünki. Hägutestimise eesmärk on andmete sisestamine automatiseeritud või poolautomaatsete tehnikate abil ja süsteemi testimine erinevate erandite suhtes, nagu süsteemi kokkujooksmine või sisseehitatud koodi rike jne.
Hägutestimise töötas algselt välja Barton Miller Wisconsini ülikoolis 1989. aastal. Hägustestimine ehk fuzzing on tarkvara testimise tehnika ja see on teatud tüüpi Turvalisuse testimine.
Miks teha fuzz-testi?
- Tavaliselt leiab Fuzzy testimine kõige tõsisema turvavea või -defekti.
- Häguste testimine annab tõhusama tulemuse, kui seda kasutatakse koos Must Box Testimine, beetatestimine ja muud silumismeetodid.
- Tarkvara haavatavuse kontrollimiseks kasutatakse fuzz-testimist. See on väga kulutõhus testimistehnika.
- Fuzz-testimine on üks musta kasti testimise tehnikaid. Fuzzing on üks levinumaid meetodeid, mida häkkerid süsteemi haavatavuse tuvastamiseks kasutavad.
Kuidas teha fuzz-testi
Hägustestimise sammud hõlmavad põhilisi testimisetappe –
Step 1) Tuvastage sihtsüsteem
Step 2) Tuvastage sisendid
Step 3) Loo fuzzed andmed
Step 4) Tehke test ähmaste andmete abil
Step 5) Jälgige süsteemi käitumist
Step 6) Palkide defektid
Fuzzeri näited
- Mutatsioonipõhised fuzzerid muuta olemasolevaid andmeproove, et luua uusi katseandmeid. See on väga lihtne ja arusaadav lähenemine, see algab kehtivate protokolli näidistega ja segab iga baiti või faili.
- Põlvkonnapõhised fuzzerid defineerida uued andmed mudeli sisendi põhjal. See hakkab spetsifikatsiooni põhjal sisendit genereerima nullist.
- PROTOKOLIPÕHINE-fuzzer, kõige edukam fuzzer on testitava protokollivormingu üksikasjalik tundmine. Arusaamine sõltub spetsifikatsioonist. See hõlmab spetsifikatsioonide massiivi kirjutamist tööriista, seejärel läbige mudelipõhise testi genereerimise tehnika abil spetsifikatsioon ja lisage andmete sisu, järjestuse jne ebakorrapärasusi. Seda nimetatakse ka süntaksi testimiseks, grammatika testimiseks, töökindluse testimiseks, jne. Fuzzer võib genereerida olemasolevatest testjuhtumitest või kasutada kehtivaid või kehtetuid sisendeid.
Protokollipõhisel hägustamisel on kaks piirangut:
- Katsetamist ei saa jätkata enne, kui spetsifikatsioon on küps.
- Paljud kasulikud protokollid on avaldatud protokollide laiendused. Kui fuzz-testimine põhineb avaldatud spetsifikatsioonidel, Katse katvus uute protokollide jaoks on piiratud.
Hägustamistehnika lihtsaim vorm on juhusliku sisendi saatmine tarkvarasse kas protokollipakettidena või sündmusena. See juhusliku sisendi edastamise tehnika on väga võimas, et leida vigu paljudes rakendustes ja teenustes. Saadaval on ka teisi tehnikaid ja seda on väga lihtne rakendada. Nende tehnikate rakendamiseks peame lihtsalt olemasolevaid sisendeid muutma. Me saame muuta sisendit lihtsalt sisendi bitte vahetades.
Fuzz Testingi tuvastatud vigade tüübid
- Väidete ebaõnnestumised ja mälulekked seda metoodikat kasutatakse laialdaselt suurte rakenduste puhul, kus vead mõjutavad mälu turvalisust, mis on tõsine haavatavus.
- Vigane sisestus Hägutestimisel kasutatakse fuzzereid vigase sisendi genereerimiseks, mida kasutatakse veakäsitluse rutiinide testimiseks, ja see on oluline tarkvara jaoks, mis ei kontrolli oma sisendit. Lihtsat hägustamist võib nimetada negatiivse testimise automatiseerimiseks.
- Korrektsuse vead Hägustamist saab kasutada ka teatud tüüpi korrektsusvigade tuvastamiseks. Näiteks rikutud andmebaas, kehvad otsingutulemused jne.
Fuzzi testimise tööriistad
Veebiturvalisuses kasutatavaid tööriistu saab laialdaselt kasutada fuzz-testides, näiteks Burp Suite, Peach Fuzzer jne.
- Peach Fuzzer: Peach Fuzzer pakub tugevamat ja turvalisemat katvust kui skanner. Muud testimistööriistad saavad otsida ainult teadaolevaid lõime, samas kui Peach Fuzzer võimaldab kasutajatel leida teadaolevaid ja tundmatuid lõime.
- Spike puhverserver: see on professionaalse taseme tööriist, mis otsib veebirakendustes rakendustasemel haavatavusi. SPIKE Proxy hõlmab põhitõdesid, nt SQL Süstimine ja saidiülene skriptimine, kuid see on täiesti avatud Python infrastruktuuri. SPIKE puhverserver on saadaval Linux ja Windows.
- Veebkarabeus: Webscarab on sisse kirjutatud Java seega kaasaskantav paljudele platvormidele. Rakenduste analüüsimiseks kasutatakse Webscarabi raamistikku, mis suhtleb HTTP ja HTTPS protokollide abil.ex: Webscarab töötab pealtkuulamise puhverserverina, mis võimaldab operaatoril brauseri loodud päringut üle vaadata ja muuta enne, kui server need vastu võtab. Ja lubage serveri genereeritud vastust üle vaadata ja värskendada enne, kui brauser seda vastu võtab. Sel viisil, kui veebiskarabeus leiab mõne lünka, lisab see teatatud probleemide loendi.
- OWASP WSFuzzer: WSFuzzer on GPL-iga programm, mis on sisse kirjutatud Python. GPL-i programm sihib praegu veebiteenuseid. OWASPWSFuzzeri praeguses HTTP-põhises versioonis SEEBI teenused on peamine sihtmärk.
Fuzzi testimise eelised
- Hägustestimine parandab tarkvara Turvalisuse testimine.
- Hägustamises leitud vead on mõnikord tõsised ja häkkerid kasutavad neid enamasti, sealhulgas kokkujooksmised, mälulekked, käsitlemata erand jne.
- Kui testijatel ei õnnestu aja ja ressursside piiratuse tõttu mõnda viga märgata, leitakse need vead ka Fuzzi testimisel.
Fuzzi testimise puudused
- Hägustestimine üksi ei anna täielikku pilti üldisest turvaohust või vigadest.
- Hägustestimine on vähem efektiivne selliste turvaohtude käsitlemisel, mis ei põhjusta programmi krahhi, nagu mõned viirused, ussid, trooja jne.
- Hägustestimine suudab tuvastada ainult lihtsaid vigu või ohte.
- Tõhusaks toimimiseks kulub palju aega.
- Piirväärtuse tingimuse määramine juhuslike sisenditega on väga problemaatiline, kuid nüüd lahendab enamik testijaid selle probleemi, kasutades kasutajate sisenditel põhinevaid deterministlikke algoritme.
kokkuvõte
Tarkvaratehnikas näitab Fuzz-testimine rakenduses vigu. Hägustamine ei saa garanteerida vigade täielikku tuvastamist rakenduses. Kuid Fuzzi tehnikat kasutades tagab see rakenduse töökindluse ja turvalisuse, kuna see tehnika aitab paljastada enamiku levinumaid haavatavusi.