Çfarë është Fuzzing?

Çfarë është e turbullt

Hyrje: Çfarë është Fuzzing?

Në vitin 2014, hakerat kinezë hakuar në Sistemet Shëndetësore të Komunitetit, një zinxhir spitalesh amerikane fitimprurëse dhe vodhi të dhënat e 4.5 milionë pacientëve. Hakerët shfrytëzuan një gabim të quajtur Heartbleed që u zbulua në bibliotekën e kriptografisë OpenSSL disa muaj para hakimit.

Heartbleed është një shembull i një klase të vektorëve të sulmit që lejojnë sulmuesit të aksesojnë një objektiv duke dërguar kërkesa të keqformuara mjaftueshëm të vlefshme për të kaluar kontrollet paraprake. Ndërsa profesionistët që punojnë në pjesë të ndryshme të një aplikacioni bëjnë çmos për të siguruar sigurinë e tij, është e pamundur të mendosh për të gjitha rastet e qosheve që mund të prishin një aplikacion ose ta bëjnë atë të pambrojtur gjatë zhvillimit.

Këtu hyn 'turbullimi'.

Çfarë është një sulm i paqartë?

Fuzzing, testimi fuzz, ose një sulm fuzzing, është një teknikë e automatizuar e testimit të softuerit që përdoret për të futur të dhëna të rastësishme, të papritura ose të pavlefshme (të quajtura fuzz) në një program. Programi monitorohet për sjellje të pazakonta ose të papritura të tilla si tejmbushjet e tamponit, përplasjet, rrjedhjet e kujtesës, varjet e temave dhe shkeljet e aksesit për lexim/shkrim. Mjeti fuzzing ose fuzzer përdoret më pas për të zbuluar shkakun e sjelljes së pazakontë.

Fuzzing bazohet në supozimin se të gjitha sistemet përmbajnë gabime që presin të zbulohen dhe mund t'u jepet kohë dhe burime të mjaftueshme për ta bërë këtë. Shumica e sistemeve kanë analizues shumë të mirë ose parandalimin e vlefshmërisë së hyrjes kriminelët kibernetikë nga shfrytëzimi i ndonjë gabimi hipotetik në një program. Megjithatë, siç e përmendëm më lart, mbulimi i të gjitha rasteve të qosheve gjatë zhvillimit është i vështirë.

Fuzzers përdoren në programe që marrin hyrje të strukturuar ose kanë një lloj kufiri besimi. Për shembull, një program që pranon skedarë PDF do të kishte njëfarë vlefshmërie për të siguruar që skedari të ketë një shtrirje .pdf dhe analizues për të përpunuar skedarin PDF.

Një fuzzer efektiv mund të gjenerojë inpute mjaftueshëm të vlefshme për të kapërcyer këta kufij, por të pavlefshëm aq sa të shkaktojnë sjellje të papritura më larg programit. Kjo është e rëndësishme sepse thjesht të jesh në gjendje të kapërcesh vërtetimet nuk do të thotë shumë nëse nuk shkaktohet ndonjë dëm i mëtejshëm.

Fuzzers zbulojnë vektorë sulmi shumë të ngjashëm me dhe duke përfshirë injektimin SQL, skriptimin në faqe, tejmbushjen e buferit dhe sulmet e mohimit të shërbimit. Të gjitha këto sulme janë rezultat i futjes së të dhënave të papritura, të pavlefshme ose të rastësishme në një sistem. 

 

Llojet e Fuzzers

Fuzzers mund të klasifikohen bazuar në disa karakteristika:

  1. Objektivat e sulmit
  2. Metoda e krijimit të fuzzit
  3. Ndërgjegjësimi për strukturën e hyrjes
  4. Ndërgjegjësimi për strukturën e programit

1. Objektivat e sulmit

Ky klasifikim bazohet në llojin e platformës që fuzzer po përdoret për të testuar. Fuzzers zakonisht përdoren me protokollet e rrjetit dhe aplikacionet softuerike. Çdo platformë ka një lloj të veçantë të hyrjes që merr, dhe kështu kërkon lloje të ndryshme të fuzzerëve.

Për shembull, kur kemi të bëjmë me aplikacione, të gjitha përpjekjet për turbullim ndodhin në kanalet e ndryshme hyrëse të aplikacionit, si ndërfaqja e përdoruesit, terminali i linjës së komandës, futjet e formularëve/tekstit dhe ngarkimet e skedarëve. Pra, të gjitha hyrjet e krijuara nga fuzzeri duhet të përputhen me këto kanale.

Fuzzers që kanë të bëjnë me protokollet e komunikimit duhet të merren me paketat. Fuzzers që synojnë këtë platformë mund të gjenerojnë pako të falsifikuara, apo edhe të veprojnë si përfaqësues për të modifikuar paketat e përgjuara dhe për t'i riprodhuar ato.

2. Metoda e krijimit të fuzzit

Fuzzers gjithashtu mund të klasifikohen në bazë të mënyrës se si ata krijojnë të dhëna për t'u përzier me të. Historikisht, fuzzerët krijuan fuzz duke gjeneruar të dhëna të rastësishme nga e para. Kështu e bëri fillimisht profesor Barton Miller, iniciatori i kësaj teknike. Ky lloj fuzzeri quhet a fuzzer me bazë gjenerimi.

Megjithatë, ndërsa mund të gjenerohen teorikisht të dhëna që do të anashkalojnë një kufi besimi, do të duhej kohë dhe burime të konsiderueshme për ta bërë këtë. Prandaj kjo metodë përdoret zakonisht për sistemet me struktura të thjeshta hyrëse.

