DASTURIY MAHSULOTLAR XAVFSIZLIGI
DASTURIY MAHSULOTLAR XAVFSIZLIGI Reja: 1. Dasturiy mahsulotlar xavfsizligi muammolari 2. Dasturiy mahsulotlarda mavjud zaifliklar 3. Zararkunanda dasturlarning tahlili 4. Malwarebytes yordamida skanerlashni o rnatish va boshqarish ʻ
Dasturiy mahsulotlar xavfsizligi muammolari Dasturiy mahsulotlar xavfsizligi hozirgi kunda kelib, kriptografiya, ruxsatlarni nazoratlash va xavfsizlik protokollari kabi muhim sanaladi. Bunga sabab, axborotlarning vertual xavfsizligi dasturi vositalar orqali amalga oshiriladi. Bundan kelib chiqadiki, agar dasturiy vosita tahdidga uchragan taqdirda, xavfsizlik mexanizmi ham barbod bo ladi. ʻ Barcha dasturiy vositalarda zaifliklar mavjud bo lib, ularning muhimlik ʻ darajalari turlichadir. Masalan, qiymati 165 mil. $ ni tashkil etgan NASA Mars Lander, Mars sayyorasi yuzasiga qo nish vaqtida halokatga uchragan. Bungan ʻ sabab esa, oddiy ingliz va metr uzunlik o lchovlari orasidagi farq sanalgan. ʻ Bundan tashqari, Denver xalqaro ayroportidagi yuklarni ushlash tizimida foydalanilgan dasturiy vositadagi kamchilik natijasida, 11 oy davomida kuniga 1 mil.$ dan zarar ko rilgan. ʻ Dasturiy vositalarda xavfsizlik muammolarini mavjudligi bir nechta omillar bilan belgilanadi: – dasturiy vositalarning ko plab dasturchilar tomonidan yozilishi ʻ (komplekslilik); – dasturiy mahsulotlar yaratilishida inson ishtiroki; – dasturchining malakasi yuqori emasligi; – dasturlash tillarining xavfsiz emasligi. Yaratiladigan dasturiy vositalar o zida millionlab kodlarni tashkil etib, quyida ʻ bularga aniq misollar keltirilgan. 3.7.1-jadval. Tizim va kodlar uzunligi Tizim Dasturdagi kodlar uzunligi Netscape 17 mil. Space 10 mil Linuxkernel 2.6.0 5 mil Windows XP 40 mil Mac OS X 10.4 86 mil Boeing 777 7 mil
Tahlillar natijasi shuni ko rsatadiki har 10 000 qator kodda, 5 ta bag mavjudʻ bo lar ekan. Boshqacha qilib aytilganda o rtacha 3 kbayt .exe faylda 50 taga yaqin ʻ ʻ bag bo ladi. ʻ Dasturiy vositalardagi mavjud tahdidlar odatda dasturlash tillari imkoniyatlari bilan belgilanadi. Masalan, nisbatan quyi dasturlash tillari dasturchidan yuqori malakani talab etgani bois, ularda ko plab xavfsizlik muammolari paydo bo ladi. ʻ ʻ Masalan, C#, Java dasturlash tillari C yoki C++ dasturlash tillariga nisbatan xavfsizdir. Sababi bu dasturlash tillarida ko plab muammolar avtomatik ravishda, ʻ kompilyasiya jarayonida aniqlanadi. Dasturiy mahsulotlarda mavjud zaifliklar Odatda zararli dasturiy vositalar ikki turga bo lanadi: ʻ – dasturlardagi zaifliklar (atayin qilinmagan); – zararkunanda dasturlar (atayin qilingan). Birinchi turga asosan, dasturchi tomonidan yo l qo yilgan xatolik natijasida ʻ ʻ kelib chiqqkan zararli dasturlar misol bo lsa, ikkinchi turga buzg’unchilik ʻ maqsadida yozilgan maxsus dasturiy mahsulotlar (viruslar) misol bo ladi. ʻ Quyida hozirda dasturiy vositalarda dasturchilar tomonidan yo l qo yiladigan ʻ ʻ tahdid va kamchiliklar bilan tanishib chiqiladi. Xotiraning to lib toshishi (Buffer overflow). ʻ Amalda ko p uchraydigan ʻ dasturlash tillaridagi kamchiliklar odatda, taqiqlangan formatdagi yoki hajmdagi ma‘lumotlar kiritilishi natijasida kelib chiqadi. Bu turdagi tahdidlar ichida keng tarqalgani bu – xotiraning to lib toshish tahdidi sanaladi. ʻ Masalan, veb saytda foydalanuvchidan ma‘lumotlar kiritilishi talab etilsa (ismi, familyasi, yili, va hak.), foydalanuvchi tomonidan kiritilgan ―ism maydonidagi ma‘lumot serverdagi N ta belgi hajmiga ega sohaga yoziladi. Agar kiritilgan ma‘lumot uzunligi N dan katta bo lgan holda, xotiraning ʻ to lib toshishi hodisasi yuzaga keladi. ʻ Agar buzg’unchi tomonidan ―kerakli ma‘lumot kiritilsa, bu o z navbatida ʻ kompyuterni buzulishiga olib keladi.
Quyida C dasturlash tilida yozilgan kod keltirilgan bo lib, agar bu kodʻ kompilyasiya qilinsa xotiraning to lib toshishi hodisasi kelib chiqadi. ʻ int main() { int buffer [10]; buffer [20] =37; } Sababi 10 bayt o lchamdagi xotiraning 20 baytiga ma‘lumot yozilmoqda. Bu ʻ esa xotiraning ruxsat etilmagan manziliga murojaatni keltirib chiqaradi. Agar dasturiy mahsulot autentifikatsiyani ta‘minlash maqsadida yaratilgan bo lib, autentifikatsiya natijasi bir bit bilan ifodalanadi. Agar xotiraning to lib ʻ ʻ toshishi natijasida ushbu bit buzg’unchi tomonidan muofaqiyatli o zgartirilsa Tridi ʻ o zini Alisa deb tanishtirish imkoniyatiga ega bo ladi. Bu holat quyidagi 3.7.1– ʻ ʻ rasmda keltirilgan. Bu erda F autentifikatsiyadan muvafaqiyatli o tilmaganligini ʻ bildiradi. Agar Tridi F (0 ni) maydon qiymatini T (1 ga) o zgartirsa, dasturiy ʻ ta‘minot Tridini Alisa sifatida taniydi va unga resurslaridan foydalanish imkoniyatini yaratadi (3.7.2 – rasm). 3.7.1-rasm Xotira va mantiqiy bayroq 3 .7.2 – rasm. Sodda xotirani to lib toshishi ʻ Xotirani to lib toshish hodisasini chiqurroq o rganishdan oldin zamonaviy ʻ ʻ kompyuterning xotira tuzilishi bilan tanishilib chiqiladi. Kompyuter xotirasining soddalashgan ko rinishi quyidagi 3.7.3 – rasmda keltirilgan. ʻ
3.7.3 – rasm. Xotiraning tuzilishi Bu erda text madonida kodlar saqlanib, data sohasida static kattaliklar saqlanadi. Help sohasi dinamik ma‘lumotlarga tegishli bo lib, ʻ stack ni prosessor uchun «keraksiz qog’oz» vazifasini o taydi. Masalan, dinamik lokal ʻ o zgaruvchilar, funksiya parametlari, funksiyalarning qaytrish manzillari kabi ʻ ma‘lumotlar stack da saqlanadi. Stack pointer yoki SP esa stackni eng yuqorisini ko rsatadi. Rasmda stackni quyidan yuqoriga chiqishi holati bilan ifodalangan. ʻ Stackni avariyaga uchratish . Stackni avariyaga uchrash hodisasi asosan xotirani to lib toshishi natijasida kelib chiqadi. Bu turdagi tahdidda Tridi ʻ funksiyalarni chaqirilishi davomida stackni tekshiradi. Funksiyani chaqirish davomida stackdan foydalanish tartibi quyidagi kodda keltirilgan. void func(int a, int b) { char buffer[10]; } void main() { func(l,2); } Qachonki func funksiyasi chaqirilganda funksiyaning parametrlari stack da itarib chiqariladi (3.7.4 – rasm).