Lëshimi i modulit LKRG 0.8 për mbrojtjen nga shfrytëzimi i dobësive në bërthamën Linux

Projekti Openwall publikoi publikimi i modulit të kernel-it LKRG 0.8 (Linux Kernel Runtime Guard), i destinuar për zbuluar dhe bllokuar sulmet dhe shkeljet e integritetit të strukturave të bërthamës. Për shembull, moduli mund të mbrojë nga ndryshimet e paautorizuara në bërthamën që funksionon dhe përpjekjet për të ndryshuar autorizimet e proceseve të përdoruesit (identifikimi i përdorimit të eksploitëve). Moduli është i përshtatshëm si për organizimin e mbrojtjes nga eksploitët tashmë të njohur për bërthamën Linux (për shembull, në situatat kur në sistem është problematike të përditësohet bërthama), ashtu si dhe për t'u përballur me eksploitët për dobësi ende të panjohura. Kod i projektit distribuohet nën licencën GPLv2.

Ndër ndryshimet në versionin e ri:

  • Pozicionimi i projektit LKRG është ndryshuar, tani ai nuk ndahet në nën-sisteme të veçanta për kontrollin e integritetit dhe identifikimin e përdorimit të eksploitëve, por prezantohet si një produkt i integruar për identifikimin e sulmeve dhe shkeljeve të ndryshme të integritetit;
  • Sigurohet përputhshmëria me bërthama Linux nga 5.3 në 5.7, si dhe me bërthama të ndërtuara me optimizime agresive GCC, pa opsionet CONFIG_USB dhe CONFIG_STACKTRACE ose me opsionin CONFIG_UNWINDER_ORC, si dhe me bërthama, në të cilat mungojnë funksionet e LKRG që mund të kapen, nëse pa to mund të bëhet;
  • Gjatë ndërtimit, sigurohet kontrolli i disa cilësimeve të detyrueshme të bërthamës CONFIG_* për formimin e mesazheve të kuptueshme për ndihmën në vend të dështimeve të paqarta;
  • Shtuar mbështetje për modalitete të pritur (ACPI S3, suspend to RAM) dhe gjumin (S4, suspend to disk);
  • Shtuar mbështetje në Makefile për DKMS;
  • Implementuar mbështetje eksperimentale për platformat 32-bit ARM (testuar në Raspberry Pi 3 Model B). Mbështetja e mëparshme AArch64 (ARM64) është kompletuar me ofrimin e përputhshmërisë me pllakën Raspberry Pi 4;
  • Shtuar trajtues të rinj (hook), përfshirë trajtuesin e thirrjes capable() për përcaktimin më të mirë të eksploitëve që manipulojnë "capabilities", dhe jo identifikuesit e proceseve (credentials);
  • Propozuar një logjikë të re për të përcaktuar përpjekjet për të dalë nga kufizimet e hapësirave të emrave (për shembull, nga kontejnerët Docker);
  • Në sistemet x86-64, sigurohet kontrolli dhe aplikimi i bitit SMAP (Supervisor Mode Access Prevention), i destinuar për të bllokuar qasjen në të dhënat në hapësirën e përdoruesit nga kodi me privilegje që ekzekutohet në nivel bërthame. Mbrojtja SMEP (Supervisor Mode Execution Prevention) është realizuar më herët;
  • Gjatë funksionimit, sigurohet vendosja e cilësimeve të LKRG në faqen e memorie, që zakonisht është e vetëm për lexim;
  • Shkarkimi në log të informacionit që mund të jetë më i dobishëm për sulmet (për shembull, informacione mbi adresat në bërthamë), kufizohet në modalitetin e marketingut (log_level=4 dhe më lart), i çaktivizuar nga e drejta e parë.
  • Rritet shkallëzimi i DB-së për ndjekjen e proceseve - në vend të një pylli RB të mbrojtur nga një spinlock, ndiqet një tabelë hesh nga 512 pemëve RB, të mbrojtura përkatësisht nga 512 bllokime të leximit-shkrimit;
  • Implementuar dhe aktivizuar si parazgjedhje një modalitet, në të cilin kontrolli i integritetit të identifikuesve të procesit bëhet shpesh vetëm për detyrën aktuale, si dhe opsional për detyrat që aktivizohen (zbresin). Për detyrat e tjera, të cilat janë në gjendje gjumi ose që punojnë pa ndërhyrje nga API e kontrolluar në LKRG të bërthamës, kontrolli bëhet më pak shpesh.
  • Shtuar sysctl dhe parametra të rinj të modulit për rregullimin e hollësishëm të LKRG, si dhe dy sysctl për lehtësimin e rregullimit përmes zgjedhjes nga grupe të përgatitura të cilësimeve të hollësishme (profiles);
  • Cilësimet e parazgjedhura janë ndryshuar për të arritur një ekuilibër më të arsyeshëm ndërmjet shpërthimit në identifikimin e shkeljeve dhe efikasiteti i reagimit nga njëra anë, dhe ndikimi në performancë dhe rreziku i alarmave të rreme nga ana tjetër;
  • Skedari unit i systemd është përshtatur për ngarkimin e modulit LKRG në një fazë të hershme ngarkimi (për çaktivizimin e modulit mund të përdoret një parametr në linjën e komandës së bërthamës);

Duke marrë parasysh optimizimet e propozuara në këtë publikim, rënia e performancës gjatë përdorimit të LKRG 0.8 vlerësohet në rreth 2.5% në modalitetin e parazgjedhur ("heavy") dhe 2% në modalitetin e lehtësuar ("light").

Në një studim të fundit studim efektivitetit të paketave për identifikimin e rrootkit-eve LKRG tregoi rezultatet më të mira, pa alarmet e rreme, identifikuan 8 nga 9 rrootkit-e të testuar që punonin në nivel bërthame (u identifikuan rrootkit-e si Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit dhe Sutekh, por u kalua Keysniffer që është një modul bërthame me këllëf dhe jo një rrootkit në kuptimin e drejtpërdrejtë). Për krahasim, paketat AIDE, OSSEC dhe Rootkit Hunter identifikuan 2 rrootkit-e nga 9, ndërsa Chkrootkit nuk identifikoi asnjë. Në këtë rast, LKRG nuk mbështet identifikimin e rrootkit-eve që janë vendosur në hapësirën e përdoruesit, kështu që efikasiteti më i madh arrihet duke përdorur një kombinim të AIDE dhe LKRG, i cili lejon identifikimin e 14 nga 15 rrootkit-eve të të gjitha llojeve.

Gjithashtu mund të theksohet se zhvilluesi i distribucionit Whonix fillova formimi paketesh të gatshëm me DKMS për Debian, Whonix, Qubes dhe Kicksecure, dhe paketa për Arch Linux është përditësuar në versionin 0.8. Paketat me LKRG gjithashtu janë në dispozicion në rusisht ALT Linux dhe Astra Linux.

Kontrolli i integritetit në LKRG bëhet duke krahasuar kodin dhe të dhënat aktuale të bërthamës dhe moduleve, disa struktura të rëndësishme të të dhënave dhe konfigurimeve të CPU me hash-et e ruajtura ose kopjet përkatëse të hapësirave të memories, strukturave të të dhënave ose regjistrave. Kontrollimet aktivizohen si periodikisht nga një timer, ashtu edhe gjatë ngjarjeve të ndryshme.

Përcaktimi i mundësive për përdorimin e exploiteve dhe bllokimi i sulmeve bëhet në fazën para se bërthama të ofrojë akses në burimet (p.sh., para hapjes së një skedari), por pas marrjes së autorizimeve të paautorizuara nga procesi (p.sh., ndryshimi i UID). Kur e gjen sjelljen e paautorizuar të proceseve, për default, ato përfundojnë, gjë që është e mjaftueshme për të bllokuar shumë exploite.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster