Hvað er Fuzzing?

Hvað er ruglingslegt

Inngangur: Hvað er Fuzzing?

Árið 2014, kínverskir tölvuþrjótar brotist inn í heilbrigðiskerfi samfélagsins, bandarísk sjúkrahúskeðja í hagnaðarskyni, og stal 4.5 milljónum sjúklinga gögnum. Tölvuþrjótarnir nýttu sér villu sem heitir Heartbleed sem uppgötvaðist í OpenSSL dulmálasafninu nokkrum mánuðum fyrir innbrotið.

Heartbleed er dæmi um flokk árásarvigra sem gera árásarmönnum kleift að fá aðgang að skotmarki með því að senda inn gallaðar beiðnir sem eru nógu gildar til að standast bráðabirgðaeftirlit. Þó að sérfræðingar sem vinna að mismunandi hlutum apps geri sitt besta til að tryggja öryggi þess, er ómögulegt að hugsa um öll horntilvik sem gætu brotið forrit eða gert það viðkvæmt meðan á þróun stendur.

Þetta er þar sem 'fuzzing' kemur inn.

Hvað er Fuzzing Attack?

Fuzzing, fuzz testing eða fuzzing árás, er sjálfvirk hugbúnaðarprófunartækni sem notuð er til að fæða handahófskennd, óvænt eða ógild gögn (kallað fuzz) inn í forrit. Fylgst er með forritinu með tilliti til óvenjulegrar eða óvæntrar hegðunar eins og yfirflæðis biðminni, hruns, minnisleka, þráðar sem hangir og brot á les-/skrifaðgangi. Fuzzing tólið eða fuzzer er síðan notað til að afhjúpa orsök óvenjulegrar hegðunar.

Fuzzing byggir á þeirri forsendu að öll kerfi innihaldi villur sem bíða eftir að verða uppgötvaðar og hægt sé að gefa þeim nægan tíma og fjármagn til þess. Flest kerfi eru með mjög góða þáttun eða inntaksstaðfestingu sem kemur í veg fyrir glæpamenn frá því að nýta sér ímyndaðar villur í forriti. Hins vegar, eins og við nefndum hér að ofan, er erfitt að ná yfir öll hornmál meðan á þróun stendur.

Fuzzers eru notaðir í forritum sem taka inn skipulögð inntak eða hafa einhvers konar traustsmörk. Til dæmis myndi forrit sem tekur við PDF skrám hafa einhverja staðfestingu til að tryggja að skráin hafi .pdf ending og flokkun til að vinna úr PDF skránni.

Virkur fuzzer getur búið til inntak sem eru nógu gild til að komast framhjá þessum mörkum en samt nógu ógild til að valda óvæntri hegðun lengra niður í forritinu. Þetta er mikilvægt vegna þess að það eitt að geta komist framhjá staðfestingunum þýðir ekki mikið ef ekki verður frekari skaði af völdum.

Fuzzers uppgötva árásarvektora sem eru mjög líkir og þar á meðal eins og SQL innspýting, forskriftir á milli vefsvæða, yfirflæði biðminni og afneitun á þjónustu. Allar þessar árásir eru afleiðing þess að óvænt, ógild eða handahófskennd gögn eru færð inn í kerfi. 

 

Tegundir fuzzers

Hægt er að flokka fuzzers út frá sumum eiginleikum:

  1. Ráðist á skotmörk
  2. Fuzz sköpunaraðferð
  3. Meðvitund um uppbyggingu inntaks
  4. Meðvitund um skipulag dagskrár

1. Árásarmarkmið

Þessi flokkun er byggð á hvers konar vettvangi sem fuzzer er notað til að prófa. Fuzzers eru almennt notaðir með netsamskiptareglum og hugbúnaðarforritum. Hver pallur hefur ákveðna tegund inntaks sem hann tekur á móti og krefst þess vegna mismunandi tegunda fuzzers.

Til dæmis, þegar fjallað er um forrit, eiga sér stað allar óljósar tilraunir á hinum ýmsu innsláttarrásum forritsins, svo sem notendaviðmóti, skipanalínustöð, eyðublöð/textainnslátt og skráaupphleðslu. Þannig að öll inntak sem myndast af fuzzer verða að passa við þessar rásir.

Fuzzers sem fást við samskiptareglur verða að takast á við pakka. Fuzzers sem miða á þennan vettvang geta búið til falsaða pakka, eða jafnvel virkað sem umboðsmenn til að breyta hleruðum pökkum og spila þá aftur.

2. Fuzz Creation Method

Einnig er hægt að flokka fuzzers út frá því hvernig þeir búa til gögn til að fussa með. Sögulega hafa fuzzers búið til fuzz með því að búa til handahófskennd gögn frá grunni. Þannig gerði prófessor Barton Miller, frumkvöðull þessarar tækni, það í upphafi. Þessi tegund af fuzzer er kölluð a kynslóð byggt fuzzer.

Hins vegar, þó að maður gæti fræðilega búið til gögn sem munu fara framhjá traustsmörkum, myndi það taka töluverðan tíma og fjármagn til að gera það. Þess vegna er þessi aðferð venjulega notuð fyrir kerfi með einföldum inntaksbyggingum.

