Un ghid cuprinzător pentru testarea fuzz

Publicat: 2021-05-17

Testarea de securitate este unul dintre cei mai importanți pași pentru a vă asigura că software-ul dumneavoastră este gata pentru lansarea sa oficială, fie în scopuri comerciale, fie pentru utilizare comercială. Vă permite să detectați orice vulnerabilități pe care software-ul dvs. le poate avea și să dezvoltați o contramăsură pentru acestea dacă un hacker profită de un astfel de defect.

Dacă sunteți interesat de testarea de securitate, puteți afla faptele aici acum, dar un lucru pe care trebuie să-l știți este că există tot felul de modalități de a efectua teste de securitate, cum ar fi evaluarea riscurilor, testarea de penetrare și scanarea vulnerabilităților. Și dacă sunteți deja puțin familiarizat cu testarea de securitate, probabil ați auzit de termenul „testare fuzz”.

Testarea fuzz este o tehnică de testare relativ comună în industrie în zilele noastre, mai ales că giganții corporativi precum Microsoft și Google o folosesc de peste un deceniu. Dar ceea ce este surprinzător este că, în ciuda faptului că este o tehnică standard, nu mulți oameni știu despre ea. Acestea fiind spuse, acest ghid își propune să explice ce este testarea fuzz, începând cu definiția sa.

Ce este Fuzz Testing?

Testarea fuzz, sau ceea ce alții numesc „fuzzing”, implică introducerea de date nevalide sau aleatorii într-un program pentru a detecta orice vulnerabilități care pot duce la erori exploatabile. Această intrare poate fi sub forma unui fișier sau a unei intrări directe din partea utilizatorului. Deci, de exemplu, dacă construiți un fel de program de calcul, de obicei trebuie să introduceți numere sau operații matematice. Dar dacă efectuați teste fuzz, va trebui să introduceți o intrare nevalidă, cum ar fi litere sau chiar caractere speciale.

Dacă acest lucru blochează programul sau provoacă orice alt tip de eroare, programatorul presupune că există o vulnerabilitate și, prin urmare, poate lucra la modificarea codării în speranța remedierii problemei. La prima vedere, ați crede că testarea fuzz este aceeași cu alte tehnici precum scanarea vulnerabilităților sau testarea de penetrare, dar există un motiv pentru popularitatea sa.

De ce folosesc companiile Fuzz Testing?

Nu există o soluție unică pentru toate când vine vorba de testarea de securitate. Fiecare metodă poate detecta probleme pe care alții nu le pot; unele necesită costuri de operare mai mici, în timp ce altele sunt mai ușor de executat. La fel ca orice tehnică de testare de securitate, testarea fuzz este unică în felul său. Mai jos sunt câteva avantaje care determină companiile să utilizeze testarea fuzz.

  • Simplitate: Știți deja cum funcționează testarea fuzz - este o chestiune de introducere a unei intrări nevalide într-un program. Simplitatea procesului în general servește ca un mare avantaj pentru persoanele sau organizațiile lipsite de abilități și experiență în ceea ce privește testarea securității.
  • Automatizare: testarea de securitate ar putea fi un pas crucial în dezvoltarea software-ului și a aplicațiilor, dar de multe ori, există și alte lucruri de făcut în afară de testarea constantă a programului. Cu toate acestea, este o altă poveste cu testarea fuzz, deoarece puteți automatiza întregul proces folosind fuzzers.

Fuzzers sunt instrumente responsabile pentru introducerea automată a datelor în program dacă li se oferă comanda și condițiile necesare. Faptul că testarea fuzz permite automatizarea afacerii o face o tehnică de testare ideală pentru companii.

  • Convenabil: De obicei, la testare, trebuie să folosiți cât mai multe instrumente posibil pentru a reduce probabilitatea erorilor și pentru a maximiza securitatea programului. Deoarece testarea fuzz este automată și simplă, este o modalitate convenabilă de a îmbunătăți securitatea software-ului.

