Co je testování chmele?
Fuzz testování, nebo fuzzing, je metoda kontroly, aby se zjistilo, jak počítačový program nebo systém bude reagovat na různé, někdy náhodné, vstupy a informace. Proces zahrnuje generování nějakého typu dat, buď zcela náhodných nebo náhodných v rámci určitých omezení, a pak jejich vložení do programu, aby se otestovalo, jak zpracovává neočekávané informace. Nejzákladnější forma testování chmele zahrnuje odeslání náhodné sekvence stisknutí kláves nebo znaků do programu a ověření, že je zpracovává správně. Složitější verze testování chmele používá strukturovaná data, která jsou pak náhodně manipulována a odeslána do programu. Data se mohou dostat do programu jako systémové události, klávesové vstupy, falešné síťové signály nebo dokonce jako soubory, které mají být načteny.
Existují různé části počítačového programu, které lze otestovat pomocí generátoru fuzz. Grafické uživatelské rozhraní (GUI) lze otestovat vytvořením posloupnosti náhodných událostí myši a klávesnice a kontrolou, zda GUI dokáže zpracovat vstup, aniž by došlo k selhání, zmrazení nebo provedení neočekávané úlohy. Síťové protokoly lze otestovat tak, že generátoru fuzz lze náhodně změnit části platného datového paketu a poté zajistit, aby protokol mohl nadále fungovat i po obdržení chybně formátovaných dat. Základní vstupní prvky téměř jakéhokoli programu lze zkontrolovat na jejich schopnost odolávat chybám, jako je vstup, který je příliš dlouhý pro typ úložiště, vstup, který je jiného typu, než se očekávalo, a vstup, který je nějak neúplný nebo nesprávný.
Odvětví počítačové bezpečnosti může používat testování chmýří, aby zajistilo, že v některých systémech neexistují žádné zjevné bezpečnostní díry. Toho lze dosáhnout pomocí generátoru fuzz navrženého pro testování zabezpečení počítače. Tyto programy se pokusí použít systémová klíčová slova, známá výchozí hesla správce, funkce v knihovnách, které program používá, a náhodná volání do systémových funkcí, aby zjistily, jak program bude reagovat.
Různé typy testování chmele mohou být přizpůsobeny tak, aby byly v určitých rozsazích, nebo dokonce testovaly pouze specifické typy vstupu. To znamená, že program mohl posílat pouze platné příkazy, ale mohly být v nesmyslném pořadí. Existují složitější programy testování chmele, které mohou brát prvky cílového programu a manipulovat s nimi, aby vytvořily situace, které by mohly být zneužity škodlivě. To může zahrnovat změnu pořadí procesů, které jsou vytvářeny, úpravy oprávnění nebo modifikace základních dat a souborů knihovny.
Konečným výsledkem testování chmele je zjistit, zda je program bezpečný, a chová se, jak by měl, když bude konfrontován s neočekávanou situací. Při použití v součinnosti s profilovacím a analytickým softwarem může také detekovat úniky paměti v oblastech programu, jako je zpracování chyb nebo omezení výkonu. V případě zabezpečení počítače lze pomocí správného nastavení zachytit nebezpečné problémy, jako jsou přetoky, které mohou ohrozit systém. Fuzz testování však nemůže být použito jako jediná metoda testování softwaru a musí být součástí většího procesu zajišťování kvality a kontroly softwaru.