Zer da Fuzzing?

Zer da fuzzing

Sarrera: Zer da Fuzzing?

2014an, hacker txinatarrak Komunitateko Osasun Sistemetan pirateatua, irabazi asmorik gabeko AEBetako ospitale katea, eta 4.5 milioi pazienteen datuak lapurtu zituen. Hacker-ek hackeatu baino hilabete batzuk lehenago OpenSSL kriptografia liburutegian aurkitu zuten Heartbleed izeneko akats bat ustiatu zuten.

Heartbleed eraso-bektore-klase baten adibidea da, erasotzaileei helburu batera atzitzea ahalbidetzen dieten eskaera okerrak bidaliz, aurretiazko egiaztapenak gainditzeko nahikoa balio dutenak. Aplikazio baten atal ezberdinetan lan egiten duten profesionalek bere segurtasuna bermatzeko ahal duten guztia egiten duten arren, ezinezkoa da aplikazio bat apurtu edo zaurgarri bihur dezaketen izkina guztietan pentsatzea garapenean zehar.

Hor sartzen da 'fuzzing'.

Zer da Fuzzing Eraso bat?

Fuzzing, fuzz testing edo fuzzing erasoa, programa batean ausazko, ustekabeko edo baliogabeko datuak (fuzz izenekoak) sartzeko erabiltzen den software proba automatizatuko teknika bat da. Programa ezohiko edo ustekabeko jokabideen jarraipena egiten da, hala nola buffer gainezka, hutsegite, memoria-ihesak, haria zintzilikatu eta irakurketa/idazketa sarbide-urraketak. Fuzzing tresna edo fuzzer erabiltzen da ezohiko portaeraren zergatia ezagutzeko.

Fuzzing sistema guztiek aurkitzearen zain dauden akatsak dituztela eta horretarako denbora eta baliabide nahikoa eman diezaiekeela suposatzen du. Sistema gehienek analizatzaile oso onak dituzte edo sarreraren baliozkotzea eragozten dute cybercriminals programa bateko edozein akats hipotetiko ustiatzetik. Hala ere, gorago aipatu dugun bezala, garapenean zehar izkin kasu guztiak estaltzea zaila da.

Fuzzers-ak sarrera egituratua hartzen duten edo nolabaiteko konfiantza-muga duten programetan erabiltzen dira. Adibidez, PDF fitxategiak onartzen dituen programa batek baliozkotze batzuk izango ditu fitxategiak .pdf luzapena eta PDF fitxategia prozesatzeko analizatzailea duela ziurtatzeko.

Fuzzer eraginkor batek muga hauek gainditzeko nahikoa baliozko sarrerak sor ditzake, baina programan beherago ustekabeko portaera eragiteko nahikoa baliogabea. Hau garrantzitsua da, balioztatzeak gainditu ahal izateak ez duelako asko esan nahi kalte gehiago sortzen ez bada.

Fuzzers-ek eraso-bektoreak aurkitzen dituzte SQL injekzioa, guneen arteko script-a, buffer gainezkatzea eta zerbitzuaren ukatze-erasoen antzekoak eta barne. Eraso hauek guztiak ustekabeko, baliogabeko edo ausazko datuak sistema batean sartzearen ondorio dira. 

 

Fuzzers motak

Fuzzers ezaugarri batzuen arabera sailka daitezke:

  1. Eraso helburuak
  2. Fuzz sortzeko metodoa
  3. Sarreraren egituraren kontzientzia
  4. Programaren egitura ezagutzea

1. Erasoa Helburuak

Sailkapen hau fuzzer probatzeko erabiltzen ari den plataforma motan oinarritzen da. Fuzzers sare-protokoloekin eta software-aplikazioekin erabili ohi dira. Plataforma bakoitzak jasotzen dituen sarrera mota jakin bat du, eta, beraz, fuzzer mota desberdinak behar ditu.

Esate baterako, aplikazioekin aritzean, saiakera nahasi guztiak aplikazioaren sarrera-kanal ezberdinetan gertatzen dira, hala nola erabiltzailearen interfazean, komando-lerroko terminalean, inprimakiak/testu sarrerak eta fitxategien kargak. Beraz, fuzzerrak sortutako sarrera guztiek kanal hauekin bat egin behar dute.

Komunikazio-protokoloak lantzen dituzten fuzzerrek paketeei aurre egin behar diete. Plataforma honetara bideratzen diren fuzzerrek faltsututako paketeak sor ditzakete, edo proxy gisa ere jardun dezakete atzemandako paketeak aldatzeko eta haiek errepikatzeko.

2. Fuzz Sortzeko Metodoa

Fuzzers-ak lausotzeko datuak nola sortzen dituzten kontuan hartuta ere sailka daitezke. Historikoki, fuzz-ek hutsetik ausazko datuak sortuz sortu zuten. Horrela egin zuen hasieran Barton Miller irakasleak, teknika honen hastapena. Fuzzer mota honi a deitzen zaio belaunaldian oinarritutako fuzzer.

Hala ere, teorikoki konfiantzazko muga gaindituko duten datuak sor litezkeen arren, denbora eta baliabide dezente beharko lirateke horretarako. Beraz, metodo hau normalean sarrera-egitura sinpleak dituzten sistemetarako erabiltzen da.

