Fuzz-testauksen (fuzzing) opetusohjelma
Mitä on Fuzz-testaus?
Fuzz-testaus tai Fuzzing on ohjelmistotestaustekniikka, jossa virheelliset tai satunnaiset tiedot, nimeltään FUZZ, asetetaan ohjelmistojärjestelmään koodausvirheiden ja tietoturva-aukkojen löytämiseksi. Fuzz-testauksen tarkoitus on tietojen lisääminen automatisoiduilla tai puoliautomaattisilla tekniikoilla ja järjestelmän testaaminen erilaisten poikkeusten, kuten järjestelmän kaatumisen tai sisäänrakennetun koodin epäonnistumisen, varalta.
Sumetestauksen kehitti alun perin Barton Miller Wisconsinin yliopistossa vuonna 1989. Fuzz-testaus tai sumea on ohjelmistotestaustekniikka, ja se on eräänlainen Suojaustestaus.
Miksi tehdä Fuzz-testaus?
- Yleensä Fuzzy-testaus löytää vakavimman tietoturvavian tai -vian.
- Fuzz-testaus antaa tehokkaamman tuloksen, kun sitä käytetään Musta Box Testaus, beta-testaus ja muut virheenkorjausmenetelmät.
- Fuzz-testausta käytetään ohjelmiston haavoittuvuuden tarkistamiseen. Se on erittäin kustannustehokas testaustekniikka.
- Fuzz-testaus on yksi mustan laatikon testaustekniikoista. Fuzzing on yksi yleisimmistä menetelmistä, joita hakkerit käyttävät järjestelmän haavoittuvuuden löytämiseen.
Kuinka tehdä Fuzz-testaus
Sumean testauksen vaiheet sisältävät perustestauksen vaiheet -
Vaihe 1) Tunnista kohdejärjestelmä
Vaihe 2) Tunnista tulot
Vaihe 3) Luo Fuzzed-dataa
Vaihe 4) Suorita testi käyttämällä sumeaa dataa
Vaihe 5) Tarkkaile järjestelmän toimintaa
Vaihe 6) Tukkipuut
Esimerkkejä Fuzzereista
- Mutaatiopohjaiset sumuttimet muuttaa olemassa olevia tietonäytteitä luodaksesi uusia testitietoja. Tämä on hyvin yksinkertainen ja suoraviivainen lähestymistapa, tämä alkaa kelvollisista protokollanäytteistä ja jatkaa jokaista tavua tai tiedostoa.
- Sukupolvipohjaiset fuzzerit määritellä uusia tietoja mallin syötteen perusteella. Se alkaa tuottaa syötteitä tyhjästä spesifikaatioiden perusteella.
- PROTOKOLLIPOHJAINEN-fuzzer, menestynein fuzzer on yksityiskohtaiset tiedot testattavasta protokollamuodosta. Ymmärrys riippuu spesifikaatiosta. Siinä kirjoitetaan joukko spesifikaatioita työkaluun ja käytä sitten mallipohjaista testin luontitekniikkaa käyttämällä spesifikaatiota ja lisää epäsäännöllisyyttä datan sisältöön, järjestykseen jne. Tätä kutsutaan myös syntaksitestaukseksi, kielioppitestaukseksi, kestävyystestaukseksi, jne. Fuzzer voi luoda testitapauksia olemassa olevasta, tai ne voivat käyttää kelvollisia tai virheellisiä syötteitä.
Protokollapohjaisella fuzzingilla on kaksi rajoitusta:
- Testausta ei voi jatkaa ennen kuin spesifikaatio on kypsä.
- Monet hyödylliset protokollat ovat julkaistujen protokollien laajennuksia. Jos fuzz-testaus perustuu julkaistuihin spesifikaatioihin, Testin kattavuus uusille protokollille on rajoitettu.
Yksinkertaisin fuzzing-tekniikan muoto on satunnaisen syötteen lähettäminen ohjelmistoon joko protokollapaketteina tai tapahtumana. Tämä satunnaisen syötteen välittämisen tekniikka on erittäin tehokas vikojen löytämiseksi monista sovelluksista ja palveluista. Myös muita tekniikoita on saatavilla, ja se on erittäin helppo toteuttaa. Näiden tekniikoiden toteuttamiseksi meidän on vain muutettava olemassa olevia syötteitä. Voimme muuttaa tuloa vain vaihtamalla tulobittejä.
Fuzz-testauksen havaitsemat bugityypit
- Väitteet epäonnistuvat ja muistivuotoja Tätä menetelmää käytetään laajalti suurissa sovelluksissa, joissa virheet vaikuttavat muistin turvallisuuteen, mikä on vakava haavoittuvuus.
- Virheellinen syöte Fuzz-testauksessa fuzzeria käytetään luomaan virheellinen syöte, jota käytetään virheenkäsittelyrutiinien testaamiseen, ja tämä on tärkeää ohjelmistolle, joka ei ohjaa syöttöään. Yksinkertainen fuzzing tunnetaan tapana automatisoida negatiivinen testaus.
- Oikeusvirheitä Fuzzingia voidaan käyttää myös tietyntyyppisten "oikeusvirheiden" havaitsemiseen. Kuten vioittunut tietokanta, huonot hakutulokset jne.
Fuzz-testaustyökalut
Web-tietoturvassa käytettyjä työkaluja voidaan käyttää laajasti fuzz-testauksessa, kuten Burp Suite, Peach Fuzzer jne.
- Peach Fuzzer: Peach Fuzzer tarjoaa vankemman ja turvallisemman suojan kuin skanneri. Muut testaustyökalut voivat etsiä vain tunnettuja säikeitä, kun taas Peach Fuzzer antaa käyttäjille mahdollisuuden löytää tunnettuja ja tuntemattomia säikeitä.
- Spike-välityspalvelin: Se on ammattitason työkalu, joka etsii sovellustason haavoittuvuuksia verkkosovelluksista. SPIKE Proxy kattaa perusasiat, kuten SQL Injektio ja sivustojen välinen komentosarja, mutta se on täysin avoin Python infrastruktuuria. SPIKE-välityspalvelin on saatavilla Linux ja Windows.
- Webscarab: Webscarab on kirjoitettu Java näin ollen kannettava useille alustoille. Sovellusten analysointiin käytetään Webscarab-kehystä, joka kommunikoi HTTP- ja HTTPS-protokollien avulla.ex: Webscarab toimii sieppaavana välityspalvelimena, jonka avulla käyttäjä voi tarkastella ja muokata selaimen luomia pyyntöjä ennen kuin palvelin vastaanottaa ne. Ja salli palvelimen luoman vastauksen tarkastelun ja päivittämisen ennen kuin selain on vastaanottanut sen. Tällä tavalla, jos verkkoskarabeus löytää porsaanreiän, se tekee luettelon ilmoitetuista ongelmista.
- OWASP WSFuzzer: WSFuzzer on GPL-ohjelma, joka on kirjoitettu sisään Python. GPL:n ohjelma on tällä hetkellä kohdistettu verkkopalveluihin. OWASPWSFuzzerin nykyisessä versiossa HTTP-pohjainen SOAP palvelut ovat pääkohde.
Fuzz-testauksen edut
- Fuzz-testaus parantaa ohjelmistoa Suojaustestaus.
- Fuzzingista löydetyt virheet ovat joskus vakavia, ja hakkerit käyttävät niitä suurimman osan ajasta, mukaan lukien kaatumiset, muistivuoto, käsittelemättömät poikkeukset jne.
- Jos testaajat eivät aika- ja resurssirajoitusten vuoksi huomaa jotakin bugeista, ne löytyvät myös Fuzz-testauksesta.
Fuzz-testauksen haitat
- Fuzz-testaus ei yksinään voi antaa täydellistä kuvaa yleisestä tietoturvauhkista tai -virheistä.
- Fuzz-testaus on vähemmän tehokas torjuttaessa tietoturvauhkia, jotka eivät aiheuta ohjelmien kaatumista, kuten jotkin virukset, matot, troijalaiset jne.
- Fuzz-testaus voi havaita vain yksinkertaisia vikoja tai uhkia.
- Tehokas suorittaminen vaatii paljon aikaa.
- Raja-arvoehdon asettaminen satunnaisilla syötteillä on erittäin ongelmallista, mutta nyt useimmat testaajat ratkaisevat tämän ongelman käyttämällä käyttäjien syötteisiin perustuvia deterministisiä algoritmeja.
Yhteenveto
Ohjelmistosuunnittelussa Fuzz-testaus näyttää virheiden esiintymisen sovelluksessa. Fuzzing ei voi taata vikojen havaitsemista kokonaan sovelluksessa. Mutta käyttämällä Fuzz-tekniikkaa, se varmistaa, että sovellus on vankka ja turvallinen, koska tämä tekniikka auttaa paljastamaan suurimman osan yleisimmistä haavoittuvuuksista.