Linux yadrosidagi zaifliklardan foydalanishdan himoya qilish uchun LKRG 0.8 modulining chiqarilishi

Openwall loyihasi chop yadro modulining chiqarilishi LKRG 0.8 (Linux Kernel Runtime Guard), hujumlar va yadro tuzilmalarining yaxlitligini buzishni aniqlash va blokirovka qilish uchun mo'ljallangan. Masalan, modul ishlayotgan yadrodagi ruxsatsiz o'zgarishlardan va foydalanuvchi jarayonlari ruxsatlarini o'zgartirishga urinishlardan himoya qilishi mumkin (eksloytlardan foydalanishni aniqlash). Modul Linux yadrosi uchun allaqachon ma'lum bo'lgan ekspluatatsiyalardan (masalan, tizimda yadroni yangilash qiyin bo'lgan holatlarda) himoyani tashkil qilish uchun ham, hali noma'lum zaifliklarning ekspluatatsiyasiga qarshi kurashish uchun ham mos keladi. Loyiha kodi tarqaladi GPLv2 ostida litsenziyalangan.

Yangi versiyadagi o'zgarishlar orasida:

  • LKRG loyihasining joylashuvi o'zgartirildi, u endi yaxlitlikni tekshirish va ekspluatatsiyalardan foydalanishni aniqlash uchun alohida quyi tizimlarga bo'linmaydi, balki hujumlar va turli xil yaxlitlik buzilishini aniqlash uchun to'liq mahsulot sifatida taqdim etiladi;
  • Moslik 5.3 dan 5.7 gacha boʻlgan Linux yadrolari, shuningdek, CONFIG_USB va CONFIG_STACKTRACE opsiyalarisiz yoki CONFIG_UNWINDER_ORC opsiyalarisiz agressiv GCC optimallashtirishlari bilan tuzilgan yadrolar bilan, shuningdek, agar ularda LKR funksiyasi boʻlmasa, yadrolar bilan taʼminlanadi. voz kechish;
  • Qurilishda noaniq buzilishlar o'rniga mazmunli xato xabarlarini yaratish uchun ba'zi majburiy CONFIG_* yadro sozlamalari tekshiriladi;
  • Kutish (ACPI S3, operativ xotirada to'xtatib turish) va uyqu (S4, diskda to'xtatib turish) rejimlari uchun qo'shimcha qo'llab-quvvatlash;
  • Makefile-ga qo'shilgan DKMS yordami;
  • 32-bitli ARM platformalarini eksperimental qo‘llab-quvvatlash amalga oshirildi (Raspberry Pi 3 Model B da sinovdan o‘tkazildi). Ilgari mavjud bo'lgan AArch64 (ARM64) qo'llab-quvvatlashi Raspberry Pi 4 platasi bilan moslikni ta'minlash uchun kengaytirildi;
  • Manipulyatsiya qiluvchi ekspluatatsiyalarni yaxshiroq aniqlash uchun qo'ng'iroqlarni qayta ishlash qobiliyatiga ega () kabi yangi ilgaklar qo'shildi.Qobiliyatlari", jarayon identifikatorlari emas (hisobga olish ma'lumotlari);
  • Nomlar maydoni cheklovlaridan qochishga urinishlarni aniqlash uchun yangi mantiq taklif qilindi (masalan, Docker konteynerlaridan);
  • X86-64 tizimlarida yadro darajasida ishlaydigan imtiyozli koddan foydalanuvchi ma'lumotlariga kirishni bloklash uchun mo'ljallangan SMAP (Supervisor Mode Access Prevention) biti tekshiriladi va qo'llaniladi. SMEP (Supervisor Mode Execution Prevention) himoyasi ilgari amalga oshirilgan;
  • Ish paytida LKRG sozlamalari odatda faqat o'qish uchun mo'ljallangan xotira sahifasiga joylashtiriladi;
  • Hujumlar uchun eng foydali bo'lishi mumkin bo'lgan ma'lumotlarni jurnalga yozish (masalan, yadrodagi manzillar haqidagi ma'lumotlar) sukut bo'yicha o'chirilgan disk raskadrovka rejimi (log_level=4 va undan yuqori) bilan cheklangan.
  • Jarayonni kuzatish ma'lumotlar bazasining miqyosi oshirildi - bitta spinlock bilan himoyalangan bitta RB daraxti o'rniga 512 ta o'qish va yozish bloklari bilan himoyalangan 512 ta RB daraxtining xesh jadvali qo'llaniladi;
  • Sukut bo'yicha rejim joriy qilingan va yoqilgan bo'lib, unda jarayon identifikatorlarining yaxlitligi ko'pincha faqat joriy vazifa uchun, shuningdek, faollashtirilgan (uyg'onish) vazifalar uchun tekshiriladi. Kutish holatida bo'lgan yoki LKRG tomonidan boshqariladigan yadro API-ga kirmasdan ishlaydigan boshqa vazifalar uchun tekshirish kamroq amalga oshiriladi.
  • LKRG-ni nozik sozlash uchun yangi sysctl va modul parametrlari, shuningdek, ishlab chiquvchilar tomonidan tayyorlangan nozik sozlash sozlamalari (profillari) to'plamidan tanlash orqali soddalashtirilgan konfiguratsiya uchun ikkita tizim parametrlari qo'shildi;
  • Bir tomondan, buzilishlarni aniqlash tezligi va javob samaradorligi, ikkinchi tomondan, ishlashga ta'siri va noto'g'ri ijobiy natijalar xavfi o'rtasidagi muvozanatli muvozanatga erishish uchun standart sozlamalar o'zgartirildi;
  • Systemd birligi fayli LKRG modulini yuklashning boshida yuklash uchun qayta ishlab chiqilgan (modulni o'chirish uchun yadro buyruq qatori opsiyasidan foydalanish mumkin);

Yangi versiyada taklif qilingan optimallashtirishlarni hisobga olgan holda, LKRG 0.8 dan foydalanishda ishlashning pasayishi standart rejimda ("og'ir") 2.5% va yorug'lik rejimida ("engil") 2% ga baholanadi.

Yaqinda o'tkazilgan tadqiqot LKRG rootkitlarini aniqlash paketlarining samaradorligi ko'rsatdi Yadro darajasida notoʻgʻri pozitivlarsiz ishlaydigan 8 ta sinovdan oʻtgan rootkicklardan 9 tasi aniqlangan eng yaxshi natijalar (Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit va Sutekh rootkitlari aniqlandi, lekin Keysniffer hisoblanadi. yadro moduli tom ma'noda rootkit emas, balki keylogger bilan o'tkazib yuborilgan). Taqqoslash uchun, AIDE, OSSEC va Rootkit Hunter paketlari 2 ta rootkitdan 9 tasini aniqladi, Chkrootkit esa hech birini aniqlamadi. Shu bilan birga, LKRG foydalanuvchi maydonida joylashgan rootkitlarni aniqlashni qo'llab-quvvatlamaydi, shuning uchun AIDE va ​​LKRG kombinatsiyasidan foydalanganda eng yuqori samaradorlikka erishiladi, bu barcha turdagi 14 ta rootkitdan 15 tasini aniqlash imkonini berdi.

Bundan tashqari, tarqatish ishlab chiqaruvchisi ekanligini ta'kidlash mumkin Whonix boshlandi shakllanishi Debian, Whonix, Qubes va Kicksecure uchun DKMS bilan tayyor paketlar va Arch Linux allaqachon 0.8 versiyasiga yangilangan. LKRG bilan paketlar rus tilida ham mavjud ALT Linux и AstraLinux.

LKRG-da yaxlitlikni tekshirish yadro va modullarning haqiqiy kodi va ma'lumotlarini, ba'zi muhim ma'lumotlar tuzilmalarini va protsessor sozlamalarini saqlangan xeshlar yoki tegishli xotira maydonlari, ma'lumotlar tuzilmalari yoki registrlarning nusxalari bilan taqqoslash orqali amalga oshiriladi. Tekshiruvlar vaqti-vaqti bilan taymer orqali ham, turli hodisalar yuz berganda ham faollashtiriladi.

Ekspluitlardan mumkin bo'lgan foydalanishni aniqlash va hujumlarni bloklash yadro resurslarga kirishni ta'minlashdan oldingi bosqichda (masalan, faylni ochishdan oldin), lekin jarayon ruxsat etilmagan ruxsatlarni olgandan keyin (masalan, UIDni o'zgartirish) amalga oshiriladi. Ruxsatsiz xatti-harakatlar aniqlanganda, jarayonlar sukut bo'yicha tugatishga majbur bo'ladi, bu ko'plab ekspluatatsiyalarni blokirovka qilish uchun etarli.

Manba: opennet.ru

a Izoh qo'shish