Dastur kodidagi zaifliklarni topish uchun oddiy yordamchi dasturdan qanday foydalanish kerak

Graudit bir nechta dasturlash tillarini qo'llab-quvvatlaydi va kod bazasi xavfsizligi testini to'g'ridan-to'g'ri ishlab chiqish jarayoniga integratsiya qilish imkonini beradi.

Dastur kodidagi zaifliklarni topish uchun oddiy yordamchi dasturdan qanday foydalanish kerak
Manba: Unsplash (Markus Spiske)

Sinov dasturiy ta'minotni ishlab chiqish hayotiy tsiklining muhim qismidir. Sinovning ko'p turlari mavjud, ularning har biri o'z muammosini hal qiladi. Bugun men kodda xavfsizlik muammolarini topish haqida gaplashmoqchiman.

Shubhasiz, dasturiy ta'minotni ishlab chiqishning zamonaviy haqiqatlarida jarayon xavfsizligini ta'minlash muhim ahamiyatga ega. Bir vaqtlar DevSecOps maxsus atamasi ham kiritilgan edi. Ushbu atama ilovadagi zaifliklarni aniqlash va yo'q qilishga qaratilgan bir qator protseduralarni anglatadi. Zaifliklarni standartlarga muvofiq tekshirish uchun maxsus ochiq manba echimlari mavjud OVASP, bu manba kodidagi zaifliklarning har xil turlari va xatti-harakatlarini tavsiflaydi.

Xavfsizlik muammolarini hal qilishda turli xil yondashuvlar mavjud, masalan, statik ilovalar xavfsizligi testi (SAST), dinamik ilovalar xavfsizligi testi (DAST), interaktiv ilovalar xavfsizligi testi (IAST), dasturiy ta'minot tarkibi tahlili va boshqalar.

Statik dastur xavfsizligi testi allaqachon yozilgan koddagi xatolarni aniqlaydi. Ushbu yondashuv dasturning ishlashini talab qilmaydi, shuning uchun u statik tahlil deb ataladi.

Men statik kod tahliliga e'tibor qarataman va amalda hamma narsani ko'rsatish uchun oddiy ochiq manba vositasidan foydalanaman.

Nima uchun men statik kod xavfsizligini tahlil qilish uchun ochiq manba vositasini tanladim

Buning bir qancha sabablari bor: birinchidan, bu bepul, chunki siz boshqa dasturchilarga yordam berishni xohlaydigan hamfikrlar jamoasi tomonidan ishlab chiqilgan vositadan foydalanasiz. Agar sizning kichik jamoangiz yoki startapingiz bo'lsa, kod bazasi xavfsizligini sinab ko'rish uchun ochiq kodli dasturiy ta'minotdan foydalangan holda pulni tejash uchun ajoyib imkoniyatga egasiz. Ikkinchidan, bu alohida DevSecOps jamoasini yollash zaruratini yo'q qiladi, bu esa xarajatlaringizni yanada kamaytiradi.

Yaxshi ochiq manba vositalari har doim moslashuvchanlik uchun ortib borayotgan talablarni hisobga olgan holda yaratiladi. Shuning uchun ular keng doiradagi vazifalarni qamrab olgan holda deyarli har qanday muhitda qo'llanilishi mumkin. Ishlab chiquvchilar uchun bunday vositalarni o'z loyihalari ustida ishlash jarayonida allaqachon qurgan tizim bilan ulash ancha oson.

Ammo ba'zida siz tanlagan vositada mavjud bo'lmagan xususiyat kerak bo'lishi mumkin. Bunday holda, siz uning kodini ajratish va unga asoslangan o'zingizning vositangizni kerakli funksionallik bilan ishlab chiqish imkoniyatiga egasiz.

Ko'pgina hollarda ochiq kodli dasturiy ta'minotni ishlab chiqish hamjamiyat tomonidan faol ta'sir ko'rsatganligi sababli, o'zgartirishlar kiritish qarori juda tez va aniq qabul qilinadi: ochiq kodli loyihani ishlab chiquvchilar foydalanuvchilarning fikr-mulohazalari va takliflariga, ularning hisobotlariga tayanadilar. topilgan xatolar va boshqa muammolar.

Kod xavfsizligini tahlil qilish uchun Graudit-dan foydalanish

Statik kodlarni tahlil qilish uchun turli xil ochiq manba vositalaridan foydalanishingiz mumkin, barcha dasturlash tillari uchun universal vosita mavjud emas. Ulardan ba'zilarini ishlab chiquvchilar OWASP tavsiyalariga amal qilishadi va iloji boricha ko'proq tillarni qamrab olishga harakat qilishadi.

