|
Vazirligi muhammad al-xorazmiy nomidagi toshkent
|
bet | 86/111 | Sana | 20.05.2024 | Hajmi | 2,03 Mb. | | #246571 |
Tizim
|
Dasturdagi kod uzunligi
|
Netscape
|
17 mln.
|
Space Shuttle
|
10 mln.
|
Linuxkernel 2.6.0
|
5 mln.
|
Windows XP
|
40 mln.
|
Mac OS X 10.4
|
86 mln.
|
Boeing 777
|
7 mln.
|
Tahlillar natijasi har 10 000 ta qator kodda 5 ta bag mavjudligini ko‘rsatadi. Boshqacha aytganda, o‘rtacha 3kbayt .exe faylda 50 tacha bag bo‘ladi.
Dasturiy vositalar injineriyasida dasturning o‘z vazifasini kafolatli bajarishiga harakat qilinsa, xavfsiz dasturiy vositalar injineriyasida esa o‘z vazifasini xavfsiz bajarishi talab etiladi. Biroq, amalda butunlay xavfsiz dasturiy vositaning bo‘lishi mumkin emas.
Dasturiy mahsulotlarda zaiflikka tegishli quyidagi tushunchalar mavjud.
Nuqson. Dasturni amalga oshirishdagi va loyihalashdagi zaifliklarning barchasi nuqson hisoblanadi va uning dasturiy vositalarda mavjudligi yillar davomida bilinmasligi mumkin.
Bag. Baglar dasturiy ta’minotni amalga oshirish bosqichiga tegishli muammo bo‘lib, ularni osongina aniqlash mumkin. Misol sifatida dasturlashdagi buferning to‘lib-toshishi (Buffer overflow) holatini keltirish mumkin.
Xotiraning to‘lib-toshishi. Amalda ko‘p uchraydigan dasturlash tillaridagi kamchiliklar, odatda, taqiqlangan formatdagi yoki hajmdagi ma’lumotlarning kiritilishi natijasida kelib chiqadi. Bu turdagi tahdidlar ichida keng tarqalgani – xotiraning to‘lib-toshishi tahdidi.
Masalan, foydalanuvchidan web-saytga ma’lumotlar kiritilishi talab etilsa (ismi, familiyasi, yili va h.), foydalanuvchi tomonidan kiritilgan “ism” maydonidagi ma’lumot serverdagi 𝑁 ta belgi hajmiga ega sohaga yoziladi. Agar kiritilgan ma’lumot uzunligi 𝑁 dan katta bo‘lsa, xotiraning to‘lib-toshishi hodisasi sodir bo‘ladi.
Agar buzg‘unchi tomonidan o‘ziga “kerakli” ma’lumot kiritilsa, bu o‘z navbatida kompyuterning buzilishiga olib keladi.
Quyida C dasturlash tilida yozilgan kod keltirilgan, agar bu kod kompilyasiya qilinsa, xotiraning to‘lib-toshishi hodisasi sodir bo‘ladi.
int main()
{
int buffer [10];
buffer [20] =37;
}
Bu yerda mavjud muammo - 10 bayt o‘lchamli xotiraga 20 baytli ma’lumot yozilishi. Bu esa xotiraning ruxsat etilmagan manziliga ham murojaatga sabab bo‘ladi.
|
| |