Fuzzing, în general, este simplu și ușor de implementat, dar merită remarcat faptul că există tot felul de abordări ale testării fuzz. În funcție de tipul pe care îl utilizați, dificultatea și complexitatea procesului de testare pot varia. În această notă, acesta ar putea fi un moment bun pentru a vorbi despre diferitele tipuri de testare fuzz.

Diferite abordări ale testării fuzz

Deși există mai multe tipuri de testare fuzz, acestea sunt în mare parte similare între ele, cu excepția faptului că generează input diferit. Indiferent, există patru abordări ale testării fuzz:

  • Dumb Fuzzing: Când cineva dorește să genereze intrări complet aleatoriu, de obicei folosesc un fuzzer prost. Un fuzzer prost este un instrument care produce intrări fără cunoștințe sau inteligență prealabilă a programului, de unde și numele.

De exemplu, dacă construiți un program de verificare a gramaticii, un fuzzer prost poate ajunge să genereze o imagine, ceea ce este departe de ceea ce se așteaptă programul. Dumb fuzzing este cea mai simplă abordare a testării fuzz.

  • Fuzzing inteligent: Pe cealaltă parte a monedei este fuzzing inteligent. Spre deosebire de fuzzing prost, fuzzing inteligent generează input știind ce se așteaptă programul să primească. Mai mult, un fuzzer inteligent nu va genera intrări care inevitabil vor bloca programul. În schimb, va veni cu input care poate provoca un comportament neașteptat.

Deci, în exemplul anterior, un fuzzer inteligent ar putea genera caractere speciale, dar niciodată o imagine sau orice altă intrare necorespunzătoare. Deși fuzzers-urile inteligente sunt mai dificil de implementat decât fuzz-urile proaste, ele sunt mai precise de cele mai multe ori.

  • Fuzzing mutațional: Fuzzing mutațional implică generarea unei intrări prin modificarea sau, mai precis, „mutarea” unei intrări valide existente. În exemplul nostru cu programul calculatorului, un fuzzer mutațional poate alege o intrare validă existentă.

Să presupunem că intrarea selectată este „10+9”. Un fuzzer mutațional va încerca să modifice această intrare adăugând, eliminând sau modificând o parte a acestei intrări, cum ar fi creșterea valorii și transformarea acesteia în „180+129′ sau schimbând operația pentru a rezulta „10/9”.

  • Fuzzing generațional: în sfârșit, fuzzing generațional generează input de la zero, care este opusul fuzzing-ului mutațional care generează input de la cele existente. Deoarece nu există referințe, fuzzerii generaționali sunt mult mai greu de implementat decât fuzzerii mutaționali, dar pot duce la mai multe date pentru tester.

Ceea ce face ca testarea fuzz să fie puțin mai interesantă decât alte tehnici este că puteți combina diferite tipuri pentru a îmbunătăți instrumentul de testare. De exemplu, puteți crea un fuzzer cu mutație inteligentă sau un fuzzer generațional prost, în funcție de ceea ce are nevoie programul dvs. Poate că nenumăratele combinații pe care le puteți efectua cu testarea fuzz este un alt motiv pentru care companiile preferă testarea fuzz decât alte metode.

Încheierea

Odată ce ați aflat mai multe despre testarea fuzz, este ușor să vedeți de ce a devenit la fel de popular ca acum. Cu toate acestea, merită remarcat faptul că, la fel ca orice altă tehnică, testarea fuzz are unele dezavantaje. Prin urmare, este esențial să determinați dacă testarea fuzz poate face mai mult bine decât dăunează aplicației sau software-ului dvs. După cum sa spus anterior, nu există o soluție universală pentru testarea securității software-ului, iar testarea fuzz cu siguranță nu va fi acea soluție.

Ai vreo părere despre asta? Anunțați-ne mai jos în comentarii sau transmiteți discuția pe Twitter sau Facebook.

Recomandările editorilor: