Projekt Openwall je objavio izdanje modula jezgre LKRG 0.8 (Linux Kernel Runtime Guard), dizajniran za otkrivanje i blokiranje napada y kršenja integriteta temeljnih struktura.
Modul prikladan je i za organiziranje zaštite od već poznatih izraba za Linux kernel (na primjer, u situacijama kada je ažuriranje kernela na sustavu problematično), što se tiče suprotstavljanja iskorištavanju nepoznatih ranjivosti.
Što je novo LKRG 0.8?
U ovoj novoj verziji promijenjeno je pozicioniranje projekta LKRG, štosat nije podijeljen u zasebne podsustave 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 jezgre sastavljene s agresivnom GCC optimizacijom, bez mogućnosti CONFIG_USB i CONFIG_STACKTRACE ili s opcijom CONFIG_UNWINDER_ORCkao i sa kernelima gdje nema funkcija presretnutih od LKRG ako možete bez njih.
Uz to 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) nadopunjuje se kompatibilnošću s Raspberry Pi 4.
Štoviše, 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 sustavima SMAP bit se provjerava i primjenjuje (Sprečavanje pristupa u nadzornom načinu), ddizajniran za blokiranje pristupa podacima u korisničkom prostoru iz privilegiranog koda izvedenog na razini jezgre. SMEP (Supervisor Mode Execution Prevention) zaštita implementirana je ranije.
Bilo je povećana skalabilnost baze podataka za praćenje procesa: umjesto jednog RB stabla zaštićenog spinlock-om, uključena je hash tablica od 512 RB stabala, zaštićena s 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.
Uz to Datoteka systemd jedinica je redizajnirana za učitavanje LKRG modula u ranoj fazi učitavanja (opcija naredbenog retka jezgre može se koristiti za onemogućavanje modula);
Tijekom kompilacije provjerene su neke od obaveznih postavki jezgre CONFIG_ * kako bi se generirale značajne poruke pogreške, a ne nejasne greške.
Od ostalih promjena koje se ističu u ovoj novoj verziji:
- Dodana podrška za režime čekanja (ACPI S3, Suspend to RAM) i Suspend (S4, Suspend to Disk).
- Dodana podrška za DKMS u datoteci Makefile.
- Predlaže se 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 mogu biti najkorisnije za napade (na primjer, informacije o adresi u jezgri) ograničen je načinom otklanjanja pogrešaka (log_level = 4 i novijim), koji je onemogućen prema zadanim postavkama.
- Novi parametri sysctl i modula dodani su za podešavanje LKRG, kao i dva sysctl za pojednostavljenu konfiguraciju odabirom između profila koje su pripremili programeri.
- Zadane postavke mijenjaju se kako bi se postigla uravnoteženija ravnoteža između brzine otkrivanja kršenja i učinkovitosti 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.