Zraniteľnosť softvéru predstavuje významný problém v kybernetickej bezpečnosti. Umožňujú napadnutie softvérových produktov a keď sú tieto produkty pripojené k inak bezpečným sieťam, môžu poskytnúť hackerom vstupný bod.

Všetky profesionálne softvérové ​​produkty sú pred vydaním dôkladne testované. Bohužiaľ, zraniteľné miesta sú stále bežným javom. Jedným zo spôsobov, ako nájsť ďalšie zraniteľnosti, je použitie techniky testovania softvéru známej ako fuzzing.

Čo je teda fuzzing a ako to funguje?

Čo je to Fuzzing?

Fuzzing je automatizovaná technika testovania softvéru, ktorá sa pokúša nájsť zraniteľné miesta pomocou náhodných vstupov.

Softvér sa často správa nepredvídateľne, keď používateľ zadá iný vstup, ako bol požadovaný. Fuzzing je prax zadávania veľkého množstva neočakávaných vstupov a zaznamenávania toho, čo sa deje. Myšlienkou je, že používateľ potom môže monitorovať softvér a určiť, či sú alebo nie sú prítomné nejaké zraniteľnosti.

Fuzzing sa používa na testovanie softvérových produktov a odborníci na bezpečnosť na určenie, či je sieť bezpečná. Používajú ho aj hackeri, ktorí praktizujú fuzzing na nájdenie zraniteľností, ktoré môžu sami použiť.

instagram viewer

Zraniteľnosti objavené fuzzingom sa značne líšia. Neočakávaný vstup môže spôsobiť zlyhanie softvéru. Môže však tiež vrátiť súkromné ​​informácie alebo umožniť používateľovi prístup k častiam softvéru, ktoré by inak boli zakázané.

Aké sú výhody Fuzzingu?

Fuzzing je len jedným z mnohých spôsobov, ako možno testovať zraniteľnosť softvérových produktov. Je populárny, pretože:

  • Fuzzing je plne automatizovaný. Akonáhle je fuzzing program nastavený, môže pokračovať v hľadaní zraniteľností bez ľudského zásahu.
  • Fuzzing môže nájsť zraniteľné miesta, ktoré iné techniky testovania softvéru nemajú. Z tohto dôvodu sa často používa popri manuálnych technikách.
  • Fuzzing často používajú hackeri nájsť zraniteľnosti zero-day. Použitie rovnakých techník ako hackerom umožňuje vývojárom nájsť zero-day zraniteľnosti skôr, ako to urobia.

Ako funguje Fuzzing?

Nástroj používaný na fuzzovanie má zvyčajne tri zložky. Často sa o nich hovorí ako o básnikoch, kuriéroch a orákulum.

Básnik

Básnik spustí proces a je zodpovedný za vytvorenie testovacieho prípadu. Testovací prípad je dlhý zoznam potenciálnych vstupov.

Kuriér

Kuriér vloží všetky náhodné vstupy do cieleného softvéru. Fuzzery sú navrhnuté tak, aby to robili automaticky, čo umožňuje hromadné testovanie veľkého množstva vstupov.

Oracle

Oracle kontroluje, či niektorý zo vstupov nespôsobuje, že softvér robí niečo iné, než na čo bol navrhnutý. Ak sa fuzzing vykonáva na legitímne účely, správanie sa potom môže replikovať a opraviť. Alebo ak fuzzing vykonáva hacker a neočakávané správanie je užitočné, môže byť použité na škodlivé účely.

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

Fuzzing je populárna technika medzi hackermi, pretože im umožňuje nájsť zraniteľné miesta v softvéri bez prístupu k zdrojovému kódu. Pretože je fuzzing automatizovaný, je tiež jednoduché ho vykonávať. Ak hacker objaví zraniteľnosť, môže byť schopný vykonať nasledujúce útoky.

DDoS útoky

