Fuzz tesztelés (Fuzzing) oktatóanyag: Mi az, típusok, eszközök és amp; Példa

Tartalomjegyzék:

Anonim

Fuzz tesztelés

A Fuzz tesztelés vagy a Fuzzing egy szoftver tesztelési technika, amely érvénytelen vagy véletlenszerű, FUZZ nevű adatokat helyez a szoftverrendszerbe a kódolási hibák és a biztonsági kiskapuk felfedezése érdekében. A fuzz tesztelés célja az adatok automatikus vagy félig automatizált technikákkal történő beszúrása és a rendszer tesztelése különféle kivételek, például a rendszer összeomlása vagy a beépített kód meghibásodása stb.

A Fuzz tesztet eredetileg Barton Miller fejlesztette ki a Wisconsini Egyetemen 1989-ben. A Fuzz tesztelés vagy fuzzing szoftver tesztelési technika, és ez egyfajta biztonsági teszt .

Miért kell elvégezni a Fuzz tesztet?

  • Általában a Fuzzy teszteléssel találják meg a legsúlyosabb biztonsági hibát vagy hibát.
  • A fuzz tesztelés hatékonyabb eredményt ad, ha a Black Box teszteléssel, a béta teszteléssel és más hibakeresési módszerekkel együtt használják.
  • Fuzz teszteléssel ellenőrizhető a szoftver biztonsági rése. Nagyon költséghatékony tesztelési technikák.
  • A fuzz tesztelés az egyik fekete doboz tesztelési technika. A fuzzing az egyik leggyakoribb módszer, amelyet a hackerek a rendszer sebezhetőségének felderítésére használnak.

Hogyan kell elvégezni a Fuzz tesztet

A fuzzy tesztelés lépései tartalmazzák az alapvető tesztelési lépéseket-

1. lépés: Határozza meg a célrendszert

2. lépés: Azonosítsa a bemeneteket

3. lépés: Fuzzált adatok előállítása

4. lépés: Végezze el a tesztet fuzzy adatok felhasználásával

5. lépés: Figyelje a rendszer viselkedését

6. lépés: Naplózási hibák

Példák a Fuzzerekre

  • A mutációalapú Fuzzerek új tesztadatok létrehozásához módosítják a meglévő adatmintákat. Ez a nagyon egyszerű és egyértelmű megközelítés, ez a protokoll érvényes mintáival kezdődik, és minden bájtot vagy fájlt folyamatosan összekever.

  • A generációalapú Fuzzerek új adatokat határoznak meg a modell bemenete alapján. A specifikáció alapján elölről kezdi a bemenet generálását.

  • JEGYZŐKÖNYV-alapú fuzzer , a legsikeresebb fuzzer, ha részletes ismeretekkel rendelkezik a tesztelt protokoll formátumról. A megértés a specifikációtól függ. Ez magában foglalja a specifikáció tömbjének az eszközbe való beírását, majd a modell-alapú tesztgenerálási technika használatával végigmegy a specifikáción, és szabálytalanságot ad hozzá az adattartalomhoz, a sorrendhez stb. stb. A Fuzzer létrehozhat teszteseteket egy meglévőből, vagy érvényes vagy érvénytelen bemeneteket használhat.

A protokoll alapú fuzzolásnak két korlátja van:

  1. A tesztelés nem folytatható addig, amíg a specifikáció kiforrott.
  2. Számos hasznos protokoll kiterjeszti a közzétett protokollokat. Ha a fuzz tesztelés közzétett specifikációkon alapul, az új protokollok teszt lefedettsége korlátozott lesz.

A fuzzing technika legegyszerűbb formája a véletlenszerű bemenet küldése a szoftverhez akár protokollcsomagként, akár eseményként. Ez a véletlenszerű bevitel technikája nagyon hatékony ahhoz, hogy hibákat találjon sok alkalmazásban és szolgáltatásban. Egyéb technikák is rendelkezésre állnak, és nagyon egyszerűen megvalósítható. Ezen technikák megvalósításához csak meg kell változtatnunk a meglévő inputokat. A bemenetet csak az input bitjeinek felcserélésével változtathatjuk meg.

