El Proyecto Openwall vydal verzi jádra modulu LKRG 0.8 (Linux Kernel Runtime Guard), určené k detekci a blokování útoků y narušení integrity základních struktur.
Modul je vhodný jak pro organizaci ochrany proti již známým exploitům pro linuxové jádro (například v situacích, kdy je aktualizace jádra v systému problematická), pokud jde o zneužití neznámých zranitelností.
Co je nového LKRG 0.8?
V této nové verzi umístění projektu LKRG bylo změněno, cohodina není rozdělena do samostatných subsystémů ověřit integritu a určit využití exploitů, ale je prezentován jako kompletní produkt identifikovat útoky a různá porušení integrity;
Pokud jde o kompatibilitu, tato nová verze zjistíme, že je kompatibilní s linuxovými jádry od 5.3 do 5.7stejně jako jádra kompilovaná s agresivními optimalizacemi GCC, bez těchto možností CONFIG_USB a CONFIG_STACKTRACE nebo s možností CONFIG_UNWINDER_ORCstejně jako s jádry, kde neexistují žádné funkce zachycené LKRG, pokud se obejdete bez nich.
Navíc k experimentální podpora pro 32bitové platformy ARM (testováno na Raspberry Pi 3 Model B), zatímco pro dřívější dostupnou podporu pro AArch64 (ARM64) je doplněn kompatibilitou s Raspberry Pi 4.
Kromě toho, byly přidány nové háčky, které obsahují obslužnou rutinu volání „hook ()“ pro lepší identifikaci zranitelných míst, které jsou manipulovány „schopnostmi“, spíše než identifikátory procesu.
V systémech x86-64 je bit SMAP zkontrolován a použit (Zamezení přístupu v režimu správce), dnavržen tak, aby blokoval přístup k datům v uživatelském prostoru z privilegovaného kódu spuštěného na úrovni jádra. Ochrana SMEP (Supervisor Mode Execution Prevention) byla implementována dříve.
má zvýšená škálovatelnost databáze pro sledování procesů: místo jediného RB stromu chráněného spinlockem je zahrnuta hash tabulka 512 RB stromů chráněná 512 zámky pro čtení a zápis;
Je implementován a povolen výchozí režimve kterém kontrola integrity identifikátorů Zpracování se často provádí pouze pro aktuální úkol a také volitelně pro spuštěné úkoly (probuzení). U dalších úloh, které jsou v pozastaveném stavu nebo které fungují bez volání API jádra řízeného LKRG, se ověřování provádí méně často.
Navíc k soubor systémové jednotky byl přepracován načíst modul LKRG v rané fázi načítání (k deaktivaci modulu lze použít volbu příkazového řádku jádra);
Během kompilace byla zkontrolována některá povinná nastavení jádra CONFIG_ *, aby se generovaly spíše smysluplné chybové zprávy než obskurní chyby.
Z dalších změn, které v této nové verzi vynikají:
- Přidána podpora pro pohotovostní režimy (ACPI S3, Suspend to RAM) a Suspend (S4, Suspend to Disk).
- Přidána podpora pro DKMS v Makefile.
- Nová logika je navržena k určení pokusů dostat se z omezení oboru názvů (například z kontejnerů Docker).
- V tomto procesu je konfigurace LKRG umístěna na stránku paměti, obvykle jen pro čtení.
- Výstup do protokolů informací, které mohou být pro útoky nejužitečnější (například informace o adrese v jádře), je omezen režimem ladění (log_level = 4 a vyšší), který je ve výchozím nastavení zakázán.
- Byly přidány nové parametry sysctl a modulu pro vyladění LKRG, stejně jako dva sysctl pro zjednodušenou konfiguraci výběrem z profilů připravených vývojáři.
- Výchozí nastavení se mění, aby se dosáhlo vyváženější rovnováhy mezi rychlostí detekce porušení a účinností reakce na jedné straně a dopadem na produktivitu a rizikem falešných poplachů na straně druhé.
- Podle optimalizací navržených v nové verzi se pokles výkonu při použití LKRG 0.8 odhaduje na 2.5% ve výchozím režimu („těžký“) a 2% ve světelném režimu („lehký“).
Pokud se o tom chcete dozvědět více, můžete se poradit podrobnosti zde.