Linus Torvalds do připravovaného linuxového jádra 5.4 schválil novou vlastnost nazvanou lockdown. Ta bude ve výchozím stavu vypnutá a umožní vykopat hlubší příkop mezi jádrem a uživatelským prostorem. Pokud bude vlastnost zapnutá, ani root nebude schopen manipulovat s některými částmi jádra.
Lockdown je implementován jako Linux Security Module (LSM) a dovolí už v prvních fázích startu systému uzavřít přístup k některým rozhraním jádra. Cílem je omezit možnost ovlivnění jádra uživatelem root. Sníží se tím šance, že kompromitovaný účet bude schopen ovládnout zbytek systému.
Dva režimy uzamčení
Funkce uzavře přístup k vybraným rozhraním jádra, takže některé aplikace vyžadující nízkoúrovňový přístup k hardware či jádru mohou přestat fungovat. Vývojáři proto varují, že by lockdown měl být aktivován až po důkladné analýze situace a testování dané konfigurace.
Uzamčení se bude týkat těch rozhraní, která dovolují z uživatelského prostoru dostat svůj kód do prostoru jádra. Jde například o rozhraní pro čtení a zápis do paměti /dev/mem
a /dev/kmem
, rozhraní /dev/port
, vynucení použití digitálně podepsaných jaderných modulů, zákaz hibernace systému, trasování jádra, použití BPF a mnoho dalšího.
Modul podporuje dva různé režimy uzamčení nazvané integrity a confidentiality. Aktivují se parametrem jádra lockdown={integrity|confidentiality}
a způsobí přepnutí režimu ještě v úvodních fázích startu jádra, kdy ještě neběží userspace.
Režim integrity zablokuje rozhraní a vlastnosti, které umožňují z uživatelského prostoru konfigurovat běžící jádro. Druhý režim confidentiality znemožní navíc z uživatelského prostoru vyčítat potenciálně citlivé údaje z jádra. V budoucnu bude možné k těmto režimům přidávat další, které mohou funkcionalitu ještě dále rozšířit.
Dlouhá cesta
Vývoj lockdownu trval mnoho let a na jeho počátku stál Matthew Garrett, známý jaderný vývojář, který dnes pracuje pro Google. Cílem projektu je od začátku snaha zabránit úspěšnému útočníkovi, aby díky získání práv roota mohl manipulovat se systémovým jádrem.
Bez těchto úprav totiž není možné zajistit běh čistého jádra spuštěného pomocí secure bootu. Při startu je sice ověřována integrita jádra a všech jeho součástí, ale za běhu systému je pak možné dodatečně do jádra zasáhnout a přidat do něj vlastní kód. Právě takovým úpravám by měl lockdown zabránit. Jakmile jednou nabootujete ověřené a čisté jádro, už si můžete být jisti, že takové zůstane i za běhu systému.
Vývoj trval mnoho let a zvláště Linus nebyl s původním řešením spokojený. Vadilo mu například to, že se původní lockdown automaticky zapíná, když detekuje použití secure bootu. Diskuse o správném chování úpravy se táhla velmi dlouho a točila se právě okolo nezávislosti na secure bootu.
Vývojáři některých distribucí přišli s vlastním řešením a přidávali ho ke svým jádrům. Vzniklo tak několik různých řešení v podobě modulů, které se nacházejí v systémech od Red Hatu a Canonicalu. Nakonec se všichni shodli na finálním řešení, které už nebude potřeba do jádra doplňovat, ale bude jeho součástí.
(Zdroj: ZDNet)