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.
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:
- A tesztelés addig nem folytatódhat, amíg a specifikáció kiforrott.
- 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.