Një zgjidhje për këtë problem është mutacioni i të dhënave të njohura si të vlefshme për të gjeneruar të dhëna mjaft të vlefshme për të kaluar një kufi besimi, por mjaft të pavlefshme për të shkaktuar probleme. Një shembull i mirë i kësaj është a DNS fuzzer i cili merr një emër domeni dhe më pas gjeneron një listë të madhe të emrave të domenit për të zbuluar domene potencialisht me qëllim të keq që synojnë pronarin e domenit të specifikuar.

Kjo qasje është më e zgjuar se ajo e mëparshme dhe ngushton ndjeshëm permutacionet e mundshme. Fuzzers që përdorin këtë metodë quhen fuzzerë të bazuar në mutacione

Ekziston një metodë e tretë më e fundit që përdor algoritme gjenetike për të konverguar në të dhënat fuzz optimale të nevojshme për të çrrënjosur dobësitë. Ai funksionon duke përpunuar vazhdimisht të dhënat e tij fuzz, duke marrë parasysh performancën e secilës të dhënë të testimit kur futet në një program. 

Grupet e të dhënave me performancën më të keqe hiqen nga grupi i të dhënave, ndërsa më të mirat mutohen dhe/ose kombinohen. Gjenerata e re e të dhënave më pas përdoret për të testuar përsëri fuzz. Këta fuzzerë quhen si fuzzerë të bazuar në mutacione evolucionare.

3. Ndërgjegjësimi i strukturës së hyrjes

Ky klasifikim bazohet në faktin nëse një fuzzer është i vetëdijshëm dhe nëse përdor në mënyrë aktive strukturën hyrëse të një programi në gjenerimin e të dhënave fuzz. A fuzzer memec (një fuzzer që nuk është në dijeni të strukturës hyrëse të një programi) gjeneron fuzz në një mënyrë kryesisht të rastësishme. Kjo mund të përfshijë si gjenerimin ashtu edhe fuzzerët e bazuar në mutacione. 


Nëse një fuzzer pajiset me modelin hyrës të një programi, fuzzeri më pas mund të përpiqet të gjenerojë ose të ndryshojë të dhëna në mënyrë që të përputhet me modelin hyrës të dhënë. Kjo qasje zvogëlon më tej sasinë e burimeve të shpenzuara për gjenerimin e të dhënave të pavlefshme. Një fuzzer i tillë quhet a fuzzer i zgjuar.

4. Ndërgjegjësimi i Strukturës së Programit

Fuzzers gjithashtu mund të klasifikohen bazuar në faktin nëse ata janë të vetëdijshëm për funksionimin e brendshëm të programit që po fuzzojnë dhe e përdorin atë vetëdije për të ndihmuar gjenerimin e të dhënave fuzz. Kur fuzzerët përdoren për të testuar një program pa kuptuar strukturën e tij të brendshme, quhet testimi i kutisë së zezë. 

Të dhënat Fuzz të gjeneruara gjatë testimit të kutisë së zezë janë zakonisht të rastësishme, përveç nëse fuzzeri është një fuzzer evolucionar i bazuar në mutacion, ku ai 'mëson' duke monitoruar efektin e fuzzimit të tij dhe duke përdorur atë. informacion për të rafinuar grupin e tij të të dhënave fuzz.

Testimi i White-box nga ana tjetër përdor një model të strukturës së brendshme të programit për të gjeneruar të dhëna fuzz. Kjo qasje lejon një fuzzer të shkojë në vende kritike në një program dhe ta testojë atë. 

Mjetet popullore të turbullimit

Ka shumë turbullira mjete përdoret nga testuesit e stilolapsit. Disa nga më të njohurit janë:

Kufizimet e Fuzzing

Ndërsa Fuzzing është një teknikë vërtet e dobishme e testimit të stilolapsit, nuk është pa të meta. Disa nga këto janë:

  • Duhet mjaft kohë për të vrapuar.
  • Ndërprerjet dhe sjelljet e tjera të papritura të gjetura gjatë testimit të kutisë së zezë të një programi mund të jenë të vështira, nëse jo të pamundura për t'u analizuar ose korrigjuar.
  • Krijimi i shablloneve të mutacioneve për fuzzerët inteligjentë të bazuar në mutacione mund të marrë kohë. Ndonjëherë, madje mund të mos jetë e mundur për shkak se modeli i hyrjes është i pronarit ose i panjohur.

 

Sidoqoftë, është një mjet mjaft i dobishëm dhe i domosdoshëm për këdo që dëshiron të zbulojë defekte përpara njerëzve të këqij.

Përfundim

Fuzzing është një teknikë e fuqishme e testimit të stilolapsit që mund të përdoret për të zbuluar dobësitë në softuer. Ka shumë lloje të ndryshme të fuzzerëve, dhe fuzzerët e rinj po zhvillohen gjatë gjithë kohës. Ndërsa fuzzing është një mjet tepër i dobishëm, ai ka kufizimet e veta. Për shembull, fuzzerët mund të gjejnë vetëm kaq shumë dobësi dhe ato mund të jenë mjaft intensive me burime. Megjithatë, nëse doni të provoni këtë teknikë të mahnitshme për veten tuaj, ne kemi një API falas DNS Fuzzer që mund ta përdorni në platformën tonë. 

Pra, çfarë po prisni? 

Filloni të hutoni sot!