Jádro Linuxu 5.4 obdrželo záplaty, které omezovaly přístup roota k vnitřnostem jádra

Linus Torvalds přijato součástí nadcházejícího vydání jádra Linuxu 5.4 je sada oprav "uzamčení", navrženo David Howells (Red Hat) a Matthew Garrett (Matthew Garrett, pracuje ve společnosti Google) k omezení přístupu uživatelů root k jádru. Funkce související s uzamčením je součástí volitelně načteného modulu LSM (Linux Security Module), což vytváří bariéru mezi UID 0 a jádrem a omezuje některé funkce na nízké úrovni.

Pokud útočník dosáhne spuštění kódu s právy root, může svůj kód spustit na úrovni jádra, například nahrazením jádra pomocí kexecu nebo čtením/zápisem paměti přes /dev/kmem. Nejviditelnějším důsledkem takové činnosti může být bypass UEFI Secure Boot nebo načítání citlivých dat uložených na úrovni jádra.

Zpočátku byly funkce omezení root vyvinuty v kontextu posílení ochrany ověřeného spouštění a distribuce již nějakou dobu používají záplaty třetích stran k blokování obcházení UEFI Secure Boot. Zároveň taková omezení nebyla zahrnuta do hlavního složení jádra kvůli neshody při jejich zavádění a obavy z narušení stávajících systémů. Modul „lockdown“ absorboval záplaty již používané v distribucích, které byly přepracovány ve formě samostatného subsystému, který není vázán na UEFI Secure Boot.

Režim uzamčení omezuje přístup k /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, režim ladění kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), některá rozhraní ACPI a CPU Registry MSR, volání kexec_file a kexec_load jsou blokovány, režim spánku je zakázán, použití DMA pro zařízení PCI je omezeno, import kódu ACPI z proměnných EFI je zakázán,
Manipulace s I/O porty nejsou povoleny, včetně změny čísla přerušení a I/O portu pro sériový port.

Ve výchozím nastavení není modul lockdown aktivní, je vytvořen, když je v kconfig specifikována volba SECURITY_LOCKDOWN_LSM a je aktivován parametrem jádra „lockdown=“, řídicím souborem „/sys/kernel/security/lockdown“ nebo volbami sestavení LOCK_DOWN_KERNEL_FORCE_*, který může mít hodnoty „integrita“ a „důvěrnost“. V prvním případě jsou zablokovány funkce, které umožňují provádět změny v běžícím jádře z uživatelského prostoru, a ve druhém případě je také deaktivována funkčnost, kterou lze z jádra extrahovat citlivé informace.

Je důležité poznamenat, že uzamčení pouze omezuje standardní přístup k jádru, ale nechrání před úpravami v důsledku zneužití zranitelností. Blokovat změny běžícího jádra, když projekt Openwall používá exploity se vyvíjí samostatný modul LKRG (Linux Kernel Runtime Guard).

Zdroj: opennet.ru

Přidat komentář