Tutorial de testare Fuzz (Fuzzing).
Ce este Fuzz Testing?
Testarea Fuzz sau Fuzzing este o tehnică de testare a software-ului 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 semi-automatizate și testarea sistemului pentru diverse excepții, cum ar fi blocarea sistemului sau eșecul codului încorporat etc.
Testarea fuzz a fost dezvoltată inițial de Barton Miller la Universitatea din Wisconsin în 1989. Testarea fuzz sau fuzzing este o tehnică de testare software și este un tip de Testarea securității.
De ce să faci Fuzz Testing?
- De obicei, testarea fuzzy găsește cea mai gravă defecțiune sau defecțiune de securitate.
- Testarea fuzz oferă rezultate mai eficiente atunci când este utilizat cu Negru Box Testarea, testarea beta și alte metode de depanare.
- Testarea fuzz este folosită pentru a verifica vulnerabilitatea software-ului. Sunt tehnici de testare foarte rentabile.
- Testarea fuzz este una dintre tehnicile de testare a cutiei negre. Fuzzing este una dintre cele mai comune metode folosite de hackeri pentru a găsi vulnerabilitățile sistemului.
Cum se face Fuzz Testing
Pașii pentru testarea neclară includ pașii de bază de testare-
Pas 1) Identificați sistemul țintă
Pas 2) Identificați intrările
Pas 3) Generați date Fuzzed
Pas 4) Executați testul folosind date neclare
Pas 5) Monitorizați comportamentul sistemului
Pas 6) Defecte de jurnal
Exemple de Fuzzers
- Fuzzers bazate pe mutații modificați mostrele de date existente pentru a crea noi date de testare. Aceasta este abordarea foarte simplă și directă, aceasta începe cu mostre valide de protocol și continuă să distrugă fiecare octet sau fișier.
- Fuzzere bazate pe generații definiți date noi pe baza intrării modelului. Începe să genereze input de la zero pe baza specificațiilor.
- BAZAT PE PROTOCOL-fuzzer, cel mai de succes fuzzer este acela de a avea cunoștințe detaliate despre formatul de protocol testat. Înțelegerea depinde de specificație. Aceasta implică scrierea unei matrice a specificației în instrument, apoi prin utilizarea tehnicii de generare a testelor bazate pe model, treceți prin specificație și adăugați neregularități în conținutul datelor, secvență etc. Acest lucru este cunoscut și sub numele de testare de sintaxă, testare gramaticală, testare de robustețe, etc. Fuzzer poate genera cazuri de testare dintr-unul existent sau pot folosi intrări valide sau nevalide.
Există două limitări ale fuzzing-ului bazat pe protocol:
- Testarea nu poate continua până când specificația este matură.
- Multe protocoale utile sunt o extensie a protocoalelor publicate. Dacă testarea fuzz se bazează pe specificațiile publicate, Testați acoperirea pentru noile protocoale vor fi limitate.
Cea mai simplă formă de tehnică de fuzzing este trimiterea de date 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 prin interschimbarea biților de intrare.
Tipuri de erori detectate de Fuzz Testing
- Eșecuri de afirmație și scurgeri de memorie această metodologie este utilizată pe scară largă pentru aplicații mari în care erorile afectează siguranța memoriei, ceea ce reprezintă o vulnerabilitate gravă.
- Intrare nevalidă În testarea fuzz, fuzzers-urile sunt folosite pentru a genera o intrare invalidă care este utilizată pentru testarea rutinelor de tratare a erorilor, iar acest lucru este important pentru software-ul care nu controlează intrarea acestuia. Fuzzing simplu poate fi cunoscut ca o modalitate de automatizare a testării negative.
- Erori de corectitudine Fuzzing-ul poate fi folosit și pentru a detecta unele tipuri de erori de „corectitudine”. Cum ar fi o bază de date coruptă, rezultate slabe de căutare etc.
Instrumente de testare Fuzz
Instrumentele care sunt utilizate în securitatea web pot fi utilizate pe scară largă în testarea fuzz, cum ar fi Burp Suite, Peach Fuzzer etc.
- Fuzzer cu piersici: Peach Fuzzer oferă o acoperire mai robustă și de securitate decât un scaner. Alte instrumente de testare pot căuta numai fire cunoscute, în timp ce Peach Fuzzer le 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țiile web. SPIKE Proxy acoperă elementele de bază, cum ar fi SQL Injectare și cross-site-scripting, dar este complet deschis Python infrastructură. SPIKE Proxy este disponibil pentru Linux si Windows.
- Webscarab: Webscarab este scris în Java astfel portabil pe multe platforme. Pentru analiza aplicației se folosește framework Webscarab care comunică folosind protocoalele HTTP și HTTPS.ex: Webscarab funcționează ca un proxy de interceptare, acesta permite operatorului să revizuiască și să modifice cererile create de browser înainte ca acestea să fie primite de server. Și permiteți revizuirea și actualizarea răspunsului generat de server înainte de a fi primit de browser. În acest fel, dacă scarab web găsește vreo lacună, va face lista cu problemele raportate.
- OWASP WSFuzzer: WSFuzzer este un program GPL care este scris în Python. GPL a avut un program care vizează în prezent serviciile web. În versiunea actuală a OWASPWSFuzzer bazată pe HTTP Servicii SOAP sunt ținta principală.
Avantajele testării Fuzz
- Testarea fuzz îmbunătățește software-ul Testarea securității.
- Bug-urile găsite în fuzzing sunt uneori severe și de cele mai multe ori sunt utilizate de hackeri, inclusiv blocări, scurgeri de memorie, excepții negestionate etc.
- Dacă vreunul dintre erori nu reușește să fie observat de testeri din cauza limitării de timp și resurse, acele erori sunt găsite și în testarea Fuzz.
Dezavantajele testării Fuzz
- Numai testarea fuzz nu poate oferi o imagine completă a unei amenințări generale de securitate sau a erorilor.
- Testarea fuzz este mai puțin eficientă pentru a face față amenințărilor de securitate care nu provoacă blocări ale programului, cum ar fi unii viruși, viermi, troieni etc.
- Testarea fuzz poate detecta doar erori sau amenințări simple.
- Pentru a funcționa eficient, va necesita timp semnificativ.
- Setarea unei condiții de valoare limită cu intrări aleatorii este foarte problematică, dar acum, folosind algoritmi determiniști bazați pe intrările utilizatorilor, majoritatea testerilor rezolvă această problemă.
Rezumat
În Ingineria Software, testarea Fuzz arată prezența erorilor într-o aplicație. Fuzzing 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.