Testare Fuzz
Fuzz Testing sau Fuzzing este o tehnică de testare software de introducere a datelor invalide sau aleatorii numite FUZZ în sistemul software pentru a descoperi erori de codare și lacune de securitate. Scopul testării fuzz este inserarea datelor folosind tehnici automate sau semiautomatizate și testarea sistemului pentru diferite excepții, cum ar fi blocarea sistemului sau eșecul codului încorporat etc.
Testarea fuzz a fost inițial dezvoltată de Barton Miller la Universitatea din Wisconsin în 1989. Testarea fuzz sau fuzzing-ul este o tehnică de testare software și este un tip de testare de securitate .
De ce să faci testarea Fuzz?
- De obicei, testarea Fuzzy constată cel mai grav defect sau defect de securitate.
- Testarea Fuzz oferă rezultate mai eficiente atunci când este utilizată cu testarea Black Box, testarea beta și alte metode de depanare.
- Testarea Fuzz este utilizată pentru a verifica vulnerabilitatea software-ului. Este o tehnică de testare foarte rentabilă.
- Testarea fuzz este una dintre tehnicile de testare a cutiei negre. Fuzzing-ul este una dintre cele mai comune metode de hackeri folosite pentru a găsi vulnerabilitatea sistemului.
Cum se face testarea Fuzz
Pașii pentru testarea neclară includ pașii de testare de bază-
Pasul 1) Identificați sistemul țintă
Pasul 2) Identificați intrările
Pasul 3) Generați date Fuzzed
Pasul 4) Executați testul folosind date neclare
Pasul 5) Monitorizați comportamentul sistemului
Pasul 6) Defecte jurnal
Exemple de Fuzzers
-
Fuzzerele bazate pe mutație modifică eșantioanele de date existente pentru a crea noi date de testare. Aceasta este abordarea foarte simplă și directă, aceasta începe cu eșantioane valide de protocol și păstrează fiecare octet sau fișier.
-
Fuzzerele bazate pe generație definesc date noi bazate pe intrarea modelului. Începe să genereze intrări de la zero pe baza specificațiilor.
-
Fuzzer pe bază de protocoale , cel mai de succes este să dețineți cunoștințe detaliate despre formatul de protocol testat. Înțelegerea depinde de specificații. Aceasta implică scrierea unui set de specificații în instrument, apoi prin utilizarea tehnicii de generare a testelor bazate pe model, treceți prin specificație și adăugați nereguli în conținutul datelor, în secvență, etc. etc. Fuzzer-ul poate genera cazuri de testare dintr-unul existent sau poate folosi intrări valide sau nevalide.
Există două limitări ale difuzării bazate pe protocol:
- Testarea nu poate continua până când specificațiile nu ajung la maturitate.
- Multe protocoale utile sunt o extensie a protocoalelor publicate. Dacă testarea fuzz se bazează pe specificațiile publicate, acoperirea testelor pentru noile protocoale va fi limitată.
Cea mai simplă formă de tehnică de fuzzing este trimiterea de intrări aleatorii către software fie ca pachete de protocol, fie ca eveniment. Această tehnică de transmitere a intrărilor aleatorii este foarte puternică pentru a găsi erori în multe aplicații și servicii. Sunt disponibile și alte tehnici și este foarte ușor de implementat. Pentru a implementa aceste tehnici trebuie doar să schimbăm intrările existente. Putem schimba intrarea doar schimbând biții de intrare.
Tipuri de erori detectate prin testarea Fuzz
-
Defecțiuni de afirmare și scurgeri de memorie această metodologie este utilizată pe scară largă pentru aplicații mari în care erorile afectează siguranța memoriei, care este o vulnerabilitate severă.
- Intrare nevalidă
În testarea fuzz, fuzzerele sunt utilizate pentru a genera o intrare nevalidă, care este utilizată pentru testarea rutinelor de gestionare a erorilor și acest lucru este important pentru software-ul care nu controlează intrarea sa. Fuzzingul simplu poate fi cunoscut ca o modalitate de automatizare a testelor negative.
- Erori de corectitudine
Fuzzing-ul poate fi folosit și pentru a detecta unele tipuri de bug-uri de „corectitudine”. Cum ar fi o bază de date coruptă, rezultate de căutare slabe etc.
Instrumente de testare Fuzz
Instrumentele utilizate în securitatea web pot fi utilizate pe scară largă în testarea fuzz, cum ar fi Burp Suite, Peach Fuzzer etc.
- Peach Fuzzer
Peach Fuzzer oferă o acoperire mai robustă și mai sigură decât un scaner. Alte instrumente de testare pot căuta numai fire cunoscute, în timp ce Peach Fuzzer permite utilizatorilor să găsească fire cunoscute și necunoscute.
- Spike Proxy
Este un instrument de nivel profesional care caută vulnerabilități la nivel de aplicație în aplicații web. SPIKE Proxy acoperă elementele de bază, cum ar fi SQL Injection și cross-site-scripting, dar este o infrastructură Python complet deschisă. SPIKE Proxy este disponibil pentru Linux și Windows.
- Webscarab
Webscarab este scris în Java, astfel portabil pe multe platforme. Pentru analiza aplicației se utilizează cadrul Webscarab care comunică utilizând protocoalele HTTP și HTTPS.
Ex: Webscarab funcționează ca un proxy de interceptare, permite operatorului să revizuiască și să modifice cererea creată de browser înainte ca acestea să fie primite de server. Și permiteți să revizuiți și să actualizați răspunsul generat de server înainte de a fi primit de browser. În acest fel, dacă scarabeul web găsește o lacună, va face lista problemelor raportate.
- OWASP WSFuzzer
WSFuzzer este un program GPL, scris în Python. În prezent, GPL a vizat Servicii Web. În versiunea curentă a OWASPWSFuzzer, serviciile SOAP bazate pe HTTP sunt principala țintă.
Avantajele testării Fuzz
- Testarea Fuzz îmbunătățește testarea securității software-ului.
- Bug-urile găsite în fuzzing sunt uneori severe și de cele mai multe ori folosite de hackeri, inclusiv blocări, scurgeri de memorie, excepție nesolicitată etc.
- Dacă vreunul dintre bug-uri nu reușește să fie remarcat de testeri din cauza limitării timpului și a resurselor, bug-urile respective se găsesc și în testarea Fuzz.
Dezavantaje ale testării Fuzz
- Testarea Fuzz singură nu poate oferi o imagine completă a unei amenințări generale la adresa securității sau a erorilor.
- Testarea Fuzz este mai puțin eficientă pentru a face față amenințărilor de securitate care nu cauzează blocarea programului, cum ar fi unii viruși, viermi, troieni etc.
- Testarea Fuzz poate detecta doar erori simple sau amenințări.
- Pentru a efectua eficient, va necesita timp semnificativ.
- Stabilirea unei condiții de valoare la graniță cu intrări aleatorii este foarte problematică, dar acum folosind algoritmi deterministici pe baza intrărilor utilizatorilor, majoritatea testerilor rezolvă această problemă.
Rezumat:
În Ingineria software, testarea Fuzz arată prezența erorilor într-o aplicație. Fuzzing-ul nu poate garanta detectarea completă a erorilor într-o aplicație. Dar prin utilizarea tehnicii Fuzz, se asigură că aplicația este robustă și sigură, deoarece această tehnică ajută la expunerea majorității vulnerabilităților comune.
Acest articol este contribuit de Priyanka Kothe