Lausn á þessu vandamáli er að stökkbreyta gögnum sem vitað er að eru gild til að búa til gögn sem eru nógu gild til að fara framhjá traustsmörkum, en samt nógu ógild til að valda vandamálum. Gott dæmi um þetta er a DNS fuzzer sem tekur lén og býr síðan til stóran lista yfir lén til að greina hugsanlega skaðleg lén sem miða á eiganda tilgreinds léns.

Þessi aðferð er snjallari en sú fyrri og þrengir verulega mögulegar umbreytingar. Fuzzers sem nota þessa aðferð eru kallaðir fuzzers sem byggjast á stökkbreytingum

Það er til þriðja nýlegri aðferðin sem notar erfðafræðilega reiknirit til að sameinast ákjósanlegum fuzz gögnum sem þarf til að uppræta veikleika. Það virkar með því að betrumbæta stöðugt óljós gögn sín, að teknu tilliti til frammistöðu hvers prófunargagna þegar þau eru færð inn í forrit. 

Gagnasamstæður sem standa sig verst eru fjarlægðar úr gagnasafninu en þær bestu eru stökkbreyttar og/eða sameinaðar. Nýja kynslóð gagna er síðan notuð til að fuzz-prófa aftur. Þessir fuzzers eru nefndir fuzzers sem byggjast á þróunarstökkbreytingum.

3. Meðvitund um uppbyggingu inntaks

Þessi flokkun byggist á því hvort fuzzer sé meðvitaður um og noti inntaksuppbyggingu forrits á virkan hátt við að búa til fuzz gögn. A heimskur fuzzari (fúsari sem er ekki meðvitaður um inntaksuppbyggingu forrits) býr til fuzz á að mestu leyti af handahófi. Þetta gæti falið í sér bæði kynslóðar- og stökkbreytingar-undirstaða fuzzers. 


Verði fuzzer með inntakslíkani forrits, getur fuzzer síðan reynt að búa til eða stökkbreyta gögnum þannig að þau passi við inntakslíkanið sem gefið er upp. Þessi nálgun dregur enn frekar úr magni auðlinda sem varið er til að búa til ógild gögn. Slíkur fuzzer er kallaður a snjall fúsari.

4. Meðvitund um skipulag dagskrár

Einnig er hægt að flokka fuzzers út frá því hvort þeir séu meðvitaðir um innri virkni forritsins sem þeir eru að fuzza, og nota þá vitund til að aðstoða við myndun fuzz gagna. Þegar fuzzers eru notaðir til að prófa forrit án þess að skilja innri uppbyggingu þess, er það kallað svart-kassaprófun. 

Fuzz gögn sem myndast við svarta kassaprófun eru venjulega tilviljunarkennd nema fuzzer sé þróunarstökkbreyting byggður fuzzer, þar sem það 'lærir' með því að fylgjast með áhrifum fuzzing þess og nota það upplýsingar til að betrumbæta fuzz gagnasettið.

White-box próf notar aftur á móti líkan af innri uppbyggingu forritsins til að búa til fuzz gögn. Þessi nálgun gerir fuzzer kleift að komast á mikilvæga staði í forriti og prófa það. 

Vinsæl Fuzzing Tools

Það eru margir óljósir verkfæri þarna úti notað af pennaprófara. Sumir af þeim vinsælustu eru:

Takmarkanir Fuzzing

Þó að Fuzzing sé mjög gagnleg pennaprófunartækni er hún ekki gallalaus. Sum þessara eru:

  • Það tekur frekar langan tíma að keyra.
  • Hrun og önnur óvænt hegðun sem finnast við svarta kassaprófun á forriti getur verið erfitt, ef ekki ómögulegt að greina eða kemba.
  • Það getur verið tímafrekt að búa til stökkbreytingarsniðmát fyrir snjalla stökkbreytinga-undirstaða fuzzers. Stundum gæti það ekki einu sinni verið mögulegt vegna þess að inntakslíkanið er einkaleyfi eða óþekkt.

 

Engu að síður er það ansi gagnlegt og nauðsynlegt tól fyrir alla sem vilja uppgötva villur á undan vondu krökkunum.

Niðurstaða

Fuzzing er öflug pennaprófunartækni sem hægt er að nota til að afhjúpa veikleika í hugbúnaði. Það eru margar mismunandi gerðir af fuzzers og nýjar fuzzers eru alltaf í þróun. Þó að fuzzing sé ótrúlega gagnlegt tæki, þá hefur það sínar takmarkanir. Til dæmis geta fuzzers aðeins fundið svo marga veikleika og þeir geta verið ansi auðlindafrekir. Hins vegar, ef þú vilt prófa þessa mögnuðu tækni fyrir þig, höfum við a ókeypis DNS Fuzzer API sem þú getur notað á pallinum okkar. 

Svo hvað ert þú að bíða eftir? 

Byrjaðu að tuða í dag!

Google og huliðsgoðsögnin

Google og huliðsgoðsögnin

Google og huliðsmýtan Þann 1. apríl 2024 samþykkti Google að leysa mál með því að eyða milljörðum gagnaskráa sem safnað var úr huliðsstillingu.

Lesa meira »