Fuzzing ni nini?

Nini ni fuzzing

Utangulizi: Fuzzing ni nini?

Mnamo 2014, wadukuzi wa Kichina imedukuliwa katika Mifumo ya Afya ya Jamii, msururu wa hospitali za Marekani kwa faida, na kuiba data ya wagonjwa milioni 4.5. Wadukuzi walitumia hitilafu inayoitwa Heartbleed ambayo iligunduliwa katika maktaba ya siri ya OpenSSL miezi kadhaa kabla ya udukuzi huo.

Heartbleed ni mfano wa aina ya visambazaji mashambulizi ambayo huruhusu washambuliaji kufikia shabaha kwa kutuma maombi yenye hitilafu yanayotosha kupitisha ukaguzi wa awali. Ingawa wataalamu wanaofanyia kazi sehemu tofauti za programu hujitahidi wawezavyo ili kuhakikisha usalama wake, haiwezekani kufikiria matukio yote ambayo yanaweza kuharibu programu au kuifanya iwe hatarini wakati wa usanidi.

Hapa ndipo 'fuzzing' inapoingia.

Shambulio la Fuzzing ni nini?

Kuchanganya, majaribio ya fuzz, au shambulio la kutatanisha, ni mbinu ya kiotomatiki ya majaribio ya programu inayotumiwa kulisha data nasibu, isiyotarajiwa au batili (inayoitwa fuzz) kwenye programu. Mpango huu unafuatiliwa kwa tabia zisizo za kawaida au zisizotarajiwa kama vile kufurika kwa bafa, kuacha kufanya kazi, kuvuja kwa kumbukumbu, kuning'inia kwa nyuzi, na ukiukaji wa ufikiaji wa kusoma/kuandika. Chombo cha fuzzing au fuzzer basi hutumiwa kufichua sababu ya tabia isiyo ya kawaida.

Kuchanganya kunatokana na dhana kwamba mifumo yote ina hitilafu zinazosubiri kugunduliwa, na inaweza kupewa muda na rasilimali za kutosha kufanya hivyo. Mifumo mingi ina vichanganuzi vyema sana au kuzuia uthibitishaji wa pembejeo wahalifu wa mtandao kutokana na kutumia hitilafu zozote za kidhahania katika programu. Walakini, kama tulivyosema hapo juu, kufunika kesi zote za kona wakati wa ukuzaji ni ngumu.

Fuzzers hutumiwa kwenye programu zinazochukua pembejeo zilizopangwa au kuwa na aina fulani ya mipaka ya uaminifu. Kwa mfano, programu inayokubali faili za PDF itakuwa na uthibitishaji fulani ili kuhakikisha kuwa faili ina kiendelezi cha .pdf na kichanganuzi ili kuchakata faili ya PDF.

Fuza inayofaa inaweza kutoa pembejeo halali vya kutosha kupita mipaka hii lakini isiyo sahihi vya kutosha kusababisha tabia isiyotarajiwa chini ya programu. Hii ni muhimu kwa sababu kuweza kupita tu uthibitisho haimaanishi mengi ikiwa hakuna madhara zaidi yanayosababishwa.

Fuzzers hugundua vekta za uvamizi zinazofanana sana na ikiwa ni pamoja na kupenda kwa sindano ya SQL, uandishi wa tovuti tofauti, kufurika kwa bafa, na mashambulizi ya kunyimwa huduma. Mashambulizi haya yote ni matokeo ya kulisha data isiyotarajiwa, batili au nasibu kwenye mfumo. 

 

Aina za Fuzzers

Fuzzers inaweza kuainishwa kulingana na sifa fulani:

  1. Malengo ya mashambulizi
  2. Mbinu ya kuunda fuzz
  3. Uelewa wa muundo wa pembejeo
  4. Uelewa wa muundo wa programu

1. Malengo ya Mashambulizi

Uainishaji huu unatokana na aina ya jukwaa ambalo fuzzer inatumiwa kujaribu. Fuzzers hutumiwa kwa kawaida na itifaki za mtandao na programu za programu. Kila jukwaa lina aina fulani ya pembejeo inayopokea, na hivyo inahitaji aina tofauti za fuzzers.

Kwa mfano, wakati wa kushughulika na programu, majaribio yote ya kutatanisha hutokea kwenye chaneli mbalimbali za ingizo za programu, kama vile kiolesura cha mtumiaji, terminal ya mstari wa amri, fomu/ingizo za maandishi, na upakiaji wa faili. Kwa hivyo pembejeo zote zinazozalishwa na fuzzer lazima zilingane na njia hizi.

Fuzzers zinazohusika na itifaki za mawasiliano zinapaswa kushughulika na pakiti. Fuzzers zinazolenga jukwaa hili zinaweza kuzalisha pakiti ghushi, au hata kufanya kama washirika ili kurekebisha pakiti zilizoingiliwa na kuzicheza tena.

2. Mbinu ya Uumbaji wa Fuzz

Fuzzers pia zinaweza kuainishwa kulingana na jinsi wanavyounda data ya kufurahisha. Kihistoria, fuzzers waliunda fuzz kwa kutoa data nasibu kutoka mwanzo. Hivi ndivyo Profesa Barton Miller, mwanzilishi wa mbinu hii, alivyofanya hapo awali. Aina hii ya fuzzer inaitwa a fuzzer ya kizazi.

