Линуксийн цөмийн сул талыг ашиглахаас хамгаалахын тулд LKRG 0.8 модулийг гаргасан.

Openwall төсөл Нийтлэгдсэн цөмийн модулийн хувилбар LKRG 0.8 (Linux Kernel Runtime Guard) нь цөмийн бүтцийн нэгдмэл байдлын зөрчлийг илрүүлэх, хаах зорилготой юм. Жишээлбэл, модуль нь ажиллаж байгаа цөмд зөвшөөрөлгүй өөрчлөлт оруулах, хэрэглэгчийн процессын зөвшөөрлийг өөрчлөх оролдлого хийхээс хамгаалж чадна (мөлжилтийн ашиглалтыг илрүүлэх). Энэ модуль нь Линуксийн цөмийн аль хэдийн мэдэгдэж байсан мөлжлөгөөс хамгаалах ажлыг зохион байгуулахад (жишээлбэл, систем дэх цөмийг шинэчлэхэд хэцүү нөхцөлд), мөн үл мэдэгдэх эмзэг байдлын эсрэг ашиглахад тохиромжтой. Төслийн код тараасан GPLv2 дагуу лицензтэй.

Шинэ хувилбарт орсон өөрчлөлтүүдийн дунд:

  • LKRG төслийн байршлыг өөрчилсөн бөгөөд энэ нь бүрэн бүтэн байдлыг шалгах, мөлжлөгийн ашиглалтыг тодорхойлох тусдаа дэд системд хуваагдахаа больсон, харин халдлага, янз бүрийн бүрэн бүтэн байдлын зөрчлийг илрүүлэх бүрэн бүтээгдэхүүн болгон танилцуулсан;
  • CONFIG_USB болон CONFIG_STACKTRACE сонголтгүй эсвэл CONFIG_UNWINDER_ORC сонголтгүйгээр, 5.3-аас 5.7 хүртэлх Linux цөмүүд, түүнчлэн GCC-ийн түрэмгий оновчлолоор эмхэтгэсэн цөмүүд, түүнчлэн LKR функцгүй бол цөмүүдтэй нийцтэй байна. татгалзах;
  • Барилга барихдаа тодорхой бус эвдрэлийн оронд утга учиртай алдааны мессеж үүсгэхийн тулд зарим зайлшгүй CONFIG_* цөмийн тохиргоог шалгадаг;
  • Зогсолт (ACPI S3, RAM-д түдгэлзүүлэх) болон унтах (S4, диск рүү түр зогсоох) горимуудын дэмжлэг нэмэгдсэн;
  • Makefile-д DKMS дэмжлэг нэмсэн;
  • 32 битийн ARM платформуудын туршилтын дэмжлэгийг хэрэгжүүлсэн (Raspberry Pi 3 Model B дээр туршиж үзсэн). Өмнө нь ашиглагдаж байсан AArch64 (ARM64) дэмжлэгийг Raspberry Pi 4 хавтантай нийцүүлэхийн тулд өргөжүүлсэн;
  • Шинэ дэгээнүүд нэмэгдсэн бөгөөд үүнд "хөгждөг" мөлжлөгийг илүү сайн тодорхойлох чадвартай () дуудлагын зохицуулагч орно.Боломжууд", боловсруулах ID биш (итгэмжлэлүүд);
  • Нэрийн зайны хязгаарлалтаас зайлсхийх оролдлогыг илрүүлэх шинэ логикийг санал болгосон (жишээлбэл, Docker контейнерээс);
  • X86-64 системүүд дээр цөмийн түвшинд ажиллаж байгаа давуу эрхтэй кодоос хэрэглэгчийн зайны өгөгдөлд хандах хандалтыг хаах зорилготой SMAP (Supervisor Mode Access Prevention) битийг шалгаж, ашигладаг. SMEP (Supervisor Mode Execution Prevention) хамгаалалтыг өмнө нь хэрэгжүүлсэн;
  • Ашиглалтын явцад LKRG тохиргоог ихэвчлэн зөвхөн унших боломжтой санах ойн хуудсанд байрлуулдаг;
  • Довтолгоонд хамгийн хэрэгтэй байж болох мэдээллийг бүртгэх (жишээлбэл, цөм дэх хаягуудын тухай мэдээлэл) нь дибаг хийх горимоор хязгаарлагддаг (log_level=4 ба түүнээс дээш), энэ нь анхдагчаар идэвхгүй байдаг.
  • Процессыг хянах мэдээллийн сангийн өргөтгөх чадварыг нэмэгдүүлсэн - нэг spinlock-оор хамгаалагдсан нэг RB модны оронд 512 унших, бичих цоожоор хамгаалагдсан 512 RB модны хэш хүснэгтийг ашигласан;
  • Процессын тодорхойлогчдын бүрэн бүтэн байдлыг зөвхөн одоогийн ажил, мөн идэвхжүүлсэн (сэрээх) даалгаврын хувьд ихэвчлэн шалгадаг горимыг хэрэгжүүлж, идэвхжүүлсэн. Унтах горимд байгаа эсвэл LKRG-ийн удирддаг цөмийн API-д хандахгүйгээр ажиллаж байгаа бусад ажлуудын хувьд шалгалтыг бага хийдэг.
  • LKRG-г нарийн тааруулах шинэ sysctl болон модулийн параметрүүдийг нэмсэн, түүнчлэн хөгжүүлэгчдийн бэлтгэсэн нарийн тааруулах тохиргооны багцаас (профайл) сонгох замаар хялбаршуулсан тохиргоонд зориулсан хоёр sysctl нэмэгдсэн;
  • Нэг талаас зөрчлийг илрүүлэх хурд ба хариу арга хэмжээний үр нөлөө, нөгөө талаас гүйцэтгэлд үзүүлэх нөлөөлөл, хуурамч эерэг үр дүн гарах эрсдэл хоорондын тэнцвэрт байдлыг хангах үүднээс үндсэн тохиргоог өөрчилсөн;
  • Системийн нэгжийн файлыг LKRG модулийг ачаалах эхэн үед ачаалахаар шинэчилсэн (модульийг идэвхгүй болгохын тулд цөмийн командын мөрийн сонголтыг ашиглаж болно);

Шинэ хувилбарт санал болгож буй оновчлолыг харгалзан LKRG 0.8-ийг ашиглах үед гүйцэтгэлийн бууралтыг анхдагч горимд ("хүнд") 2.5%, гэрлийн горимд ("хөнгөн") 2% гэж тооцсон.

Саяхан зохион байгуулсан Судалгаа LKRG rootkit-ийг илрүүлэх багцуудын үр нөлөө үзүүлсэн Хамгийн сайн үр дүн нь цөмийн түвшинд ажиллаж байгаа туршилтын 8 rootkit-ийн 9-ыг нь (Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit болон Sutekh rootkits) тодорхойлсон боловч Keysniffernel юм. модуль, шууд утгаараа rootkit биш харин keylogger-ээр алдсан байсан). Харьцуулбал, AIDE, OSSEC болон Rootkit Hunter багцууд 2 rootkit-ээс 9-ыг нь илрүүлсэн бол Chkrootkit нэгийг ч илрүүлээгүй. Үүний зэрэгцээ, LKRG нь хэрэглэгчийн орон зайд байрлах rootkit-ийг илрүүлэхийг дэмждэггүй тул AIDE болон LKRG-ийн хослолыг ашиглахад хамгийн их үр дүнд хүрдэг бөгөөд энэ нь бүх төрлийн 14 руткитийн 15-ийг тодорхойлох боломжтой болсон.

Нэмж дурдахад түгээлтийн хөгжүүлэгч гэдгийг тэмдэглэж болно Whonix эхэлсэн хэлбэржүүлэх Debian, Whonix, Qubes, Kicksecure-д зориулсан DKMS-тэй бэлэн багцууд, мөн багцууд Arch Linux аль хэдийн 0.8 хувилбар руу шинэчлэгдсэн. LKRG-тэй багцуудыг орос хэл дээр бас авах боломжтой ALT Линукс и AstraLinux.

LKRG дахь бүрэн бүтэн байдлыг шалгах нь цөмийн болон модулиудын бодит код, өгөгдөл, зарим чухал өгөгдлийн бүтэц, CPU-ийн тохиргоог хадгалагдсан хэшүүд эсвэл холбогдох санах ойн хэсэг, өгөгдлийн бүтэц эсвэл бүртгэлийн хуулбартай харьцуулах замаар хийгддэг. Шалгалтыг таймер болон янз бүрийн үйл явдал тохиолдоход үе үе идэвхжүүлдэг.

Ашиглалтын боломжит хэрэглээг тодорхойлох, халдлагыг блоклох нь цөм нь нөөцөд хандах боломжийг олгохоос өмнөх үе шатанд (жишээлбэл, файл нээхээс өмнө), гэхдээ процесс нь зөвшөөрөлгүй зөвшөөрөл авсны дараа (жишээлбэл, UID-г өөрчлөх) хийгддэг. Зөвшөөрөгдөөгүй үйлдэл илэрсэн тохиолдолд процессууд нь анхдагчаар цуцлагдахаас өөр аргагүй болдог бөгөөд энэ нь олон мөлжлөгийг хаахад хангалттай юм.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх