Ce este Fuzz Testing?

Testarea fuzz, sau fuzzing, este o metodă de verificare pentru a vedea cum va răspunde un program sau un sistem de calculator la diverse intrări și informații, uneori aleatorii. Procesul implică generarea unui anumit tip de date, fie complet aleatoare, fie aleatorii în anumite constrângeri, și apoi introducerea acestor date în program pentru a testa modul în care gestionează informațiile neașteptate. Cea mai elementară formă de testare fuzz implică trimiterea unei secvențe aleatorii de apăsări de taste sau caractere către program și verificarea faptului că le procesează corect. O versiune mai complexă a testării fuzz utilizează date structurate care sunt apoi manipulate aleatoriu și trimise programului. Datele pot ajunge în program ca evenimente de sistem, intrări de la tastatură, semnale de rețea simulate sau chiar ca fișiere care urmează să fie încărcate.

Există diverse părți ale unui program de calculator care pot fi testate cu un generator de fuzz. Interfața grafică cu utilizatorul (GUI) poate fi testată prin crearea unei secvențe de evenimente aleatoare de mouse și tastatură și verificând dacă GUI este capabil să gestioneze intrarea fără să se blocheze, să înghețe sau să execute o sarcină neașteptată. Protocoalele de rețea pot fi testate permițând generatorului de fuzz să schimbe aleatoriu părți ale unui pachet de date valid și apoi asigurându-se că protocolul poate continua să funcționeze după primirea datelor incorecte. Elementele de intrare de bază ale aproape oricărui program pot fi verificate pentru capacitatea lor de a rezista erorilor, cum ar fi intrarea care este mult prea lungă pentru tipul de stocare, intrarea care este de alt tip decât cea așteptată și intrarea care este cumva incompletă sau incorectă.

Industria securității computerelor poate folosi testarea fuzz pentru a se asigura că nu există găuri evidente de securitate în anumite sisteme. Acest lucru se poate face folosind un generator de fuzz proiectat pentru testarea securității computerului. Aceste programe vor încerca să folosească cuvinte cheie de sistem, parole implicite cunoscute de administrator, funcții din bibliotecile pe care le folosește programul și apeluri aleatorii la funcțiile de sistem pentru a vedea cum va reacționa programul.

Diferitele tipuri de testare fuzz pot fi personalizate pentru a fi în anumite intervale sau chiar pentru a testa doar anumite tipuri de intrare. Aceasta înseamnă că un program ar putea avea doar comenzi valide trimise către el, dar ar putea fi într-o ordine fără sens. Există programe de testare fuzz mai complexe care pot prelua elemente ale programului țintă și le pot manipula pentru a produce situații care ar putea fi exploatate rău intenționat. Aceasta poate include schimbarea ordinii proceselor care sunt generate, modificări ale permisiunilor sau modificarea datelor de bază și a fișierelor de bibliotecă.

Rezultatul final al testării fuzz este de a vedea dacă un program este sigur și se comportă așa cum ar trebui atunci când se confruntă cu o situație neașteptată. Când este utilizat în tandem cu software-ul de profilare și analiză, poate detecta, de asemenea, scurgeri de memorie în zone ale programului, cum ar fi gestionarea erorilor sau blocajele de performanță. În cazurile de securitate a computerului, problemele periculoase, cum ar fi debordările care pot compromite un sistem, pot fi detectate cu configurarea corectă. Cu toate acestea, testarea fuzz nu poate fi utilizată ca metodă unică de testare a software-ului și trebuie să facă parte dintr-un proces mai amplu de asigurare a calității și inspecție a software-ului.