Walakini, ingawa mtu anaweza kutoa data ya kinadharia ambayo itapita mpaka wa uaminifu, itachukua muda na rasilimali nyingi kufanya hivyo. Kwa hivyo, njia hii kawaida hutumiwa kwa mifumo iliyo na muundo rahisi wa kuingiza.

Suluhisho la tatizo hili ni kubadilisha data inayojulikana kuwa halali kuzalisha data halali ya kutosha kupita mpaka wa uaminifu, lakini ni batili kutosha kusababisha matatizo. Mfano mzuri wa hii ni a DNS fuza ambayo huchukua jina la kikoa na kisha kutoa orodha kubwa ya majina ya vikoa ili kugundua vikoa vinavyoweza kuwa na nia mbaya vinavyolenga mmiliki wa kikoa kilichobainishwa.

Njia hii ni nadhifu kuliko ile ya awali na kwa kiasi kikubwa hupunguza vibali vinavyowezekana. Fuzzers zinazotumia njia hii huitwa fuzzers kulingana na mabadiliko

Kuna njia ya tatu ya hivi majuzi zaidi inayotumia kanuni za kijeni kuungana kwenye data mojawapo ya fuzz inayohitajika ili kuondoa udhaifu. Inafanya kazi kwa kuboresha data yake ya fuzz kila wakati, kwa kuzingatia utendakazi wa kila data ya jaribio inapoingizwa kwenye programu. 

Seti za data zinazofanya vibaya zaidi huondolewa kwenye hifadhi ya data, huku bora zaidi hubadilishwa na/au kuunganishwa. Kizazi kipya cha data kisha hutumika kufanya jaribio la fuzz tena. Fuzzers hizi zinajulikana kama fuzzers za msingi wa mabadiliko.

3. Ufahamu wa Muundo wa Pembejeo

Uainishaji huu unatokana na iwapo fuzzer inafahamu na inatumia kikamilifu muundo wa ingizo wa programu katika kuzalisha data ya fuzz. A fuza bubu (fuzi ambayo haijui muundo wa ingizo wa programu) hutoa fuzz kwa mtindo wa nasibu. Hii inaweza kujumuisha fuza zinazotokana na kizazi na mabadiliko. 


Ikiwa fuza itatolewa na muundo wa ingizo wa programu, fuza inaweza kujaribu kutoa au kubadilisha data ili ilingane na muundo uliotolewa wa ingizo. Mbinu hii inapunguza zaidi kiasi cha rasilimali zinazotumiwa kuzalisha data batili. Fuzzer kama hiyo inaitwa a fuzzer smart.

4. Ufahamu wa Muundo wa Programu

Fuzzers pia inaweza kuainishwa kulingana na ikiwa wanafahamu utendaji kazi wa ndani wa programu wanayosumbua, na kutumia ufahamu huo kusaidia utengenezaji wa data ya fuzz. Wakati fuza zinatumiwa kujaribu programu bila kuelewa muundo wake wa ndani, inaitwa jaribio la kisanduku cheusi. 

Data ya fuzz inayotolewa wakati wa majaribio ya kisanduku cheusi kwa kawaida huwa ya nasibu isipokuwa kama fuzzer ni fuzzer inayotokana na mabadiliko, ambapo 'hujifunza' kwa kufuatilia athari za fuzzing yake na kutumia hiyo. habari ili kuboresha seti yake ya data ya fuzz.

Jaribio la kisanduku cheupe kwa upande mwingine hutumia modeli ya muundo wa ndani wa programu kutoa data ya fuzz. Mbinu hii huruhusu fuza kufikia maeneo muhimu katika mpango na kuijaribu. 

Vyombo vya Kuchanganya Maarufu

Kuna fuzzing nyingi zana huko nje hutumiwa na wajaribu kalamu. Baadhi ya maarufu zaidi ni:

Mapungufu ya Fuzzing

Ingawa Fuzzing ni mbinu muhimu sana ya kupima kalamu, haina makosa. Baadhi ya haya ni:

  • Inachukua muda mrefu sana kukimbia.
  • Kuacha kufanya kazi na tabia zingine zisizotarajiwa zinazopatikana wakati wa jaribio la kisanduku cheusi cha programu zinaweza kuwa ngumu, au haiwezekani kuchanganua au kutatua.
  • Kuunda violezo vya mabadiliko ya fuza mahiri kulingana na mabadiliko kunaweza kuchukua muda. Wakati mwingine, inaweza hata isiwezekane kutokana na mtindo wa kuingiza data kuwa wa umiliki au haujulikani.

 

Walakini, ni zana muhimu na muhimu kwa mtu yeyote ambaye anataka kugundua mende kabla ya watu wabaya.

Hitimisho

Fuzzing ni mbinu yenye nguvu ya kupima kalamu ambayo inaweza kutumika kufichua udhaifu katika programu. Kuna aina nyingi tofauti za fuzzers, na fuzzers mpya zinatengenezwa kila wakati. Wakati fuzzing ni zana muhimu sana, ina mapungufu yake. Kwa mfano, fuzzers wanaweza tu kupata udhaifu mwingi na wanaweza kutumia rasilimali nyingi. Walakini, ikiwa unataka kujaribu mbinu hii ya kushangaza kwako mwenyewe, tunayo API ya bure ya DNS Fuzzer ambayo unaweza kutumia kwenye jukwaa letu. 

Kwa hiyo unasubiri nini? 

Anza kuchambua leo!