Concolic testi ramziy ijro etish muammolarini yaqin atrofdagi
joylarga ramziy ijroni "asoslash" uchun aniq bajarilish izini
qo'llash orqali hal qiladi. Faqat qayd etilgan izga yaqin va bo'ylab
cheklovlar baholanadi.
KLEE [6] LLVM kompilyatoriga asoslangan ramziy/konkolik ijro
mexanizmining namunasidir . LLVM maqsadli dasturni ramziy/
konkolik bajarish uchun asboblar bilan kompilyatsiya qiladi.
6.4 Yumshatish choralari
Yumshatish - bu xotira xavfsizligi, turdagi xavfsizlik yoki butun sonlar
to'lib ketishi kabi past darajadagi xavfsizlik siyosatini buzadigan
dasturiy ta'minot kamchiliklaridan himoya qilishning oxirgi chizig'i .
Mantiqiy kamchiliklarni yumshatish mumkin emas,
chunki ular
(odatda) mashina o'qiy oladigan tarzda ifodalanmaydigan dasturning
talablari va spetsifikatsiyasiga bog'liq. Kod tekshirilmagan yoki xatolik
uchun sinovdan o'tkazilmaganligini hisobga olsak , yumshatishlar ish
vaqtida siyosat buzilishini tekshirishi mumkin.
Kamchiliklarni
yumshatish odatda ushbu qo'shimcha tekshiruvlar tufayli ba'zi ishlash
xarajatlariga olib keladi . Shu sababli, ko'pchilik yumshatishlar
xavfsizlik kafolatlarini o'zgartirib , unchalik katta bo'lmagan unumdorlik
yoki xotira yukini keltirib chiqarish uchun mo'ljallangan. Buning
sababi - ortiqcha xarajatlar
81
Bu muammolarning barchasi umumiy xususiyatga ega, chunki
murakkablik cheklovlarni portlatib yuboradi va SMT hal qiluvchi vaqt
tugashidan oldin yechim topish ehtimolini kamaytiradi .
Keyin KLEE atrof-muhitni modellashtiradi va ramziy ijroni cheklash
uchun ko'plab turli xil qidiruv strategiyalari
va evristika tanlovini
taqdim etadi.
6 Mudofaa strategiyasi
Machine Translated by Google
toqat qilinmaydi - xatolarning mavhum xavfi. Yumshatishlar
tuzatilmagan va noma'lum xatolardan va shuning uchun mavhum
xavfdan himoya qiladi. Yengillashtirishni amalga oshirish narxi haqiqiydir.
O'rnatilgan yumshatish vositalari to'plami - kod
kiritishdan himoya qilish
uchun ma'lumotlarning bajarilishini oldini olish (DEP), ma'lumotlarning
sizib chiqishidan ehtimollik bilan himoya qilish uchun manzillar maydoni
tartibini tasodifiylashtirish (ASLR), orqa tomonni boshqarish oqimini
himoya qilish uchun kanareykalarni yig'ish , in'ektsiyadan himoya qilish
uchun xavfsiz istisnolardan foydalanish. C++ istisno freymlari va format
string hujumlaridan himoya qilish uchun manbani mustahkamlang .
Control-Flow Integrity (CFI), sandboxing,
stek yaxlitligi va dasturiy
ta'minotga asoslangan nosozliklarni izolyatsiya qilish kabi ba'zi bir kuchli
yumshatish choralari keng tarqalish ehtimoli yuqori bo'lgan dasturiy ta'minotda qo'llanilmoqda.
Ko'pgina keng tarqalgan apparatlar dastlab kod va ma'lumotlar
o'rtasida farq qilmadi . Jarayonning manzil maydonidagi har qanday
o'qilishi mumkin bo'lgan ma'lumotlar boshqaruv oqimini ushbu
ma'lumotlar joyiga o'tkazish orqali bajarilishi mumkin. Xotirani
boshqarish bloki sahifalarni
xaritadan chiqarish, o'qish yoki yozish
imkonini beradi. Ushbu uch xil konfiguratsiya sahifaning yozilishi yoki
faqat o'qilishi mumkinligini belgilaydigan sahifalar jadvalidagi bitta bit
orqali ko'rib chiqiladi. Agar sahifa xaritada ko'rsatilmagan bo'lsa, uni yozish yoki o'qish mumkin emas.
Ma'lumotlarning bajarilishini oldini olish (DEP) yoki WˆX (yoziladigan xor
bajariladigan) xotiradagi har qanday joyni exe bilan kesilishi yoki yozilishi mumkin,
lekin hech qachon ikkalasi ham bo'lmasligini ta'minlaydi. DEP kod yaxlitligini ta'minlaydi,
82
Har qanday xaritalangan sahifa har doim o'qilishi mumkin.
6 Mudofaa strategiyasi
tez orada.
5>5>
Do'stlaringiz bilan baham: