Vulnerabilitățile software reprezintă o problemă semnificativă în securitatea cibernetică. Acestea permit ca produsele software să fie atacate și, atunci când acele produse sunt conectate la rețele altfel sigure, pot oferi un punct de intrare pentru hackeri.
Toate produsele software profesionale sunt testate temeinic înainte de lansare. Din păcate, vulnerabilitățile sunt încă o întâmplare comună. O modalitate de a găsi vulnerabilități suplimentare este să utilizați o tehnică de testare a software-ului cunoscută sub numele de fuzzing.
Deci, ce este fuzzing și cum funcționează?
Ce este Fuzzing?
Fuzzing este o tehnică automată de testare a software-ului care încearcă să găsească vulnerabilități folosind intrări aleatorii.
Software-ul se comportă adesea imprevizibil atunci când utilizatorul introduce o altă intrare decât cea cerută. Fuzzing este practica de a introduce cantități mari de intrări neașteptate și de a înregistra ceea ce se întâmplă. Ideea este că utilizatorul poate monitoriza software-ul și poate determina dacă există sau nu vulnerabilități.
Fuzzing este folosit pentru a testa produse software și de către profesioniștii în securitate pentru a determina dacă o rețea este sigură. Este folosit și de hackeri care practică fuzzing pentru a găsi vulnerabilități pe care ei înșiși le pot folosi.
Vulnerabilitățile descoperite prin fuzzing variază foarte mult. O intrare neașteptată poate face ca software-ul să se blocheze pur și simplu. Dar poate returna și informații private sau permite utilizatorului să acceseze părți ale software-ului care altfel ar fi interzise.
Care sunt avantajele Fuzzing-ului?
Fuzzing este doar una dintre multele moduri prin care produsele software pot fi testate pentru vulnerabilități. Este popular pentru că:
- Fuzzing-ul este complet automatizat. Odată ce un program fuzzing este configurat, acesta poate continua să caute vulnerabilități fără intervenția umană.
- Fuzzing poate găsi vulnerabilități pe care alte tehnici de testare a software-ului nu le găsesc. Din acest motiv, este adesea folosit pe lângă tehnicile manuale.
- Fuzzing-ul este adesea folosit de hackeri găsiți vulnerabilități zero-day. Folosirea acelorași tehnici ca și hackerii le permite dezvoltatorilor să găsească vulnerabilități de tip zero-day înaintea lor.
Cum funcționează Fuzzing?
Un instrument folosit pentru fuzzing are de obicei trei componente. Ei sunt adesea menționați ca poet, curier și oracol.
Poetul
Poetul începe procesul și este responsabil pentru generarea unui caz de testare. Un caz de testare este o listă lungă de intrări potențiale.
Curierul
Curierul introduce toate intrările aleatorii în software-ul vizat. Fuzzers-urile sunt proiectate pentru a face acest lucru automat, permițând testarea în vrac a unor cantități mari de intrări.
Oracolul
Oracolul verifică dacă vreuna dintre intrări determină software-ul să facă altceva decât pentru care a fost proiectat. Dacă fuzzing-ul este efectuat în scopuri legitime, comportamentul poate fi apoi replicat și remediat. Sau dacă fuzzing-ul este efectuat de un hacker, iar comportamentul neașteptat este util, acesta poate fi folosit în scopuri rău intenționate.
Cum folosesc atacatorii Fuzzing?
Fuzzing-ul este o tehnică populară printre hackeri, deoarece le permite să găsească vulnerabilități în software fără acces la codul sursă. Deoarece fuzzing-ul este automatizat, este și ușor de efectuat. Dacă un hacker descoperă o vulnerabilitate, este posibil să poată efectua următoarele atacuri.
Atacurile DDoS
Dacă fuzzing descoperă că anumite intrări necesită mult timp pentru a fi procesate, aceste informații pot fi folosite pentru a lansa un atac DDoS. Un atac DDoS presupune trimiterea atât de multe cereri către un sistem încât acesta nu mai funcționează. Fuzzing permite ca cererile să fie adaptate astfel încât să necesite cele mai multe resurse de sistem pentru a răspunde.
Injecție SQL
Un atac cu injecție SQL este atunci când instrucțiunile SQL rău intenționate sunt trimise unei aplicații. Dacă aceste declarații nu sunt igienizate corespunzător, ele pot permite unui atacator să interacționeze cu baza de date. Acest lucru le poate permite să fure date sau să le modifice. Fuzzing este un instrument eficient pentru a încerca cantități mari de instrucțiuni SQL și pentru a determina dacă unele produc un răspuns favorabil.
Buffer Overflow
Un atac de depășire a tamponului este atunci când se adaugă mai multe date în tamponul unui program decât poate gestiona acesta. În acest scenariu, este posibil ca un hacker să determine programul respectiv să execute cod rău intenționat. Acesta poate fi folosit pentru a fura date sau pentru a obține acces neautorizat. Fuzzing-ul este folosit pentru a găsi intrări care pot provoca o depășire a tamponului.
Tipuri de Fuzzing
Instrumentele de fuzzing pot fi clasificate atât în funcție de modul în care sunt generate cazurile de testare, cât și de cât de multe se cunosc despre sistem.
Prost vs. Inteligent
Dumb fuzzing adaugă pur și simplu cantități mari de intrări aleatorii. Nu alege intrările care sunt cel mai probabil să fie acceptate de aplicație. Acest lucru facilitează implementarea fără a ști nimic despre software; cu toate acestea, este, de asemenea, extrem de ineficient, deoarece majoritatea intrărilor vor fi respinse.
Fuzzing inteligent generează intrări pe care aplicația este probabil să le accepte. Este necesar ca utilizatorul să înțeleagă ce format de intrare este acceptabil și apoi să genereze cantități mari de intrări în acel format. Fuzzing inteligent necesită mai mult efort și cunoștințe despre produs pentru implementare, dar este semnificativ mai eficient.
Mutațional vs. generațional
Fuzzerii mutaționali preiau o intrare care a fost acceptată anterior și îi fac modificări minore. Acest lucru permite să fie generate intrări care sunt susceptibile de a fi acceptate fără cunoașterea formatului acceptat.
Fuzzerii generaționali creează intrări complet noi bazate pe ceea ce se știe despre formatul acceptat.
Cutia albă vs. Cutie neagră
Black box fuzzing este folosit fără nicio informație despre aplicația testată. Este mai puțin eficient decât fuzzing cu casetă albă, dar poate fi aplicat oricărei aplicații fără acces la codul sursă. Acest lucru îl face popular printre hackeri.
White box fuzzing folosește informații despre aplicația testată pentru a crea intrări care sunt cel mai probabil să fie acceptate și să producă vulnerabilități. Este folosit în principal de dezvoltatorii de software, deoarece este mai eficient decât fuzzing-ul cutiei negre.
Fuzzing este o metodă puternică de testare a software-ului care este folosită de dezvoltatorii de software, profesioniștii în securitate și hackeri. Necesită efort minim de implementare și este capabil să găsească vulnerabilități pe care alte tehnici de testare software nu le fac.
Este deosebit de important din punct de vedere al securității, deoarece este adesea folosit pentru a descoperi vulnerabilități zero-day. Aceste vulnerabilități pot fi fie descoperite și remediate de profesioniștii în securitate, fie descoperite și exploatate de hackeri.