Výukový program Fuzz Testing (Fuzzing): Co je, typy, nástroje a Příklad

Obsah:

Anonim

Fuzz testování

Fuzz Testing nebo Fuzzing je technika testování softwaru, při které se do softwarového systému vkládají neplatná nebo náhodná data zvaná FUZZ, aby se objevily chyby v kódování a bezpečnostní mezery. Účelem testování fuzz je vkládání dat pomocí automatizovaných nebo poloautomatických technik a testování systému na různé výjimky, jako je selhání systému nebo selhání vestavěného kódu atd.

Fuzz testování bylo původně vyvinuto Bartonem Millerem na University of Wisconsin v roce 1989. Fuzz testování nebo fuzzing je technika testování softwaru a jedná se o typ testování bezpečnosti .

Proč dělat Fuzz testování?

  • Fuzzy testování obvykle najde nejzávažnější bezpečnostní chybu nebo závadu.
  • Fuzz testování poskytuje efektivnější výsledek při použití s ​​Black Box Testing, Beta Testing a dalšími metodami ladění.
  • Fuzz testování se používá ke kontrole zranitelnosti softwaru. Jedná se o velmi nákladově efektivní testovací techniky.
  • Fuzz testování je jednou z technik testování černé skříňky. Fuzzing je jednou z nejběžnějších metod hackerů používaných k nalezení zranitelnosti systému.

Jak provést testování Fuzz

Kroky fuzzy testování zahrnují základní kroky testování -

Krok 1) Určete cílový systém

Krok 2) Identifikujte vstupy

Krok 3) Generování nejasných dat

Krok 4) Proveďte test pomocí fuzzy dat

Krok 5) Monitorujte chování systému

Krok 6) Vady protokolu

Příklady fuzzerů

  • Fuzzery založené na mutacích mění stávající vzorky dat a vytvářejí nová testovací data. Jedná se o velmi jednoduchý a přímý přístup, který začíná platnými ukázkami protokolu a udržuje rozbité každý bajt nebo soubor.

  • Fuzzery založené na generování definují nová data na základě vstupu modelu. Začne generovat vstup od nuly na základě specifikace.

  • Založeného na protokolu-fuzzer , nejúspěšnější fuzzer je mít detailní znalost formátu protokolu testuje. Porozumění závisí na specifikaci. Zahrnuje to zápis pole specifikace do nástroje a poté pomocí techniky generování testů založených na modelu projít specifikací a přidat nepravidelnost v obsahu dat, sekvenci atd. Toto se také nazývá testování syntaxe, testování gramatiky, testování robustnosti, atd. Fuzzer může generovat testovací případy z existujícího, nebo může použít platné nebo neplatné vstupy.

Fuzzing založený na protokolu má dvě omezení:

  1. Testování nemůže pokračovat, dokud nebude specifikace vyzrálá.
  2. Mnoho užitečných protokolů je rozšířením publikovaných protokolů. Pokud je testování fuzz založeno na publikovaných specifikacích, bude pokrytí testu pro nové protokoly omezené.

Nejjednodušší formou techniky fuzzing je odesílání náhodných vstupů do softwaru buď jako protokolové pakety, nebo jako událost. Tato technika předávání náhodných vstupů je velmi účinná při hledání chyb v mnoha aplikacích a službách. K dispozici jsou také další techniky a je velmi snadné je implementovat. K implementaci těchto technik stačí změnit existující vstupy. Můžeme změnit vstup pouhou záměnou bitů vstupu.

Typy chyb zjištěných testováním Fuzz

  • Selhání tvrzení a úniky paměti se tato metodologie široce používá pro velké aplikace, kde chyby ovlivňují bezpečnost paměti, což je závažná chyba zabezpečení.

  • Neplatný vstup

    Při testování fuzz se fuzzery používají ke generování neplatného vstupu, který se používá k testování rutin zpracování chyb, což je důležité pro software, který nekontroluje svůj vstup. Jednoduché fuzzing lze označit jako způsob automatizace negativního testování.

  • Chyby správnosti

    Fuzzing lze také použít k detekci některých typů chyb „správnosti“. Například poškozená databáze, špatné výsledky vyhledávání atd.

    Fuzz testovací nástroje

    Nástroje, které se používají v zabezpečení webu, lze široce použít při testování fuzz, jako je Burp Suite, Peach Fuzzer atd.

  • Peach Fuzzer

    Peach Fuzzer poskytuje robustnější a bezpečnější pokrytí než skener. Jiné testovací nástroje mohou vyhledávat pouze známá vlákna, zatímco Peach Fuzzer umožňuje uživatelům najít známá a neznámá vlákna.

  • Spike Proxy

    Jedná se o profesionální nástroj, který hledá zranitelnost webových aplikací na úrovni aplikace. SPIKE Proxy pokrývá základy, jako je SQL Injection a cross-site-scripting, ale je to zcela otevřená infrastruktura Pythonu. SPIKE Proxy je k dispozici pro Linux a Windows.

  • Webscarab

    Webscarab je napsán v jazyce Java, takže je přenosný na mnoho platforem. Pro analýzu aplikace se používá framework Webscarab, který komunikuje pomocí protokolů HTTP a HTTPS.

    Příklad: Webscarab funguje jako zachycovací proxy server, umožňuje operátorovi zkontrolovat a upravit požadavek vytvořený prohlížečem, než je přijme server. A umožnit zkontrolovat a aktualizovat odpověď vygenerovanou serverem, než ji přijme prohlížeč. Tímto způsobem, pokud webový scarab najde mezeru, vytvoří seznam nahlášených problémů.

  • OWASP WSFuzzer

    WSFuzzer je program GPL'd, který je napsán v Pythonu. Program GPL'd aktuálně cílí na webové služby. V aktuální verzi OWASPWSFuzzer jsou SOAP služby založené na HTTP hlavním cílem.

Výhody testování Fuzz

  • Fuzz testování zlepšuje testování zabezpečení softwaru.
  • Chyby nalezené při fuzzování jsou někdy závažné a většinu času používají hackeři, včetně selhání, úniku paměti, neošetřené výjimky atd.
  • Pokud si některý z testerů nevšimne testerů kvůli omezení času a zdrojů, tyto chyby se také nacházejí v testování Fuzz.

Nevýhody Fuzz testování

  • Samotné testování Fuzz nemůže poskytnout úplný obraz o celkové bezpečnostní hrozbě nebo chybách.
  • Fuzz testování je méně efektivní pro řešení bezpečnostních hrozeb, které nezpůsobují selhání programu, jako jsou některé viry, červy, trojské koně atd.
  • Fuzz testování může detekovat pouze jednoduché chyby nebo hrozby.
  • Účinný výkon bude vyžadovat značný čas.
  • Nastavení podmínky okrajové hodnoty s náhodnými vstupy je velmi problematické, ale nyní pomocí deterministických algoritmů založených na vstupech uživatelů většina testerů tento problém řeší.

Souhrn:

V softwarovém inženýrství testování Fuzz ukazuje přítomnost chyb v aplikaci. Fuzzing nemůže zaručit úplnou detekci chyb v aplikaci. Ale pomocí techniky Fuzz zajišťuje, že aplikace je robustní a bezpečná, protože tato technika pomáhá odhalit většinu běžných chyb zabezpečení.

K článku přispívá Priyanka Kothe