Fuzz tesztelés (Fuzzing) bemutató

Mi az a Fuzz tesztelés?

Fuzz tesztelés vagy a Fuzzing egy olyan szoftvertesztelési technika, amellyel érvénytelen vagy véletlenszerű adatokat helyeznek el a FUZZ néven a szoftverrendszerbe, hogy felfedezzék a kódolási hibákat és a biztonsági réseket. A fuzz-teszt célja az adatok beszúrása automatizált vagy félautomata technikák segítségével, és a rendszer tesztelése különböző kivételekre, mint például a rendszer összeomlása vagy a beépített kód meghibásodása stb.

A fuzz-tesztelést eredetileg Barton Miller fejlesztette ki a Wisconsini Egyetemen 1989-ben. A fuzz-tesztelés egy szoftvertesztelési technika, és egyfajta Biztonsági tesztelés.

Fuzz tesztelés

Miért érdemes Fuzz-tesztet csinálni?

  • Általában a fuzzy tesztelés megtalálja a legsúlyosabb biztonsági hibát vagy hibát.
  • A fuzz tesztelés hatékonyabb eredményt ad, ha együtt használják Fekete Box Tesztelés, Bétatesztelés és más hibakeresési módszerek.
  • Fuzz tesztet használnak a szoftver sebezhetőségének ellenőrzésére. Ez egy nagyon költséghatékony vizsgálati technika.
  • A fuzztesztelés a fekete doboz tesztelési technikák egyike. A fuzzing a hackerek egyik leggyakoribb módszere a rendszer sebezhetőségének felderítésére.

Hogyan végezzünk Fuzz-tesztet

A fuzzy tesztelés lépései magukban foglalják az alapvető tesztelési lépéseket:

Step 1) Azonosítsa a célrendszert

Step 2) Azonosítsa a bemeneteket

Step 3) Fuzzed adatok generálása

Step 4) Végezze el a tesztet fuzzy adatok felhasználásával

Step 5) A rendszer viselkedésének figyelése

Step 6) Napló hibák

Példák a Fuzzerekre

  • Mutáció-alapú fuzzerek módosítsa a meglévő adatmintákat új tesztadatok létrehozásához. Ez a nagyon egyszerű és egyértelmű megközelítés, amely érvényes protokollmintákkal kezdődik, és folyamatosan összekever minden bájtot vagy fájlt.
  • Generáció alapú fuzzerek új adatok meghatározása a modell bemenete alapján. A specifikáció alapján a nulláról kezdi el generálni a bemenetet.
  • PROTOKOLLALAPÚ-fuzzer, a legsikeresebb fuzzer az, ha részletes ismeretekkel rendelkezik a tesztelt protokollformátumról. A megértés a specifikációtól függ. Ez magában foglalja a specifikáció egy tömbjének beírását az eszközbe, majd modellalapú tesztgenerálási technikával végigmegy a specifikáción, és szabálytalanságot ad az adattartalomban, sorrendben stb. Ezt szintaktikai tesztelésnek, nyelvtani tesztelésnek, robusztussági tesztelésnek is nevezik, stb. A Fuzzer teszteseteket generálhat egy meglévőből, vagy használhat érvényes vagy érvénytelen bemeneteket.

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

  1. A tesztelés addig nem folytatódhat, amíg a specifikáció kiforrott.
  2. Számos hasznos protokoll a közzétett protokollok kiterjesztése. Ha a fuzz-tesztelés a közzétett előírásokon alapul, Teszt lefedettség az új protokollok korlátozottak lesznek.

A fuzzing technika legegyszerűbb formája az, hogy véletlenszerű bemenetet küld a szoftvernek protokollcsomagként vagy eseményként. Ez a véletlenszerű bevitel átadásának technikája nagyon hatékony a hibák felderítésére számos alkalmazásban és szolgáltatásban. Más technikák is rendelkezésre állnak, és nagyon könnyen megvalósítható. Ezen technikák megvalósításához csak módosítanunk kell a meglévő bemeneteken. A bemenetet csak a bemeneti bitek felcserélésével tudjuk megváltoztatni.

