Fuzzing nima?

Tushuntirish nima

Kirish: Fuzzing nima?

2014 yilda xitoylik xakerlar Jamiyat sog‘liqni saqlash tizimlariga buzib kirilgan, AQShning notijorat kasalxonalar tarmog'i va 4.5 million bemorning ma'lumotlarini o'g'irlagan. Xakerlar buzg'unchilikdan bir necha oy oldin OpenSSL kriptografiya kutubxonasida topilgan Heartbleed nomli xatodan foydalangan.

Heartbleed hujum vektorlari sinfiga misol bo'lib, tajovuzkorlarga dastlabki tekshiruvlardan o'tish uchun etarli darajada haqiqiy noto'g'ri so'rovlarni yuborish orqali nishonga kirish imkonini beradi. Ilovaning turli qismlarida ishlaydigan mutaxassislar uning xavfsizligini ta'minlash uchun qo'lidan kelganicha harakat qilishsa-da, dasturni buzishi yoki uni ishlab chiqish jarayonida zaiflashishi mumkin bo'lgan barcha burchak holatlari haqida o'ylashning iloji yo'q.

Bu erda "fuzing" paydo bo'ladi.

Noqulay hujum nima?

Fuzzing, fuzz testing yoki fuzzing hujum - bu tasodifiy, kutilmagan yoki noto'g'ri ma'lumotlarni (fuzz deb ataladi) dasturga kiritish uchun ishlatiladigan avtomatlashtirilgan dasturiy ta'minotni sinovdan o'tkazish usuli. Dastur noodatiy yoki kutilmagan xatti-harakatlar, masalan, buferning to'lib ketishi, ishdan chiqishi, xotiraning oqishi, ipning osib qo'yilishi va o'qish/yozish huquqini buzish uchun nazorat qilinadi. Keyin noodatiy xatti-harakatlarning sababini aniqlash uchun fuzzing vositasi yoki fuzzer ishlatiladi.

Fuzzing barcha tizimlarda topilishi kutilayotgan xatolar mavjud degan taxminga asoslanadi va buning uchun yetarli vaqt va resurslar berilishi mumkin. Aksariyat tizimlar juda yaxshi tahlil qiluvchi yoki kirishni tekshirishni oldini oladi kiber jinoyatchilar dasturdagi har qanday taxminiy xatolardan foydalanishdan. Biroq, yuqorida aytib o'tganimizdek, rivojlanish jarayonida barcha burchak holatlarini qoplash qiyin.

Fuzzerlar tuzilgan ma'lumotni qabul qiladigan yoki qandaydir ishonch chegarasiga ega bo'lgan dasturlarda qo'llaniladi. Misol uchun, PDF-fayllarni qabul qiladigan dastur faylda .pdf kengaytmasi va PDF-faylni qayta ishlash uchun parser mavjudligiga ishonch hosil qilish uchun ba'zi tekshiruvlarga ega bo'ladi.

Samarali fuzzer ushbu chegaralardan o'tish uchun etarli darajada haqiqiy ma'lumotlarni yaratishi mumkin, ammo dasturdan uzoqroqda kutilmagan xatti-harakatlarga olib keladigan darajada yaroqsiz. Bu juda muhim, chunki agar boshqa zarar yetkazilmasa, tekshiruvlardan o'tish ko'p narsani anglatmaydi.

Fuzzers SQL in'ektsiyasi, saytlararo skriptlar, buferni to'ldirish va xizmat ko'rsatishni rad etish hujumlariga juda o'xshash hujum vektorlarini topadi. Ushbu hujumlarning barchasi tizimga kutilmagan, noto'g'ri yoki tasodifiy ma'lumotlarni kiritish natijasidir. 

 

Fuzzerlar turlari

Fuzzerlarni ba'zi xususiyatlarga ko'ra tasniflash mumkin:

  1. Maqsadlarga hujum qilish
  2. Fuzni yaratish usuli
  3. Kirish strukturasidan xabardorlik
  4. Dastur tuzilishidan xabardorlik

1. Maqsadlarga hujum qilish

Ushbu tasnif fuzzer sinov uchun ishlatiladigan platforma turiga asoslanadi. Fuzzers odatda tarmoq protokollari va dasturiy ilovalar bilan qo'llaniladi. Har bir platforma ma'lum turdagi ma'lumotlarni oladi va shuning uchun har xil turdagi fuzzerlarni talab qiladi.

Masalan, ilovalar bilan ishlashda barcha noaniq urinishlar ilovaning foydalanuvchi interfeysi, buyruq qatori terminali, shakllar/matn kiritishlari va fayllarni yuklash kabi turli xil kirish kanallarida sodir bo'ladi. Shunday qilib, fuzzer tomonidan yaratilgan barcha kirishlar ushbu kanallarga mos kelishi kerak.

Aloqa protokollari bilan shug'ullanadigan fuzzers paketlar bilan shug'ullanishi kerak. Ushbu platformaga mo'ljallangan fuzzers soxta paketlarni yaratishi yoki hatto tutib olingan paketlarni o'zgartirish va ularni qayta o'ynash uchun proksi sifatida harakat qilishi mumkin.

2. Fuzz yaratish usuli

Fuzzers, shuningdek, ular bilan qanday qilib ma'lumot yaratishga qarab tasniflanishi mumkin. Tarixiy jihatdan, fuzzerlar noldan tasodifiy ma'lumotlarni yaratish orqali fuzzni yaratgan. Ushbu texnikaning tashabbuskori bo'lgan professor Barton Miller dastlab shunday qilgan. Ushbu turdagi fuzzer a deb ataladi avlodga asoslangan fuzzer.

Biroq, nazariy jihatdan ishonch chegarasini chetlab o'tadigan ma'lumotlarni yaratish mumkin bo'lsa-da, buni amalga oshirish uchun katta vaqt va resurslar kerak bo'ladi. Shuning uchun bu usul odatda oddiy kirish tuzilmalariga ega tizimlar uchun ishlatiladi.

Ushbu muammoning yechimi ishonch chegarasidan o'tish uchun etarli darajada haqiqiy ma'lumotlarni yaratish uchun haqiqiy ekanligi ma'lum bo'lgan ma'lumotlarni mutatsiyalashdan iborat, ammo muammo tug'diradigan darajada yaroqsiz. Bunga yaxshi misol a DNS fuzzeri domen nomini oladi va keyin ko'rsatilgan domen egasiga qaratilgan potentsial zararli domenlarni aniqlash uchun domen nomlarining katta ro'yxatini yaratadi.

Ushbu yondashuv avvalgisiga qaraganda aqlliroq va mumkin bo'lgan almashtirishlarni sezilarli darajada toraytiradi. Ushbu usuldan foydalanadigan fuzerlar deyiladi mutatsiyaga asoslangan fuzzerlar

Zaifliklarni bartaraf etish uchun zarur bo'lgan optimal noaniq ma'lumotlarni birlashtirish uchun genetik algoritmlardan foydalanadigan uchinchi yangi usul mavjud. U dasturga kiritilganda har bir test ma'lumotlarining ishlashini hisobga olgan holda o'zining noaniq ma'lumotlarini doimiy ravishda takomillashtirish orqali ishlaydi. 

Eng yomon ishlaydigan ma'lumotlar to'plamlari ma'lumotlar hovuzidan o'chiriladi, eng yaxshilari esa mutatsiyaga uchragan va/yoki birlashtirilgan. Yangi avlod ma'lumotlari keyin yana fuzz testi uchun ishlatiladi. Ushbu fuzzerlar deb ataladi evolyutsion mutatsiyaga asoslangan fuzzerlar.

3. Kirish strukturasidan xabardorlik

Ushbu tasnif fuzzerning fuzz ma'lumotlarini yaratishda dasturning kirish strukturasini bilishi va undan faol foydalanishiga asoslanadi. A ahmoq fuzzer (dasturning kiritish strukturasidan bexabar bo'lgan fuzzer) asosan tasodifiy tarzda noaniqlikni hosil qiladi. Bu avlod va mutatsiyaga asoslangan fuzzerlarni o'z ichiga olishi mumkin. 


Agar fuzzer dasturning kirish modeli bilan ta'minlangan bo'lsa, fuzzer taqdim etilgan kirish modeliga mos keladigan ma'lumotlarni yaratishga yoki o'zgartirishga harakat qilishi mumkin. Ushbu yondashuv noto'g'ri ma'lumotlarni yaratish uchun sarflangan resurslar miqdorini yanada kamaytiradi. Bunday fuzzer a deb ataladi aqlli fuzzer.

4. Dastur tuzilmasidan xabardorlik

Fuzzers, shuningdek, ular noaniq bo'lgan dasturning ichki ishlashidan xabardor ekanligiga qarab tasniflanishi mumkin va bu xabardorlikdan noaniq ma'lumotlarni yaratishga yordam berish uchun foydalanadi. Agar dasturni ichki tuzilishini tushunmasdan sinash uchun fuzzerlar ishlatilsa, u qora quti testi deb ataladi. 

Qora qutini sinovdan o'tkazishda hosil bo'lgan noaniq ma'lumotlar odatda tasodifiy bo'ladi, agar fuzzer evolyutsion mutatsiyaga asoslangan fuzzer bo'lmasa, u erda uning fuzzing ta'sirini kuzatish va undan foydalanish orqali "o'rganadi". axborot uning fuzz ma'lumotlar to'plamini yaxshilash uchun.

Boshqa tomondan, oq quti testi noaniq ma'lumotlarni yaratish uchun dasturning ichki tuzilishi modelidan foydalanadi. Ushbu yondashuv fuzzerga dasturning muhim joylariga etib borish va uni sinab ko'rish imkonini beradi. 

Mashhur Fuzzing vositalari

Ko'plab noaniqliklar mavjud vositalari u erda qalam sinovchilari tomonidan foydalaniladi. Eng mashhurlaridan ba'zilari:

Fuzzing cheklovlari

Fuzzing haqiqatan ham foydali qalamni sinab ko'rish usuli bo'lsa-da, uning kamchiliklari yo'q emas. Ulardan ba'zilari:

  • Yugurish uchun ancha vaqt ketadi.
  • Dasturning qora qutisi sinovi paytida topilgan nosozliklar va boshqa kutilmagan xatti-harakatlarni tahlil qilish yoki disk raskadrovka qilish qiyin bo'lishi mumkin.
  • Aqlli mutatsiyaga asoslangan fuzzerlar uchun mutatsiya shablonlarini yaratish ko'p vaqt talab qilishi mumkin. Ba'zan, kirish modeli mulkiy yoki noma'lum bo'lganligi sababli buning iloji bo'lmasligi mumkin.

 

Shunga qaramay, bu yomon odamlardan oldin xatolarni topmoqchi bo'lgan har bir kishi uchun juda foydali va zarur vositadir.

Xulosa

Fuzzing - bu dasturiy ta'minotdagi zaifliklarni aniqlash uchun ishlatilishi mumkin bo'lgan kuchli qalam testi usuli. Har xil turdagi fuzzerlar mavjud va har doim yangi fuzzerlar ishlab chiqilmoqda. Fuzzing nihoyatda foydali vosita bo'lsa-da, uning cheklovlari bor. Misol uchun, fuzzerlar juda ko'p zaifliklarni topa oladi va ular juda ko'p resurs talab qilishi mumkin. Ammo, agar siz ushbu ajoyib texnikani o'zingiz sinab ko'rmoqchi bo'lsangiz, bizda mavjud platformamizda foydalanishingiz mumkin bo'lgan bepul DNS Fuzzer API. 

Xo'sh, nimani kutmoqdasiz? 

Bugundan zerikishni boshlang!

Google va Inkognito afsonasi

Google va Inkognito afsonasi

Google va Inkognito afsonasi 1-yilning 2024-aprelida Google Inkognito rejimida toʻplangan milliardlab maʼlumotlar yozuvlarini yoʻq qilish orqali daʼvoni hal qilishga rozi boʻldi.

Ko'proq o'qing "