Zranitelnosti softwaru jsou významným problémem v kybernetické bezpečnosti. Umožňují napadení softwarových produktů, a když jsou tyto produkty připojeny k jinak zabezpečeným sítím, mohou poskytnout vstupní bod pro hackery.

Všechny profesionální softwarové produkty jsou před vydáním důkladně testovány. Bohužel zranitelnosti jsou stále běžným jevem. Jedním ze způsobů, jak najít další zranitelnosti, je použití techniky testování softwaru známé jako fuzzing.

Co je tedy fuzzing a jak funguje?

Co je to Fuzzing?

Fuzzing je automatizovaná technika testování softwaru, která se pokouší najít zranitelnosti pomocí náhodných vstupů.

Software se často chová nepředvídatelně, když uživatel zadá jiný vstup, než jaký byl požadován. Fuzzing je praxe zadávání velkého množství neočekávaných vstupů a zaznamenávání toho, co se stane. Myšlenka je taková, že uživatel může monitorovat software a určit, zda jsou přítomny nějaké zranitelnosti.

Fuzzing se používá k testování softwarových produktů a bezpečnostními odborníky ke zjištění, zda je síť bezpečná. Používají ho také hackeři, kteří praktikují fuzzing, aby našli zranitelnosti, které mohou sami použít.

instagram viewer

Zranitelnosti objevené fuzzingem se značně liší. Neočekávaný vstup může způsobit selhání softwaru. Může však také vrátit soukromé informace nebo umožnit uživateli přístup k částem softwaru, které by jinak byly zakázány.

Jaké jsou výhody Fuzzingu?

Fuzzing je jen jedním z mnoha způsobů, jak mohou být softwarové produkty testovány na zranitelnost. Je populární, protože:

  • Fuzzing je zcela automatizovaný. Jakmile je fuzzing program nastaven, může pokračovat v hledání zranitelnosti bez lidského zásahu.
  • Fuzzing může najít zranitelnosti, které jiné techniky testování softwaru nemají. Z tohoto důvodu se často používá vedle ručních technik.
  • Fuzzing je často používán hackery najít zero-day zranitelnosti. Použití stejných technik jako hackeři umožňuje vývojářům najít zero-day zranitelnosti dříve, než je udělají.

Jak Fuzzing funguje?

Nástroj používaný pro fuzzing má obvykle tři složky. Často jsou označováni jako básníci, kurýři a věštci.

Básník

Básník zahájí proces a je zodpovědný za vytvoření testovacího případu. Testovací případ je dlouhý seznam potenciálních vstupů.

Kurýr

Kurýr vloží všechny náhodné vstupy do cíleného softwaru. Fuzzery jsou navrženy tak, aby to dělaly automaticky, což umožňuje hromadné testování velkého množství vstupů.

Oracle

Oracle kontroluje, zda některý ze vstupů nezpůsobuje, že software dělá něco jiného, ​​než k čemu byl navržen. Pokud se fuzzing provádí pro legitimní účely, lze chování replikovat a opravit. Nebo pokud fuzzing provádí hacker a neočekávané chování je užitečné, může být použito pro škodlivé účely.

Jak útočníci používají Fuzzing?

Fuzzing je mezi hackery oblíbenou technikou, protože jim umožňuje najít zranitelná místa v softwaru bez přístupu ke zdrojovému kódu. Protože je fuzzing automatizovaný, je také snadné jej provádět. Pokud hacker objeví zranitelnost, může být schopen provést následující útoky.

DDoS útoky

Pokud fuzzing zjistí, že určité vstupy vyžadují dlouhou dobu ke zpracování, lze tyto informace použít ke spuštění DDoS útoku. DDoS útok zahrnuje odeslání tolika požadavků do systému, že přestane fungovat. Fuzzing umožňuje přizpůsobit požadavky tak, aby vyžadovaly nejvíce systémových prostředků, na které mohou reagovat.

SQL Injection

Útok SQL injection je, když jsou aplikaci odeslány škodlivé příkazy SQL. Pokud tyto příkazy nejsou řádně dezinfikovány, mohou útočníkovi umožnit interakci s databází. To jim může umožnit krást data nebo je upravovat. Fuzzing je účinný nástroj pro pokusy o velké množství příkazů SQL a zjišťování, zda některé vyvolávají příznivou odezvu.

Přetečení zásobníku

Útok s přetečením vyrovnávací paměti je, když je do vyrovnávací paměti programu přidáno více dat, než dokáže zpracovat. V tomto scénáři je možné, že hacker způsobí, že daný program spustí škodlivý kód. Toho lze využít ke krádeži dat nebo k získání neoprávněného přístupu. Fuzzing se používá k nalezení vstupů, které mohou způsobit přetečení vyrovnávací paměti.

Typy Fuzzingu

Fuzzing nástroje lze klasifikovat podle toho, jak jsou generovány testovací případy, a podle toho, kolik toho je o systému známo.

Hloupý vs. Chytrý

Dumb fuzzing jednoduše přidává velké množství náhodných vstupů. Nevybírá vstupy, které aplikace s největší pravděpodobností přijme. To usnadňuje implementaci, aniž byste o softwaru cokoliv věděli; je však také vysoce neefektivní, protože většina vstupů bude odmítnuta.

Inteligentní fuzzing generuje vstupy, které aplikace pravděpodobně přijme. Vyžaduje, aby uživatel chápal, jaký vstupní formát je přijatelný, a poté v tomto formátu generoval velké množství vstupů. Implementace inteligentního fuzzingu vyžaduje větší úsilí a znalost produktu, ale je výrazně efektivnější.

Mutační vs. Generační

Mutační fuzzery převezmou vstup, který byl dříve přijat, a provedou v něm drobné změny. To umožňuje generovat vstupy, které budou pravděpodobně přijaty bez znalosti přijímaného formátu.

Generační fuzzery vytvářejí zcela nové vstupy na základě toho, co je známo o přijímaném formátu.

Bílá krabička vs. Černá skříňka

Black box fuzzing se používá bez jakýchkoliv informací o testované aplikaci. Je méně efektivní než bílé pole fuzzing, ale lze jej použít v jakékoli aplikaci bez přístupu ke zdrojovému kódu. Díky tomu je populární mezi hackery.

White box fuzzing využívá informace o testované aplikaci k vytváření vstupů, které budou s největší pravděpodobností přijaty a způsobí zranitelnosti. Používají jej především vývojáři softwaru, protože je účinnější než rozostření černé skříňky.

Fuzzing je výkonná metoda testování softwaru, kterou používají vývojáři softwaru, bezpečnostní profesionálové a hackeři. Jeho implementace vyžaduje minimální úsilí a je schopna najít zranitelná místa, která jiné techniky testování softwaru nemají.

Je to zvláště důležité z hlediska zabezpečení, protože se často používá k odhalení zranitelností zero-day. Tyto chyby zabezpečení mohou buď objevit a opravit bezpečnostní profesionálové, nebo je mohou objevit a zneužít hackeři.