Arazo honen konponbidea baliozkoak diren datuak aldatzea da, fidagarritasun-muga gainditzeko nahikoa baliozko datuak sortzeko, baina arazoak sortzeko balio ez dutenak. Horren adibide ona da a DNS fuzzer domeinu-izen bat hartzen duena eta, ondoren, domeinu-izen zerrenda handi bat sortzen duena, zehaztutako domeinuaren jabeari zuzendutako domeinu gaiztoak detektatzeko.

Ikuspegi hau aurrekoa baino adimentsuagoa da eta permutazio posibleak nabarmen murrizten ditu. Metodo hau erabiltzen duten fuzzerrak deitzen dira mutazioetan oinarritutako fuzzers

Badago hirugarren metodo berriagoa algoritmo genetikoak erabiltzen dituena, ahultasunak errotik kentzeko behar diren fuzz datu optimoetara biltzeko. Bere fuzz datuak etengabe hobetuz funtzionatzen du, programa batean sartzen direnean proba-datu bakoitzaren errendimendua kontuan hartuta. 

Errendimendu txarreneko datu multzoak datu multzotik kentzen dira, eta onenak, berriz, mutatzen edo/eta konbinatzen dira. Datuen belaunaldi berria berriro fuzz probatzeko erabiltzen da. Fuzzers hauei deitzen zaie mutazio ebolutiboetan oinarritutako fuzzers.

3. Sarrera-egituraren kontzientzia

Sailkapen hau fuzzer batek programa baten sarrera-egituraz jabetzen den eta aktiboki erabiltzen duen ala ez oinarritzen da fuzz datuak sortzeko. A fuzzer mutu (programa baten sarrera-egituraz ezagutzen ez duen fuzzer bat) fuzz-a gehienbat ausazko moduan sortzen du. Honek belaunaldiko zein mutazioetan oinarritutako fuzzers izan ditzake. 


Fuzzer bat programa baten sarrera-ereduarekin hornitu behar bada, fuzzer-a orduan saiatu daiteke datuak sortzen edo aldatzen, emandako sarrera-ereduarekin bat etor daitezen. Ikuspegi honek gehiago murrizten du baliogabeko datuak sortzen gastatzen diren baliabideen kopurua. Horrelako fuzzer bati a deitzen zaio fuzzer adimenduna.

4. Programaren Egituraren Sentsibilizazioa

Fuzzers-ak nahasten ari diren programaren barne funtzionamenduaz jabetzen diren ala ez kontuan hartuta ere sailka daitezke, eta kontzientzia hori erabiltzen dute fuzz datuak sortzen laguntzeko. Programa bat probatzeko fuzzerrak barne egitura ulertu gabe erabiltzen direnean, kutxa beltzaren proba deitzen zaio. 

Kutxa beltzeko probetan sortutako fuzz datuak normalean ausazkoak dira, fuzzer-a mutazio ebolutiboan oinarritutako fuzzer bat ez bada, non "ikasten" duen bere fuzz-aren eragina kontrolatuz eta hori erabiliz. informazio bere fuzz datu-multzoa fintzeko.

White-box probak, berriz, programaren barne egituraren eredu bat erabiltzen du fuzz datuak sortzeko. Planteamendu honek fuzzer bati programa bateko kokapen kritikoetara iristen eta probatzen uzten dio. 

Fuzzing tresna ezagunak

Fuzz asko daude tresnak luma probatzaileek erabiltzen dute. Ezagunenetako batzuk hauek dira:

Fuzzing-aren mugak

Fuzzing luma probatzeko teknika benetan erabilgarria den arren, ez dago akatsik gabe. Hauetako batzuk hauek dira:

  • Denbora nahiko luzea behar da korrika egiteko.
  • Programa baten kutxa beltzeko probak zehar aurkitutako hutsegite eta beste ustekabeko jokabideak zailak izan daitezke, aztertzea edo araztea ezinezkoa ez bada.
  • Mutazioetan oinarritutako fuzzer adimendunetarako mutazio txantiloiak sortzea denbora asko behar da. Batzuetan, baliteke sarrera-eredua jabeduna edo ezezaguna izateagatik ere ez izatea posible.

 

Hala ere, nahiko tresna erabilgarria eta beharrezkoa da gaizkileen aurretik akatsak aurkitu nahi dituen edonorentzat.

Ondorioa

Fuzzing luma probatzeko teknika indartsua da, softwarearen ahuleziak deskubritzeko erabil daitekeena. Fuzzers mota asko daude, eta fuzzer berriak garatzen ari dira denbora guztian. Fuzzing tresna izugarri erabilgarria den arren, baditu bere mugak. Esate baterako, fuzzerrek ahultasun asko aurki ditzakete eta nahiko baliabide ugari izan ditzakete. Hala ere, teknika harrigarri hau zuk zeuk probatu nahi baduzu, badugu a Doako DNS Fuzzer APIa gure plataforman erabil dezakezun. 

Beraz, zer zain zaude? 

Hasi nahasten gaur!