Bu erda biz foydalanamiz Graudit, bizning kod bazamizdagi zaifliklarni topishga imkon beradigan oddiy buyruq qatori yordam dasturi. U turli tillarni qo'llab-quvvatlaydi, lekin hali ham ularning to'plami cheklangan. Graudit bir paytlar GNU litsenziyasi ostida chiqarilgan grep yordam dasturi asosida ishlab chiqilgan.

Statik kodlarni tahlil qilish uchun shunga o'xshash vositalar mavjud - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder va boshqalar. Ammo Graudit juda moslashuvchan va minimal texnik talablarga ega. Biroq, Graudit hal qila olmaydigan muammolarga duch kelishingiz mumkin. Keyin bu erda boshqa variantlarni izlashingiz mumkin ushbu ro'yxatda.

Biz ushbu vositani ma'lum bir loyihaga qo'shishimiz yoki uni tanlangan foydalanuvchiga taqdim etishimiz yoki uni barcha loyihalarimizda bir vaqtning o'zida ishlatishimiz mumkin. Bu erda Grauditning moslashuvchanligi ham o'ynaydi. Shunday qilib, avval repo klonlaylik:

$ git clone https://github.com/wireghoul/graudit

Endi Graudit uchun uni buyruq formatida ishlatish uchun ramziy havola yarataylik

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Keling, .bashrc (yoki siz foydalanayotgan konfiguratsiya fayli) ga taxallus qo'shamiz:

#------ .bashrc ------
alias graudit="~/bin/graudit"

Qayta ishga tushirish:

$ source ~/.bashrc # OR
$ exex $SHELL

O'rnatish muvaffaqiyatli yoki yo'qligini tekshiramiz:

$ graudit -h

Agar shunga o'xshash narsani ko'rsangiz, unda hamma narsa yaxshi.

Dastur kodidagi zaifliklarni topish uchun oddiy yordamchi dasturdan qanday foydalanish kerak

Men mavjud loyihalarimdan birini sinab ko'raman. Asbobni ishga tushirishdan oldin, u mening loyiham yozilgan tilga mos keladigan ma'lumotlar bazasidan o'tishi kerak. Ma'lumotlar bazalari ~/gradit/signatures papkasida joylashgan:

$ graudit -d ~/gradit/signatures/js.db

Shunday qilib, men loyihamdan ikkita JS faylini sinab ko'rdim va Graudit mening kodimdagi zaifliklar haqida ma'lumotni konsolga ko'rsatdi:

Dastur kodidagi zaifliklarni topish uchun oddiy yordamchi dasturdan qanday foydalanish kerak

Dastur kodidagi zaifliklarni topish uchun oddiy yordamchi dasturdan qanday foydalanish kerak

Loyihalaringizni xuddi shu tarzda sinab ko'rishingiz mumkin. Turli xil dasturlash tillari uchun ma'lumotlar bazalari ro'yxatini ko'rishingiz mumkin shu yerda.

Grauditning afzalliklari va kamchiliklari

Graudit ko'plab dasturlash tillarini qo'llab-quvvatlaydi. Shuning uchun u keng foydalanuvchilar uchun javob beradi. U har qanday bepul yoki pullik analoglar bilan munosib raqobatlasha oladi. Va loyihada hali ham yaxshilanishlar olib borilayotgani juda muhim va hamjamiyat nafaqat ishlab chiquvchilarga, balki asbobni aniqlashga harakat qilayotgan boshqa foydalanuvchilarga ham yordam beradi.

Bu qulay vosita, ammo hozircha u shubhali kod bilan muammo nimada ekanligini har doim ham aniqlab bera olmaydi. Ishlab chiquvchilar Grauditni yaxshilashda davom etmoqdalar.

Ammo har qanday holatda, bu kabi vositalardan foydalanganda koddagi mumkin bo'lgan xavfsizlik muammolariga e'tibor berish foydalidir.

Boshlanmoqda…

Ushbu maqolada men zaifliklarni topishning ko'p usullaridan birini ko'rib chiqdim - static application security testing. Statik kod tahlilini o'tkazish oson, lekin bu faqat boshlanishi. Kod bazasi xavfsizligi haqida ko'proq ma'lumot olish uchun siz dasturiy ta'minotni ishlab chiqishning hayot tsikliga boshqa turdagi testlarni kiritishingiz kerak.

Reklama huquqlari to'g'risida

Ishonchli VPS va tarif rejasini to'g'ri tanlash sizni noxush muammolar bilan rivojlanishdan kamroq chalg'itishga imkon beradi - hamma narsa nosozliklarsiz va juda yuqori ish vaqti bilan ishlaydi!

Dastur kodidagi zaifliklarni topish uchun oddiy yordamchi dasturdan qanday foydalanish kerak

Manba: www.habr.com

a Izoh qo'shish