Výukový program pre test Fuzz (Fuzzing): Čo je, typy, nástroje a Príklad

Obsah:

Anonim

Fuzz testovanie

Fuzz Testing alebo Fuzzing je softvérová testovacia technika na vkladanie neplatných alebo náhodných údajov nazývaných FUZZ do softvérového systému, aby sa zistili chyby v kódovaní a bezpečnostné medzery. Účelom testovania fuzz je vkladanie údajov pomocou automatizovaných alebo poloautomatizovaných techník a testovanie systému na rôzne výnimky, ako napríklad zlyhanie systému alebo zlyhanie zabudovaného kódu atď.

Fuzz testovanie bolo pôvodne vyvinuté Bartonom Millerom na University of Wisconsin v roku 1989. Fuzz testovanie alebo fuzzing je softvérová testovacia technika a je to druh bezpečnostného testovania .

Prečo robiť testovanie Fuzz?

  • Fuzzy testovaním sa zvyčajne zistí najzávažnejšia chyba alebo nedostatok zabezpečenia.
  • Fuzz testovanie poskytuje efektívnejšie výsledky pri použití s ​​Black Box Testing, Beta Testing a inými metódami ladenia.
  • Fuzz testovanie sa používa na kontrolu zraniteľnosti softvéru. Je to veľmi nákladovo efektívne testovacie techniky.
  • Fuzz testovanie je jednou z metód testovania čiernej skrinky. Fuzzing je jednou z najbežnejších metód hackerov používaných na zisťovanie zraniteľnosti systému.

Ako vykonať testovanie Fuzz

Kroky fuzzy testovania zahŕňajú základné kroky testovania -

Krok 1) Identifikujte cieľový systém

Krok 2) Identifikujte vstupy

Krok 3) Vytvorte fuzzované dáta

Krok 4) Vykonajte test pomocou fuzzy dát

Krok 5) Monitorujte chovanie systému

Krok 6) Poruchy protokolu

Príklady fuzzerov

  • Fuzzery založené na mutáciách menia existujúce vzorky údajov a vytvárajú nové testovacie údaje. Jedná sa o veľmi jednoduchý a priamy prístup, ktorý začína platnými vzorkami protokolu a udržuje manipuláciu s každým bajtom alebo súborom.

  • Fuzzery založené na generácii definujú nové údaje na základe vstupu modelu. Začne generovať vstup od nuly na základe špecifikácie.

  • Fuzzer založený na PROTOKOLE , najúspešnejším fuzzerom je mať podrobné znalosti o testovanom formáte protokolu. Porozumenie závisí od špecifikácie. Zahŕňa to napísanie poľa špecifikácie do nástroja a potom pomocou techniky generovania testov založených na modeli prejsť špecifikáciou a pridať nezrovnalosti v obsahu, postupnosti atď. Toto sa tiež nazýva testovanie syntaxe, testovanie gramatiky, testovanie robustnosti, Fuzzer môže generovať testovacie prípady z existujúceho alebo môže použiť platné alebo neplatné vstupy.

Fuzzing založený na protokole má dve obmedzenia:

  1. Testovanie nemôže pokračovať, kým nedôjde k vyzretiu špecifikácie.
  2. Mnoho užitočných protokolov je rozšírením publikovaných protokolov. Ak je testovanie fuzz založené na zverejnených špecifikáciách, pokrytie testu pre nové protokoly bude obmedzené.

Najjednoduchšou formou techniky fuzzing je zasielanie náhodných vstupov do softvéru buď ako protokolové pakety, alebo ako udalosť. Táto technika odovzdávania náhodných vstupov je veľmi účinná pri hľadaní chýb v mnohých aplikáciách a službách. K dispozícii sú aj ďalšie techniky a ich implementácia je veľmi jednoduchá. Na implementáciu týchto techník stačí zmeniť existujúce vstupy. Vstup môžeme zmeniť iba výmenou bitov vstupu.