A Fuzz Testing által észlelt hibák típusai

  • Állítási hibák és memóriaszivárgás ezt a módszert széles körben használjá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 fuzzerek érvénytelen bemenetet generálnak, amely a hibakezelési rutinok tesztelésére szolgál, és ez fontos a bemenetét nem vezérlő szoftver számára. Az egyszerű összemosás a negatív tesztek automatizálásának egyik módja.
  • Helyességi hibák A fuzzing bizonyos típusú „helyességi” hibák észlelésére is használható. Például egy sérült adatbázis, rossz keresési eredmények stb.

Fuzz tesztelési eszközök

A webes biztonságban használt eszközök széles körben használhatók a fuzz teszteléshez, mint pl Burp Suite, Peach Fuzzer stb.

  • Őszibarack Fuzzer: A Peach Fuzzer robusztusabb és biztonságosabb lefedettséget biztosít, mint egy szkenner. Más tesztelőeszközök csak az ismert szálakra képesek keresni, míg a Peach Fuzzer lehetővé teszi a felhasználók számára, hogy ismert és ismeretlen szálakat találjanak.
  • Spike Proxy: Ez egy professzionális minőségű eszköz, amely alkalmazás szintű sebezhetőségeket keres a webalkalmazásokban. A SPIKE Proxy lefedi az alapokat, mint pl SQL Befecskendezés és helyek közötti szkriptelés, de teljesen nyitott Python infrastruktúra. A SPIKE proxy elérhető a következőhöz Linux és a Windows.
  • Webszkarabeusz: Webscarab be van írva Java így sok platformra hordozható. Az alkalmazások elemzéséhez a Webscarab keretrendszert használják, amely HTTP és HTTPS protokollok használatával kommunikál.ex: A Webscarab elfogó proxyként működik, lehetővé téve a kezelő számára, hogy áttekintse és módosítsa a böngésző által létrehozott kéréseket, mielőtt azokat a szerver megkapja. És lehetővé teszi a szerver által generált válaszok áttekintését és frissítését, mielőtt a böngésző megkapta. Ily módon, ha az internetes szkarabeusz bármilyen kiskaput talál, felveszi a bejelentett problémák listáját.
  • OWASP WSFuzzer: A WSFuzzer egy GPL-be írt program Python. A GPL egy programja jelenleg a webszolgáltatásokat célozza meg. Az OWASPWSFuzzer HTTP alapú jelenlegi verziójában SOAP szolgáltatások a fő célpont.

A Fuzz tesztelés előnyei

  • A Fuzz tesztelés javítja a szoftvert Biztonsági tesztelés.
  • A fuzzingban talált hibák néha súlyosak, és legtöbbször a hackerek használják őket, beleértve az összeomlásokat, a memóriaszivárgást, a kezeletlen kivételeket stb.
  • Ha valamelyik hibát nem veszik észre a tesztelők az idő és az erőforrások korlátozottsága miatt, akkor a hibákat a Fuzz tesztelés során is megtalálják.

A Fuzz tesztelés hátrányai

  • A fuzz tesztelés önmagában nem nyújt teljes képet az általános biztonsági fenyegetésekről vagy hibákról.
  • A Fuzz-teszt kevésbé hatékony a program összeomlását nem okozó biztonsági fenyegetések, például egyes vírusok, férgek, trójai stb.
  • A homályos tesztelés csak egyszerű hibákat vagy fenyegetéseket képes észlelni.
  • A hatékony működéshez jelentős időre van szükség.
  • A határérték-feltétel véletlenszerű bemenetekkel történő beállítása nagyon problematikus, de mostanra a felhasználói bemeneteken alapuló determinisztikus algoritmusok használata a legtöbb tesztelő megoldja ezt a problémát.

Összegzésként

A szoftverfejlesztésben a Fuzz-tesztelés megmutatja a hibák jelenlétét az alkalmazásban. A fuzzing nem garantálja a hibák teljes észlelését az alkalmazásban. De a Fuzz technika használatával biztosítja, hogy az alkalmazás robusztus és biztonságos legyen, mivel ez a technika segít felfedni a legtöbb gyakori sebezhetőséget.