Projekt Openwall vydal vydanie modulu jadra LKRG 0.8 (Linux Kernel Runtime Guard), určené na detekciu a blokovanie útokov y porušenie integrity základných štruktúr.
Modul je vhodný na organizáciu ochrany proti už známym zneužitiam pre linuxové jadro (napríklad v situáciách, keď je aktualizácia jadra v systéme problematická), pokiaľ ide o zneužitie neznámej zraniteľnosti.
Čo je nové LKRG 0.8?
V tejto novej verzii umiestnenie projektu LKRG sa zmenilo, čohodina nie je rozdelená do samostatných subsystémov overiť integritu a určiť využitie zneužitia, ale predstavuje sa ako kompletný produkt identifikovať útoky a rôzne porušenia integrity;
Pokiaľ ide o kompatibilitu, táto nová verzia môžeme zistiť, že je kompatibilný s linuxovými kernelami od 5.3 do 5.7rovnako ako jadrá skompilované s agresívnou optimalizáciou GCC bez týchto možností CONFIG_USB a CONFIG_STACKTRACE alebo s opciou CONFIG_UNWINDER_ORCrovnako ako pri jadrách, kde LKRG nezachytáva žiadne funkcie, pokiaľ sa zaobídete bez nich.
Okrem pridania experimentálna podpora pre 32-bitové platformy ARM (testované na Raspberry Pi 3 Model B), zatiaľ čo pre staršiu dostupnú podporu pre AArch64 (ARM64) je doplnený kompatibilitou s Raspberry Pi 4.
Okrem toho, boli pridané nové háčiky, ktoré zahŕňajú obslužnú rutinu hovoru „hook ()“ na lepšiu identifikáciu zraniteľností, ktoré sú manipulované „schopnosťami“, skôr ako identifikátory procesov.
V systémoch x86-64 sa kontroluje a aplikuje bit SMAP (Zabránenie prístupu v režime supervízora), durčené na blokovanie prístupu k údajom v užívateľskom priestore z privilegovaného kódu spusteného na úrovni jadra. Ochrana SMEP (Supervisor Mode Execution Prevention) bola implementovaná skôr.
Bolo to zvýšená škálovateľnosť databázy na sledovanie procesov: namiesto jedného RB stromu chráneného spinlockom je použitá hašovacia tabuľka 512 RB stromov chránená 512 zámkami na čítanie a zápis;
Je implementovaný a povolený predvolený režimv ktorom kontrola integrity identifikátorov Spracovanie sa často vykonáva iba pre aktuálnu úlohu a voliteľne aj pre spustené úlohy (prebudenie). Pri iných úlohách, ktoré sú v pozastavenom stave alebo ktoré fungujú bez volania API jadra riadeného LKRG, sa overovanie vykonáva menej často.
Navyše k súbor systémovej jednotky bol prepracovaný načítať modul LKRG v ranom štádiu načítania (na deaktiváciu modulu je možné použiť voľbu príkazového riadku jadra);
Počas kompilácie boli skontrolované niektoré z povinných nastavení jadra CONFIG_ *, aby sa skôr vygenerovali zmysluplné chybové správy než aby sa neuvádzali skryté chyby.
Z ďalších zmien, ktoré vynikajú v tejto novej verzii:
- Pridaná podpora pre pohotovostné režimy (ACPI S3, Suspend to RAM) a Suspend (S4, Suspend to Disk).
- Pridaná podpora pre DKMS v súbore Makefile.
- Navrhuje sa nová logika na určovanie pokusov dostať sa z obmedzení menného priestoru (napríklad z kontajnerov Docker).
- V tomto procese je konfigurácia LKRG umiestnená na stránku pamäte, zvyčajne iba na čítanie.
- Výstup do protokolov informácií, ktoré môžu byť najužitočnejšie pre útoky (napríklad informácie o adrese v jadre), je obmedzený režimom ladenia (log_level = 4 a vyšší), ktorý je predvolene zakázaný.
- Boli pridané nové parametre sysctl a modulu pre vyladenie LKRG, ako aj dva sysctl pre zjednodušenú konfiguráciu výberom z profilov pripravených vývojármi.
- Predvolené nastavenia sa menia, aby sa dosiahla vyváženejšia rovnováha medzi rýchlosťou detekcie porušenia a účinnosťou reakcie na jednej strane a dopadom na produktivitu a rizikom falošných poplachov na druhej strane.
- Na základe optimalizácií navrhovaných v novej verzii sa pokles výkonu pri použití LKRG 0.8 odhaduje na 2.5% v predvolenom režime („ťažký“) a 2% v ľahkom režime („ľahký“).
Ak sa o tom chcete dozvedieť viac, môžete sa poradiť podrobnosti tu.