Typy chýb zistených testom Fuzz

  • Zlyhania tvrdenia a úniky pamäti sa táto metodika často používa pre veľké aplikácie, kde chyby ovplyvňujú bezpečnosť pamäte, čo predstavuje závažnú chybu zabezpečenia.

  • Neplatný vstup

    Pri testovaní fuzz sa fuzzery používajú na generovanie neplatného vstupu, ktorý sa používa na testovanie rutín spracovania chýb, čo je dôležité pre softvér, ktorý nekontroluje svoj vstup. Jednoduché fuzzovanie možno označiť ako spôsob automatizácie negatívneho testovania.

  • Chyby správnosti

    Fuzzing možno použiť aj na detekciu niektorých typov chýb „správnosti“. Napríklad poškodená databáza, zlé výsledky vyhľadávania atď.

    Fuzz testovacie nástroje

    Nástroje, ktoré sa používajú v oblasti zabezpečenia webu, sa dajú široko použiť pri testovaní fuzz, ako napríklad Burp Suite, Peach Fuzzer atď.

  • Broskyňový fuzzer

    Peach Fuzzer poskytuje robustnejšie a bezpečnejšie pokrytie ako skener. Ostatné testovacie nástroje môžu vyhľadávať iba známe vlákna, zatiaľ čo Peach Fuzzer umožňuje používateľom vyhľadávať známe a neznáme vlákna.

  • Spike Proxy

    Je to profesionálny nástroj, ktorý hľadá zraniteľnosť webových aplikácií na úrovni aplikácií. SPIKE Proxy poskytuje základné informácie, ako je napríklad SQL Injection a cross-site-scripting, ale je to úplne otvorená infraštruktúra Pythonu. SPIKE Proxy je k dispozícii pre systémy Linux a Windows.

  • Webscarab

    Webscarab je napísaný v jazyku Java, takže je prenosný na mnoho platforiem. Na analýzu aplikácie sa používa framework Webscarab, ktorý komunikuje pomocou protokolov HTTP a HTTPS.

    Príklad: Webscarab funguje ako zachytávajúci proxy server, umožňuje operátorovi skontrolovať a upraviť požiadavku vytvorenú prehľadávačom skôr, ako ich server prijme. Umožnite skontrolovať a aktualizovať odpoveď vygenerovanú serverom skôr, ako ju prijme prehliadač. Týmto spôsobom, ak webový scarab nájde medzeru, vytvorí zoznam nahlásených problémov.

  • OWASP WSFuzzer

    WSFuzzer je program GPL'd, ktorý je napísaný v jazyku Python. Program GPL'd je momentálne zameraný na webové služby. V aktuálnej verzii OWASPWSFuzzer sú hlavným cieľom HTTP založené na SOAP službách.

Výhody testovania Fuzz

  • Fuzz testovanie zlepšuje testovanie bezpečnosti softvéru.
  • Chyby zistené pri fuzzovaní sú niekedy závažné a hackermi ich väčšinou využívajú vrátane zlyhaní, úniku pamäte, nespracovanej výnimky atď.
  • Pokiaľ si niektorý z testerov nevšimne testerov z dôvodu obmedzenia času a zdrojov, tieto chyby sa nachádzajú aj v testovaní Fuzz.

Nevýhody Fuzz testovania

  • Samotné testovanie pomocou technológie Fuzz nemôže poskytnúť úplný obraz o celkovej bezpečnostnej hrozbe alebo chybách.
  • Testovanie pomocou technológie Fuzz je menej účinné pri riešení bezpečnostných hrozieb, ktoré nespôsobujú zlyhania programu, ako sú napríklad niektoré vírusy, červy, trójske kone atď.
  • Testovaním Fuzz sa dajú zistiť iba jednoduché chyby alebo hrozby.
  • Aby ste dosiahli efektívny výkon, bude to vyžadovať značný čas.
  • Nastaviť podmienku hraničnej hodnoty s náhodnými vstupmi je veľmi problematické, ale teraz pomocou deterministických algoritmov založených na vstupoch používateľov väčšina testerov tento problém rieši.

Zhrnutie:

V softvérovom inžinierstve ukazuje testovanie pomocou technológie Fuzz prítomnosť chýb v aplikácii. Fuzzing nemôže zaručiť úplnú detekciu chýb v aplikácii. Použitím techniky Fuzz však zaisťuje, že aplikácia je robustná a bezpečná, pretože táto technika pomáha odhaliť väčšinu bežných chýb zabezpečenia.

Do tohto článku prispieva Priyanka Kothe