A Fuzz teszteléssel észlelt hibatípusok

  • Állítási hibák és memóriaszivárgások Ezt a módszertant széles körben alkalmazzák nagy alkalmazásoknál, ahol a hibák befolyásolják a memória biztonságát, ami súlyos sebezhetőség.

  • Hibás bemenet

    A fuzz tesztelés során a fuzzereket érvénytelen bemenet előállítására használják, amelyet a hibakezelési rutinok tesztelésére használnak, és ez fontos a szoftver számára, amely nem ellenőrzi a bemenetét. Az egyszerű fuzzing a negatív tesztelés automatizálásának egyik módja lehet.

  • Helyességi hibák

    A fuzzing bizonyos típusú "helyesség" hibák felderítésére is használható. Ilyenek például egy sérült adatbázis, rossz keresési eredmények stb.

    Fuzz tesztelő eszközök

    A webbiztonságban használt eszközök széles körben alkalmazhatók a fuzz tesztekben, például a Burp Suite, a Peach Fuzzer stb.

  • Peach Fuzzer

    A Peach Fuzzer robusztusabb és biztonságosabb lefedettséget nyújt, mint egy szkenner. Más tesztelő eszközök csak ismert szálakat kereshetnek, míg a Peach Fuzzer lehetővé teszi a felhasználók számára, hogy ismert és ismeretlen szálakat keressenek.

  • Spike Proxy

    Ez egy professzionális szintű eszköz, amely az alkalmazás szintű sebezhetőségeket keresi a webalkalmazásokban. A SPIKE Proxy az alapokat fedi le, mint például az SQL Injection és a cross-site-scripting, de ez teljesen nyitott Python infrastruktúra. A SPIKE Proxy elérhető Linux és Windows rendszerekhez.

  • Webscarab

    A Webscarab Java nyelven íródott, így sok platformon hordozható. Az alkalmazás elemzéséhez a Webscarab keretrendszert használják, amely HTTP és HTTPS protokollok segítségével kommunikál.

    Például: A Webscarab elfogó proxy-ként működik, lehetővé teszi az üzemeltető számára a böngésző által létrehozott kérések áttekintését és módosítását, mielőtt azokat a szerver megkapja. És engedje átnézni és frissíteni a szerver által generált választ, mielőtt a böngésző megkapja. Ily módon, ha a web scarab rést talál, akkor elkészíti a jelentett problémák listáját.

  • OWASP WSFuzzer

    A WSFuzzer egy GPL program, amely Pythonban íródott. A GPL'd program jelenleg a Web Services szolgáltatásokat célozza meg. Az OWASPWSFuzzer jelenlegi verziójában a HTTP alapú SOAP szolgáltatások a fő célpontok.

A Fuzz tesztelés előnyei

  • A Fuzz tesztelés javítja a szoftver biztonsági tesztelését.
  • A fuzzingben talált hibák néha súlyosak, és legtöbbször a hackerek használják, ideértve a baleseteket, a memória szivárgását, a kezeletlen kivételeket stb.
  • Ha az egyik hibát nem veszik észre a tesztelők az idő és az erőforrások korlátozása miatt, akkor ezeket a hibákat a Fuzz tesztelés is megtalálja.

A Fuzz tesztelés hátrányai

  • A Fuzz tesztelés önmagában nem ad teljes képet az általános biztonsági fenyegetésekről vagy hibákról.
  • A fuzz tesztelés kevésbé hatékony azoknak a biztonsági fenyegetéseknek a kezelésére, amelyek nem okoznak programösszeomlást, például egyes vírusok, férgek, trójai programok stb.
  • A fuzz tesztelés csak egyszerű hibákat vagy fenyegetéseket képes észlelni.
  • A hatékony teljesítéshez jelentős időre lesz szükség.
  • A határérték feltétel véletlenszerű bemenetekkel történő beállítása nagyon problematikus, de most a felhasználói bemeneteken alapuló determinisztikus algoritmusok használata a tesztelők többsége megoldja ezt a problémát.

Összegzés:

A Szoftvertechnikában a Fuzz tesztelés hibákat mutat be egy alkalmazásban. A fuzzing nem garantálja a hibák teljes észlelését egy alkalmazásban. De a Fuzz technika alkalmazásával biztosítja az alkalmazás robusztus és biztonságos alkalmazását, mivel ez a technika segít a leggyakoribb sebezhetőségek feltárásában.

Ez a cikk Priyanka Kothe közreműködésével készült