Projekt Openwall vydanie modulu jadra (Linux Kernel Runtime Guard) je určený na detekciu a blokovanie útokov a narušení integrity štruktúr jadra. Napríklad modul môže chrániť pred neoprávneným zmenením pracujúceho jadra a pokusmi o zmenu právomocí používateľských procesov (určenie aplikácie exploitov). Modul je vhodný na ochranu pred už známymi exploitmi pre jadro Linux (napríklad v situáciách, keď je problematické aktualizovať jadro v systéme), ako aj na čelenie exploitom pre ešte neznáme zraniteľnosti. Kód projektu pod licenciou GPLv2.
Medzi zmenami v novej verzii:
- Zmenilo sa pozicionovanie projektu LKRG, ktorý sa už nerozdeľuje na jednotlivé podsystémy na kontrolu integrity a určenie aplikácie exploitov, ale sa prezentuje ako celistvý produkt na detekciu útokov a rôznych narušení integrity;
- Zaručená kompatibilita s jadrom Linux od verzie 5.3 do 5.7, ako aj s jadrom zostaveným s agresívnymi optimalizáciami GCC, bez možnosti CONFIG_USB a CONFIG_STACKTRACE alebo s možnosťou CONFIG_UNWINDER_ORC, ako aj s jadrom, v ktorom chýbajú zachytiteľné LKRG funkcie, ak sa bez nich dá zaobísť;
- Pri zostavovaní bola zaručená kontrola niektorých povinných nastavení jadra CONFIG_* pre vytvorenie zmysluplných chybových hlásení namiesto nejasných problémov;
- Pridaná podpora pre režimy spánku (ACPI S3, suspend to RAM) a hlbokého spánku (S4, suspend to disk);
- Do Makefile bola pridaná podpora DKMS;
- Realizovaná experimentálna podpora 32-bitových platforiem ARM (testované na Raspberry Pi 3 Model B). Predtým dostupná podpora AArch64 (ARM64) bola doplnená o zabezpečenie kompatibility s doskou Raspberry Pi 4;
- Pridané nové spracovatele (hook), vrátane spracovateľa volania capable() na lepšie určenie exploitov manipulujúcich s ««, a nie identifikátormi procesov ();
- Navrhnutá nová logika určovania pokusov o vystúpenie z obmedzení priestorov mien (napríklad z kontajnerov Docker);
- Na systémoch x86-64 bola zabezpečená kontrola a aplikácia bitu SMAP (Supervisor Mode Access Prevention), určeného na blokovanie prístupu k dátam v používateľskom priestore z privilegovaného kódu vykonávaného na úrovni jadra. Ochrana SMEP (Supervisor Mode Execution Prevention) bola realizovaná skôr;
- V priebehu prevádzky bola zabezpečená lokalizácia nastavení LKRG na stránke pamäte, ktorá je zvyčajne dostupná iba na čítanie;
- Výstup do logov obsahuje informácie, ktoré môžu byť najviac užitočné pre útoky (napríklad informácie o adresách v jadre), a je obmedzený na režim ladenia (log_level=4 a vyššie), ktorý je predvolene vypnutý.
- Zvýšená škálovateľnosť databázy sledovania procesov - namiesto jedného RB stromu chráneného jedným spinlockom je nasadená hash tabuľa z 512 RB stromov chránených príslušnými 512 blokádami čítania-a-zápisu;
- Bola implementovaná a predvolene zapnutá funkcia, v ktorej sa kontrola integrity identifikátorov procesov často vykonáva len pre aktuálnu úlohu, ako aj voliteľne pre aktivované (prebudené) úlohy. Pre ostatné úlohy, ktoré sú v stave spánku alebo pracujú bez volania kontrolovaného v LKRG API jadra, sa kontrola vykonáva zriedkavejšie.
- Pridané nové sysctl a parametre modulu na jemné ladenie LKRG, ako aj dva sysctl na zjednodušené nastavenie výberom z pripravených súborov jemného nastavenia (profily);
- Predvolené nastavenia boli zmenené na dosiahnutie vyváženejšieho pomeru medzi rýchlosťou odhaľovania porušení a efektívnosťou reakcie na jednej strane a vplyvom na výkon a rizikom falošných poplachov na druhej strane;
- Jednotkový súbor systemd bol prepracovaný na načítanie modulu LKRG v ranom štádiu spúšťania (na vypnutie modulu môže byť použitý parameter príkazového riadku jadra);
Vzhľadom na navrhnuté optimalizácie v novej verzii sa zníženie výkonu pri použití LKRG 0.8 odhaduje na úrovni 2,5 % v predvolenom režime ('heavy') a 2 % v odľahčenom režime ('light').
V nedávno vykonanej účinnosti balíkov na odhaľovanie rootkitov LKRG najlepšie výsledky, bez falošných poplachov, odhalili 8 z 9 testovaných rootkitov, ktoré pracovali na úrovni jadra (boli odhalené rootkity Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit a Sutekh, ale Keysniffer, ktorý je modulom jadra s keyloggerom a nie rootkitom v pravom slova zmysle, bol vynechaný). Na porovnanie, balíky AIDE, OSSEC a Rootkit Hunter odhalili 2 rootkity z 9, zatiaľ čo Chkrootkit neodhalil ani jeden. LKRG však nepodporuje odhaľovanie rootkitov umiestnených v priestore používateľa, preto sa najvyššia účinnosť dosahuje pri použití kombinácie AIDE a LKRG, ktorá umožnila odhaliť 14 z 15 rootkitov všetkých typov.
Okrem toho je potrebné poznamenať, že vývojár distribúcie začal pripravil balíčky DKMS pre Debian, Whonix, Qubes a Kicksecure, pričom balík pre už bol aktualizovaný na verziu 0.8. Balíky s LKRG sú tiež dostupné v ruských a .
Kontrola integrity v LKRG sa vykonáva na základe porovnávania aktuálneho kódu a dát jadra a modulov, niektorých dôležitých štruktúr dát a nastavení CPU so zachovanými hashmi alebo kópiami príslušných oblastí pamäte, štruktúr dát alebo registrov. Kontroly sa aktivujú ako periodicky podľa časovača, tak aj pri zrealizovaní rôznych udalostí.
Určenie možného využitia exploitov a blokovanie útokov sa vykonáva už v štádiu pred poskytnutím prístupu k zdrojom jadrom (napríklad pred otvorením súboru), ale po získaní neoprávnených právností procesom (napríklad zmenou UID). Pri zistení neoprávnenej činnosti procesov sa predvolene vykonáva ich nútené ukončenie, čo postačuje na blokovanie mnohých exploitov.
Zdroj: opennet.ru
