Tahlillar natijasi har 10 000 qator kodda 5 ta bag mavjudligini ko’rsatadi. Boshqacha qilib aytilganda, o’rtacha 3kbayt .exe faylda 50 taga yaqin bag bo’ladi. Dasturiy vositalar injineriyasida dasturni kafolatli o’z maqsadini bajarishiga harakat qilinsa, xavfsiz dasturiy vositalar injineriyasida esa o’z maqsadini bajarishi talab etiladi. Biroq, butunlay xavfsiz dasturiy vositani bo’lishi amalda mumkin emas.
Dasturiy mahsulotlarda xavfsizlik muammolari. Dasturiy mahsulotlarda quyidagi zaiflikka tegishli tushunchalar mavjud.
Nuqson. Dasturni amalga oshirishdagi va loyihalashdagi zaifliklarning barchasi nuqson hisoblanib, uning dasturiy vositalardagi mavjudligi yillar davomida bilinmasligi mumkin.
Bag. Bag dasturiy ta’minotni amalga oshirish bosqichiga tegishli bo’lgan muammo bo’lib, dasturiy vositalardagi baglarni oson aniqlash mumkin. Masalan, bagga dasturlashdagi bufernito’libtoshish(Buffer overflow) holatini misol keltirish mumkin.
Xotirani to’lib toshishi. 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 hisoblanadi.
Masalan, veb saytda foydalanuvchidan ma’lumotlar kiritilishi talab etilsa (ismi, familiyasi, yili va hak.), foydalanuvchi tomonidan kiritilgan “ism” maydonidagi ma’lumot serverdagi 𝑁 ta belgi hajmiga ega sohaga yoziladi. Agar kiritilgan ma’lumot uzunligi 𝑁 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 S 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;
}
Bu yerdi mavjud muammo bu - 10 bayt o’lchamli xotiraga 20 baytli ma’lumot yozilishida. Bu esa xotiraning ruxsat etilmagan manziliga ham murojaatni keltirib chiqaradi.