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

Projekti Openwall ka publikuar modulin e kernelit LKRG 1.0.0 (Linux Kernel Runtime Guard), i destinuar për verifikimin e integritetit të strukturave të kernelit dhe për identifikimin e përpjekjeve për t'i shfrytëzuar dobësitë në kernel. Kjo është e rëndësishme pasi 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 në kernelin Linux, ashtu edhe për përballimin e eksploiteve që përdorin dobësi ende të panjohura, nëse nuk aplikohen masa speciale për të anashkaluar LKRG. Mbrojtja bazohet në identifikimin e ndryshimeve të paautorizuara në kernelin e punës (verifikimi i integritetit) dhe ndjekjen e ndryshimeve të privilegjeve të proceseve të përdoruesve (identifikimi i aplikimit të eksploiteve).

Verifikimi i integritetit kryhet nĂ« bazĂ« tĂ« krahasimit tĂ« hashing-eve tĂ« llogaritur pĂ«r fushat mĂ« tĂ« rĂ«ndĂ«sishme tĂ« memories dhe strukturave tĂ« dhĂ«nash tĂ« kernelit, siç janĂ« IDT (Tabeli i PĂ«rshkrimit tĂ« NdĂ«rprerjeve), MSR, tabelat e thirrjeve sistme, tĂ« gjitha procedurat dhe funksionet, trajtuesit e ndĂ«rprerjeve, listat e moduleve tĂ« ngarkuara, pĂ«rmbajtja e seksionit “.text” tĂ« moduleve dhe atributet e proceseve. Procedura e verifikimit aktivizohet periodikisht pĂ«rmes njĂ« timeri ose kur ndodhin ngjarje tĂ« caktuara nĂ« kernel, pĂ«r shembull, gjatĂ« ekzekutimit tĂ« thirrjeve tĂ« sistemit setuid, setreuid, fork, exit, execve dhe do_init_module.

Identifikimi i mundshëm i aplikimit të eksploiteve dhe bllokimi i sulmeve kryhet në fazën para se kernel të japë qasje në burime (për shembull, para hapjes së skedarit), por pas marrjes së privilegjeve të paautorizuara nga procesi (për shembull, ndërrimi i UID). Kur identifikohet një sjellje e paautorizuar e proceseve, ato përfundojnë me forcë, që është e mjaftueshme për të bllokuar shumë eksploite. Shpenzimet nga funksionimi i modulit vlerësohen në 2-2.5%.

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

Ndër ndryshimet në versionin e ri:

  • Garantohet pĂ«rputhshmĂ«ria me bĂ«rthamat Linux deri nĂ« lĂ«shimin 6.17-rc4.
  • Duke u pĂ«rdorur me bĂ«rthamat qĂ« nga 6.13, Ă«shtĂ« ndalur kapja e thirrjeve tĂ« largĂ«ta override_creds() dhe revert_creds(), gjĂ« qĂ« kufizoi zbardhjen e sulmeve qĂ« rishkruajnĂ« treguesin cred. Kufizimet u pĂ«rpoqĂ«n tĂ« kompensoheshin me anĂ« tĂ« shtimit tĂ« kontrolleve pĂ«r mbivendosjen e treguesit cred nĂ« vende tĂ« tjera tĂ« bĂ«rthamĂ«s.
  • Ndaluar mbikĂ«qyrja e tepruar e kredencialeve pĂ«r tĂ« cilat nuk bĂ«het kontroll i integritetit. Ky ndryshim lehtĂ«soi reduktimin e bazĂ«s sĂ« kodit me rreth 1500 rreshta.
  • Shtuar mbĂ«shtetje pĂ«r mekanizmin e ri nĂ« bĂ«rthamĂ«n Linux 6.10 pĂ«r krijimin e skedave tĂ« pĂ«rkohshme nĂ« FS OverlayFS, duke pĂ«rdorur opsionin O_TMPFILE (ovl_tmpfile). Kjo mbĂ«shtetje e specifikuar Ă«shtĂ« e nevojshme pĂ«r tĂ« parandaluar falsifikimet qĂ« shfaqen kur pĂ«rdoren kontejnerĂ« tĂ« izoluar nĂ« sisteme me bĂ«rthama 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 instruksione IBT (indirect branch tracking), si dhe mbrojtje softuerike kCFI (kernel Control Flow Integrity) pĂ«r tĂ« bllokuar shkeljen e rendit normal tĂ« ekzekutimit (control flow) si rezultat i shfrytĂ«zimeve qĂ« ndryshojnĂ« treguesit e funksioneve tĂ« ruajtur nĂ« memorie.
  • PĂ«r lidhjen e shumĂ« handler-ave, Ă«shtĂ« pĂ«rdorur mekanizmi kprobes nĂ« vend tĂ« kretprobes, duke e thjeshtuar kodin e vendosjes sĂ« hook-ave dhe duke arritur njĂ« performancĂ« mĂ« tĂ« lartĂ«.
  • RivlerĂ«suar puna me bllokimet (lock) e tĂ« dhĂ«nave nĂ« bĂ«rthamĂ«, specifike pĂ«r procesin (per-task shadow data). Duke pĂ«rjashtuar bllokimet e tepĂ«rta, arritĂ«m tĂ« rritnim performancĂ«n e aksesit nĂ« kĂ«to tĂ« dhĂ«na.
  • Shkaktuar gabime qĂ« çuan nĂ« gjendje garash, probleme me verifikimin e integritetit dhe falsifikime.
  • PĂ«rmirĂ«suar mbĂ«shtetja pĂ«r ndĂ«rtimin me Clang.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster