Dalja e LKRG 1.0.0 për mbrojtjen nga shfrytëzimi i dobësive në kernelin Linux

Projekti Openwall publikoi modulin e kernelit LKRG 1.0.0 (Linux Kernel Runtime Guard), i dedikuar për kontrollin e integritetit të strukturave të kernelit dhe identifikimin e përpjekjeve për shfrytëzimin e dobësive në kernel. Vërehet se caktimi i numrit të versionit 1.0.0 shënon arritjen e një gjendjeje të pjekur për projektin. Kodi i projektit shpërndahet nën licencën GPLv2.

Moduli është i përshtatshëm si për mbrojtjen nga sulmet, manipulimin e dobësive të njohura tashmë në kernelin Linux, ashtu edhe për të kundërshtuar eksploitat që përdorin dobësi ende të panjohura, nëse nuk aplikohen masa speciale për të kaluar LKRG. Mbrojtja bazohet në identifikimin e ndryshimeve të paautorizuara në kernelin e punës (kontrolli i integritetit) dhe ndjekjen e ndryshimeve të autorizimeve të proceseve të përdoruesit (identifikimi i përdorimit të eksploitateve).

Kontrolli i integritetit kryhet në bazë të krahasimit të hash-eve të llogaritura për zonat më të rëndësishme të memories dhe strukturave të të dhënave të kernelit, si IDT (Tabela e Pëshkrimit të Ndërprerjeve), MSR, tabelat e thirrjeve sistemore, të gjitha procedurat dhe funksionet, përpunuesit e ndërprerjeve, listat e moduleve të ngarkuara, përmbajtja e seksionit ".text" të moduleve dhe atributet e proceseve. Procedura e kontrollit aktivizohet periodikisht nga një timer ose kur ndodhin ngjarje të caktuara në kernel, për shembull, gjatë ekzekutimit të thirrjeve sistemore setuid, setreuid, fork, exit, execve dhe do_init_module.

Identifikimi i mundshëm i përdorimit të eksploitateve dhe bllokimi i sulmeve ndodh në fazën para se kernel të ofrojë akses në burime (për shembull, para se të hapë një skedare), por pas marrjes së autorizimeve të paautorizuara nga procesi (për shembull, ndërrimi i UID). Kur identifikohet një sjellje e paautorizuar e proceseve, ato mbyllen me forcë, gjë që është e mjaftueshme për të bllokuar shumë eksploita. Ngarkesat nga funksionimi i modulit përcaktohen të jenë 2-2.5%.

Përkrahja e funksionimit në sisteme me arkitekturë x86-64, AArch64 (ARM64), ARM32 dhe x86. Funksionimi i LKRG 1.0.0 është testuar me kernel nga distribucione të ndryshme, duke filluar nga kernel 3.10 nga RHEL/CentOS 7 dhe duke përfunduar me 6.17-rc4 nga repository në të cilin po përgatitet lëshimi i Fedora 44. Paketat janë të disponueshme për distribucione si ALT Linux, Arch Linux, Astra Linux, Gentoo, Guix, NixOS, Rocky Linux, Whonix, Yocto dhe OpenBMC. Paketat e grumbulluara për Rocky Linux mund të përdoren në RHEL 8/9 dhe distribucione të deriva, si AlmaLinux 8/9, ndërsa paketat për Whonix në Debian dhe Ubuntu.

Ndër ndryshimet në versionin e ri:

  • Sigurohet pĂ«rputhshmĂ«ri me kernelat e Linux deri nĂ« lĂ«shimin 6.17-rc4.
  • Me pĂ«rdorimin e kernelĂ«ve qĂ« fillojnĂ« nga 6.13, Ă«shtĂ« ndalur kapja e thirrjeve tĂ« largĂ«ta override_creds() dhe revert_creds(), gjĂ« qĂ« ka kufizuar identifikimin e sulmeve qĂ« ri-marrin treguesin cred. Kufizimet u pĂ«rpoqĂ«n tĂ« kompensoheshin duke shtuar kontroll tĂ« ri-ndĂ«rprerjes sĂ« treguesit cred nĂ« vende tĂ« tjera tĂ« kernelit.
  • ËshtĂ« ndaluar ndjekja e tepĂ«rt e kredencialeve pĂ«r tĂ« cilat nuk kryhet kontrolli i integritetit. Ndryshimi lejoi tkurrjen e bazĂ«s sĂ« kodit me rreth 1500 rreshta.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r mekanizmin e ri tĂ« krijimit tĂ« skedarĂ«ve tĂ« pĂ«rkohshĂ«m nĂ« FS OverlayFS nĂ« kernelin Linux 6.10, duke pĂ«rdorur opsionin O_TMPFILE (ovl_tmpfile). Kjo mbĂ«shtetje Ă«shtĂ« e nevojshme pĂ«r tĂ« parandaluar alarmin e rremĂ« qĂ« shfaqet gjatĂ« pĂ«rdorimit tĂ« kontejnerĂ«ve tĂ« izoluar nĂ« sisteme me kernel 6.10-6.12.
  • PĂ«r sistemet x86_64 Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r teknologjinĂ« Intel CET (Control-flow Enforcement Technology) pĂ«r mbrojtjen e kodit ekzekutiv duke pĂ«rdorur instruksionet IBT (ndĂ«rprerja e degĂ«ve indirekte), si dhe mbrojtjen programore kCFI (kernel Control Flow Integrity) pĂ«r bllokimin e shkeljes sĂ« rendit normal tĂ« ekzekutimit (control flow) si rezultat i pĂ«rdorimit tĂ« eksploitateve qĂ« ndryshojnĂ« treguesit e funksioneve tĂ« ruajtur nĂ« memorie.
  • PĂ«r tĂ« lidhur shumĂ« trajtues, Ă«shtĂ« pĂ«rdorur mekanizmi kprobes nĂ« vend tĂ« kretprobes, duke e thjeshtuar kodin e vendosjes sĂ« hook-Ă«ve dhe duke lejuar arritjen e performancĂ«s mĂ« tĂ« lartĂ«.
  • Puna me bllokimet (lock) e tĂ« dhĂ«nave nĂ« kernel qĂ« janĂ« specifike pĂ«r procesin (per-task shadow data) Ă«shtĂ« pĂ«rmirĂ«suar. Duke pĂ«rjashtuar bllokimet e panevojshme, Ă«shtĂ« arritur njĂ« rritje e performancĂ«s nĂ« trajtimin e kĂ«tyre tĂ« dhĂ«nave.
  • JanĂ« pĂ«rmirĂ«suar problemet qĂ« çonin nĂ« gjendje garuese, probleme me kontrollin e integritetit dhe alarmin e rremĂ«.
  • ËshtĂ« pĂ«rmirĂ«suar mbĂ«shtetja pĂ«r grumbullimin me pĂ«rdorimin e Clang.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster