Google kompaniyasi ClusterFuzzLite fuzzing test tizimini taqdim etdi

Google uzluksiz integratsiya tizimlarining ishlashi davomida yuzaga kelishi mumkin bo'lgan zaifliklarni erta aniqlash uchun kodning fuzzing testini tashkil qilish imkonini beruvchi ClusterFuzzLite loyihasini taqdim etdi. Hozirda ClusterFuzz-dan GitHub Actions, Google Cloud Build va Prow-da tortishish so'rovlarining fuzz testini avtomatlashtirish uchun foydalanish mumkin, ammo kelajakda boshqa CI tizimlarini qo'llab-quvvatlash kutilmoqda. Loyiha fuzzing test klasterlari ishini muvofiqlashtirish uchun yaratilgan ClusterFuzz platformasiga asoslangan va Apache 2.0 litsenziyasi ostida tarqatiladi.

Qayd etilishicha, Google 2016-yilda OSS-Fuzz xizmatini joriy qilganidan soβ€˜ng 500 dan ortiq muhim ochiq kodli loyihalar doimiy fuzzing test dasturiga qabul qilingan. Oβ€˜tkazilgan testlar asosida 6500 dan ortiq tasdiqlangan zaifliklar bartaraf etildi va 21 mingdan ortiq xatoliklar tuzatildi. ClusterFuzzLite taklif qilingan o'zgarishlarni ko'rib chiqish bosqichida muammolarni avvalroq aniqlash qobiliyatiga ega bo'lgan noaniq test mexanizmlarini ishlab chiqishda davom etmoqda. ClusterFuzzLite allaqachon tizimli va curl loyihalaridagi o'zgarishlarni ko'rib chiqish jarayonlarida joriy qilingan va yangi kodni tekshirishning dastlabki bosqichida foydalanilgan statik analizatorlar va linterlar tomonidan o'tkazib yuborilgan xatolarni aniqlash imkonini berdi.

ClusterFuzzLite loyihalarni C, C++, Java (va JVM-ga asoslangan boshqa tillar), Go, Python, Rust va Swiftda ko'rib chiqishni qo'llab-quvvatlaydi. Fuzzing testi LibFuzzer dvigateli yordamida amalga oshiriladi. Xotiradagi xatolar va anomaliyalarni aniqlash uchun AddressSanitizer, MemorySanitizer va UBSan (UndefinedBehaviorSanitizer) vositalari ham chaqirilishi mumkin.

ClusterFuzzLite-ning asosiy xususiyatlari: kodni qabul qilishdan oldin xatolarni topish uchun taklif qilingan o'zgarishlarni tezkor tekshirish; halokat holatlari bo'yicha hisobotlarni yuklab olish; kod o'zgarishlarini tekshirgandan so'ng yuzaga chiqmagan chuqurroq xatolarni aniqlash uchun yanada rivojlangan fuzzing testiga o'tish qobiliyati; sinov davomida kod qamrovini baholash uchun qamrov hisobotlarini yaratish; kerakli funksionallikni tanlash imkonini beruvchi modulli arxitektura.

Eslatib o'tamiz, fuzzing testi haqiqiy ma'lumotlarga yaqin (masalan, tasodifiy teg parametrlari bo'lgan html sahifalar, arxivlar yoki anomal sarlavhali rasmlar va boshqalar) kirish ma'lumotlarining tasodifiy kombinatsiyalarining barcha turlarini yaratish va yozishni o'z ichiga oladi. ularni qayta ishlash jarayonida nosozliklar. Agar ketma-ketlik ishlamay qolsa yoki kutilgan javobga mos kelmasa, bu xatti-harakatlar xato yoki zaiflikni ko'rsatishi mumkin.

Manba: opennet.ru

a Izoh qo'shish