Projekat Openwall je objavio izdanje modula LKRG 0.8 kernel (Linux Kernel Runtime Guard), dizajniran za otkrivanje i blokiranje napada y kršenje integriteta osnovnih struktura.
Modul pogodan je i za organiziranje zaštite od već poznatih eksploatacija za Linux kernel (na primjer, u situacijama kada je ažuriranje kernela na sistemu problematično), što se tiče suprotstavljanja iskorištavanju nepoznatih ranjivosti.
Šta je novo LKRG 0.8?
U ovoj novoj verziji pozicioniranje LKRG projekta je promijenjeno, šta trebasat nije podijeljen u zasebne podsisteme za provjeru integriteta i utvrđivanje upotrebe exploita, ali predstavljen je kao cjelovit proizvod identificirati napade i razna kršenja integriteta;
Što se tiče kompatibilnosti, ove nove verzije, možemo utvrditi da je kompatibilan s Linux kernelima od 5.3 do 5.7kao i jezgra sastavljena sa agresivnom GCC optimizacijom, bez opcija CONFIG_USB i CONFIG_STACKTRACE ili sa opcijom CONFIG_UNWINDER_ORCkao i sa kernelima gdje nema funkcija presretnutih od LKRG ako možete bez njih.
Pored eksperimentalna podrška za 32-bitne ARM platforme (testirano na Raspberry Pi 3 Model B), dok je za raniju dostupnu podršku za AArch64 (ARM64) dopunjena je kompatibilnošću s Raspberry Pi 4.
Sa druge strane, dodane su nove kuke, koji uključuju obrađivač poziva "hook ()" za bolje prepoznavanje ranjivosti kojima se manipulira "sposobnostima", umjesto identifikatora procesa.
Na x86-64 sistemima SMAP bit se provjerava i primjenjuje (Sprečavanje pristupa u režimu nadzora), ddizajniran za blokiranje pristupa podacima u korisničkom prostoru iz privilegiranog koda izvedenog na razini kernela. SMEP (Supervisor Mode Execution Prevention) zaštita je implementirana ranije.
Bilo je povećana skalabilnost baze podataka za praćenje procesa: umjesto jednog RB stabla zaštićenog spinlock-om, uključena je heš tablica od 512 RB stabala, zaštićena sa 512 brava za čitanje i pisanje;
Primijenjen je i omogućen zadani način rada, u kojem provjera integriteta identifikatora Obrada se često izvodi samo za trenutni zadatak, a po želji i za pokrenute zadatke (buđenje). Za ostale zadatke koji su u suspendiranom stanju ili koji funkcioniraju bez LKRG kontroliranog API poziva jezgra, provjera se izvodi rjeđe.
Pored Datoteka systemd jedinice je redizajnirana za učitavanje LKRG modula u ranoj fazi učitavanja (opcija jezgre naredbenog retka može se koristiti za onemogućavanje modula);
Tijekom kompajliranja provjerene su neke od obaveznih postavki jezgra CONFIG_ * kako bi se generirale značajne poruke o pogreškama, a ne opskurne greške.
Od ostalih promjena koje se ističu u ovoj novoj verziji:
- Dodata podrška za režime mirovanja (ACPI S3, Suspend to RAM) i Suspend (S4, Suspend to Disk).
- Dodata podrška za DKMS u datoteci Make.
- Predložena je nova logika za utvrđivanje pokušaja izlaska iz ograničenja prostora imena (na primjer, iz Dockerovih spremnika).
- U tom se procesu LKRG konfiguracija postavlja na stranicu memorije, obično samo za čitanje.
- Izlaz u zapisnike informacija koje bi mogle biti najkorisnije za napade (na primjer, informacije o adresi u jezgri) ograničen je načinom otklanjanja pogrešaka (log_level = 4 i više), koji je onemogućen prema zadanim postavkama.
- Novi sysctl i parametri modula dodani su za podešavanje LKRG-a, kao i dva sysctl-a za pojednostavljenu konfiguraciju izborom između profila koje su pripremili programeri.
- Zadane postavke se mijenjaju kako bi se postigla uravnoteženija ravnoteža između brzine otkrivanja kršenja i efikasnosti reakcije, s jedne strane, i utjecaja na produktivnost i rizika od lažnih pozitivnih rezultata s druge strane.
- Prema optimizacijama predloženim u novoj verziji, smanjenje performansi prilikom primjene LKRG 0.8 procjenjuje se na 2.5% u zadanom načinu rada ("težak") i 2% u laganom načinu rada ("lagani").
Ako želite znati više o tome, možete se posavjetovati detalje ovdje.