Tizim qo'ng'iroqlari uchun Linux yadrosi stek manzillarini tasodifiy ajratish uchun yamalar kiritilgan

Kees Kuk, kernel.org saytining sobiq bosh tizim ma'muri va Ubuntu xavfsizlik guruhi rahbari, hozirda Google'da Android va ChromeOS xavfsizligini ta'minlash bo'yicha ishlaydi, tizim qo'ng'iroqlarini qayta ishlashda yadro stekidagi ofsetlarni tasodifiy ajratish uchun yamoqlar to'plamini nashr etdi. Yamalar stek joylashuvini o'zgartirish orqali yadro xavfsizligini yaxshilaydi, stekga hujumlarni ancha qiyinlashtiradi va kamroq muvaffaqiyatli qiladi. Dastlabki dastur ARM64 va x86/x86_64 protsessorlarini qo'llab-quvvatlaydi.

Yamoqning asl g'oyasi PaX RANDKSTACK loyihasiga tegishli. 2019 yilda Intel muhandisi Elena Reshetova ushbu g'oyani asosiy Linux yadrosiga kiritish uchun mos bo'lgan amalga oshirishni yaratishga harakat qildi. Keyinchalik tashabbus Kees Kuk tomonidan o'z zimmasiga oldi va u yadroning asosiy versiyasi uchun mos dasturni taqdim etdi. Yamalar 5.13 versiyasining bir qismi sifatida kiritilishi rejalashtirilgan. Rejim sukut bo'yicha o'chirib qo'yiladi. Uni yoqish uchun yadro buyruq qatori parametri “randomize_kstack_offset=on/off” va CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT sozlamasi taklif etiladi. Tartibni yoqish uchun qo'shimcha xarajatlar taxminan 1% unumdorlikni yo'qotish bilan baholanadi.

Taklif etilayotgan himoyaning mohiyati har bir tizim chaqiruvi uchun tasodifiy stek ofsetini tanlashdan iborat bo'lib, bu manzil ma'lumotlarini olgandan keyin ham xotirada stekning joylashishini aniqlashni qiyinlashtiradi, chunki keyingi tizim chaqiruvi stekning asosiy manzilini o'zgartiradi. PaX RANDKSTACK dasturidan farqli o'laroq, yadroga kiritish uchun taklif qilingan yamoqlarda randomizatsiya boshlang'ich bosqichda emas (cpu_current_top_of_stack) emas, balki pt_regs tuzilmasi o'rnatilgandan so'ng amalga oshiriladi, bu esa randomizatsiyalangan ofsetni aniqlash uchun ptrace asosidagi usullardan foydalanishni imkonsiz qiladi. uzoq muddatli tizim chaqiruvi paytida.

Manba: opennet.ru

a Izoh qo'shish