Výukový program Fuzz Testing (Fuzzing).

Co je Fuzz testování?

Fuzz testování nebo Fuzzing je technika testování softwaru, která vkládá neplatná nebo náhodná data zvaná FUZZ do softwarového systému za účelem odhalení chyb v kódování a bezpečnostních mezer. Účelem fuzz testování je vkládání dat pomocí automatizovaných nebo poloautomatizovaný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í původně vyvinul Barton Miller na University of Wisconsin v roce 1989. Fuzz testování neboli fuzzing je technika testování softwaru a je to typ Testování bezpečnosti.

Fuzz testování

Proč dělat Fuzz testování?

  • Fuzzy testování obvykle najde nejzávažnější bezpečnostní chybu nebo defekt.
  • Fuzz testování poskytuje efektivnější výsledek při použití s Černá Box Testování, beta testování a další metody ladění.
  • Fuzz testování se používá ke kontrole zranitelnosti softwaru. Je to velmi nákladově efektivní testovací technika.
  • Fuzz testování je jednou z technik testování černé skříňky. Fuzzing je jednou z nejběžnějších metod používaných hackery k nalezení zranitelnosti systému.

Jak provést Fuzz testování

Kroky pro fuzzy testování zahrnují základní testovací kroky –

Krok 1) Identifikujte cílový systém

Krok 2) Identifikujte vstupy

Krok 3) Generovat fuzzovaná data

Krok 4) Proveďte test pomocí fuzzy dat

Krok 5) Sledujte chování systému

Krok 6) Vady protokolů

Příklady Fuzzerů

  • Fuzzery založené na mutaci změnit existující vzorky dat za účelem vytvoření nových testovacích dat. Toto je velmi jednoduchý a přímočarý přístup, který začíná platnými vzorky protokolu a udržuje každý bajt nebo soubor.
  • Fuzzery založené na generaci definovat nová data na základě vstupu modelu. Začne generovat vstup od začátku na základě specifikace.
  • PROTOKOL-BASED-fuzzer, nejúspěšnějším fuzzerem je mít detailní znalost testovaného formátu protokolu. Pochopení závisí na specifikaci. Zahrnuje zapsání pole specifikace do nástroje a poté pomocí techniky generování testů na základě modelu projděte specifikaci a přidejte nepravidelnosti v obsahu dat, sekvenci atd. To je také známé jako 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é či neplatné vstupy.

Protokolově založené fuzzing má dvě omezení:

  1. Testování nemůže pokračovat, dokud není specifikace zralá.
  2. Mnoho užitečných protokolů je rozšířením publikovaných protokolů. Pokud je fuzz testování založeno na zveřejněných specifikacích, Pokrytí testu pro nové protokoly budou omezeny.

Nejjednodušší formou fuzzing techniky je odesílání náhodného vstupu do softwaru buď jako pakety protokolu nebo jako událost. Tato technika předávání náhodného vstupu je velmi účinná při hledání chyb v mnoha aplikacích a službách. K dispozici jsou i jiné techniky a jejich implementace je velmi snadná. K implementaci těchto technik stačí změnit stávající vstupy. Vstup můžeme změnit pouze výměnou bitů vstupu.

Typy chyb zjištěných Fuzz Testingem

  • Selhání tvrzení a úniky paměti tato metodika je široce používána pro velké aplikace, kde chyby ovlivňují bezpečnost paměti, což je závažná chyba zabezpečení.
  • Neplatný vstup Při fuzz testování se fuzzery používají ke generování neplatného vstupu, který se používá pro testování rutin pro zpracování chyb, a to je důležité pro software, který svůj vstup neřídí. Jednoduché fuzzing může být známé jako způsob automatizace negativního testování.
  • Chyby korektnosti 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.

Nástroje pro testování Fuzz

Nástroje, které se používají ve webové bezpečnosti, mohou být široce používány ve fuzz testování, jako je např 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á zranitelnosti na úrovni aplikací ve webových aplikacích. SPIKE Proxy pokrývá základy, jako např SQL Injection a cross-site-scripting, ale je to zcela otevřené Python infrastruktura. SPIKE Proxy je k dispozici pro Linux si Windows.
  • Webkarab: Webscarab je napsán v Java je tedy přenosný na mnoho platforem. Pro analýzu aplikací je použit framework Webscarab, který komunikuje pomocí protokolů HTTP a HTTPS.ex: Webscarab funguje jako záchytný proxy, umožňuje operátorovi zkontrolovat a upravit požadavky vytvořené prohlížečem předtím, než jsou přijaty serverem. A umožnit kontrolu a aktualizaci odpovědi generované serverem předtím, než ji obdrží prohlížeč. Tímto způsobem, pokud webový skarab najde nějakou mezeru, vytvoří seznam nahlášených problémů.
  • OWASP WSFuzzer: WSFuzzer je program pod licencí GPL, který je napsán v Python. Program GPL se v současnosti zaměřuje na webové služby. V aktuální verzi OWASPWSFuzzer založené na HTTP SOAP služby jsou hlavním cílem.

Výhody Fuzz testování

  • Fuzz testování zlepšuje software Testování bezpečnosti.
  • Chyby nalezené ve fuzzingu jsou někdy závažné a většinou je používají hackeři, včetně pádů, úniku paměti, neošetřené výjimky atd.
  • Pokud si některé z chyb nevšimnou testeři z důvodu omezení času a zdrojů, tyto chyby jsou také nalezeny v testování Fuzz.

Nevýhody Fuzz testování

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

Shrnutí

V softwarovém inženýrství ukazuje Fuzz testování 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 zranitelností.