Ak fuzzing zistí, že určité vstupy vyžadujú dlhý čas na spracovanie, tieto informácie možno použiť na spustenie DDoS útoku. DDoS útok zahŕňa odoslanie toľkých požiadaviek do systému, že prestane fungovať. Fuzzing umožňuje prispôsobiť požiadavky tak, aby si vyžadovali čo najviac systémových prostriedkov na odpoveď.

SQL Injection

Útok injekciou SQL je, keď sa do aplikácie odošlú škodlivé príkazy SQL. Ak tieto príkazy nie sú správne vyčistené, môžu útočníkovi umožniť interakciu s databázou. To im môže umožniť ukradnúť údaje alebo ich upraviť. Fuzzing je účinný nástroj na skúšanie veľkého množstva príkazov SQL a zisťovanie, či nejaké vyvolávajú priaznivú odozvu.

Pretečenie vyrovnávacej pamäte

Útok pretečenia vyrovnávacej pamäte je, keď sa do vyrovnávacej pamäte programu pridá viac údajov, ako dokáže spracovať. V tomto scenári je možné, že hacker spôsobí, že daný program spustí škodlivý kód. To môže byť použité na odcudzenie údajov alebo získanie neoprávneného prístupu. Fuzzing sa používa na nájdenie vstupov, ktoré môžu spôsobiť pretečenie vyrovnávacej pamäte.

Typy Fuzzingu

Fuzzing nástroje možno klasifikovať na základe toho, ako sa generujú testovacie prípady a koľko toho je o systéme známe.

Hlúpy vs. Inteligentný

Hlúpe fuzzing jednoducho pridáva veľké množstvo náhodných vstupov. Nevyberá vstupy, ktoré aplikácia s najväčšou pravdepodobnosťou akceptuje. To uľahčuje implementáciu bez toho, aby ste vedeli čokoľvek o softvéri; je to však tiež vysoko neefektívne, pretože väčšina vstupov bude zamietnutá.

Inteligentné fuzzing generuje vstupy, ktoré aplikácia pravdepodobne akceptuje. Vyžaduje, aby používateľ chápal, aký formát vstupu je prijateľný, a potom v rámci tohto formátu generoval veľké množstvo vstupov. Implementácia inteligentného fuzzingu si vyžaduje viac úsilia a znalostí o produkte, no je podstatne efektívnejšia.

Mutačný vs. Generačný

Mutačné fuzzery prevezmú vstup, ktorý bol predtým prijatý, a urobia v ňom menšie zmeny. To umožňuje generovať vstupy, ktoré budú pravdepodobne prijaté bez znalosti akceptovaného formátu.

Generačné fuzzery vytvárajú úplne nové vstupy na základe toho, čo je známe o akceptovanom formáte.

Biely box vs. Čierna krabica

Black box fuzzing sa používa bez akýchkoľvek informácií o testovanej aplikácii. Je menej efektívne ako biele pole fuzzing, ale dá sa použiť na akúkoľvek aplikáciu bez prístupu k zdrojovému kódu. Vďaka tomu je populárny medzi hackermi.

Biele pole fuzzing používa informácie o testovanej aplikácii na vytváranie vstupov, ktoré budú s najväčšou pravdepodobnosťou akceptované a vytvárajú slabé miesta. Používajú ho predovšetkým vývojári softvéru, pretože je efektívnejší ako fuzzovanie čiernej skrinky.

Fuzzing je výkonná metóda testovania softvéru, ktorú používajú vývojári softvéru, profesionáli v oblasti bezpečnosti a hackeri. Jeho implementácia si vyžaduje minimálne úsilie a je schopná nájsť zraniteľné miesta, ktoré iné techniky testovania softvéru nedokážu.

Je to obzvlášť dôležité z hľadiska bezpečnosti, pretože sa často používa na odhaľovanie zraniteľností zero-day. Tieto zraniteľnosti môžu buď objaviť a opraviť odborníci na bezpečnosť, alebo ich môžu objaviť a zneužiť hackeri.