Jadro Linuxu 5.4 dostalo záplaty na obmedzenie prístupu root do vnútorných častí jadra

Linus Torvalds prijatý súčasťou pripravovaného vydania jadra Linuxu 5.4 je sada opráv "uzamknutie", navrhnuté David Howells (Red Hat) a Matthew Garrett (Matthew garrett, pracuje v spoločnosti Google) na obmedzenie prístupu používateľov root k jadru. Funkcia súvisiaca s blokovaním je zahrnutá vo voliteľne zavedenom module LSM (Bezpečnostný modul Linux), čo vytvára bariéru medzi UID 0 a jadro, čím obmedzuje niektoré funkcie na nízkej úrovni.

Ak útočník dosiahne spustenie kódu s právami root, môže svoj kód spustiť na úrovni jadra, napríklad nahradením jadra pomocou kexecu alebo čítaním/zápisom pamäte cez /dev/kmem. Najzrejmejším dôsledkom takejto činnosti môže byť obchádzka UEFI Secure Boot alebo získavanie citlivých údajov uložených na úrovni jadra.

Pôvodne boli funkcie obmedzenia root vyvinuté v kontexte posilnenia ochrany overeného bootovania a distribúcie už nejaký čas používajú záplaty tretích strán na blokovanie obchádzania UEFI Secure Boot. Zároveň takéto obmedzenia neboli zahrnuté do hlavného zloženia jadra kvôli nezhody pri ich implementácii a obavy z narušenia existujúcich systémov. Modul „lockdown“ absorboval záplaty už používané v distribúciách, ktoré boli prerobené vo forme samostatného subsystému, ktorý nie je viazaný na UEFI Secure Boot.

Režim uzamknutia obmedzuje prístup k /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debug mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), niektorým rozhraniam ACPI a CPU Registre MSR, volania kexec_file a kexec_load sú zablokované, režim spánku je zakázaný, používanie DMA pre zariadenia PCI je obmedzené, import ACPI kódu z premenných EFI je zakázaný,
Nie sú povolené žiadne manipulácie s I/O portami, vrátane zmeny čísla prerušenia a I/O portu pre sériový port.

V predvolenom nastavení nie je blokovací modul aktívny, je zostavený, keď je v kconfig špecifikovaná možnosť SECURITY_LOCKDOWN_LSM a je aktivovaný cez parameter jadra „lockdown=“, riadiaci súbor „/sys/kernel/security/lockdown“ alebo voľby zostavy LOCK_DOWN_KERNEL_FORCE_*, ktorý môže mať hodnoty „integrita“ a „dôvernosť“. V prvom prípade sú zablokované funkcie, ktoré umožňujú vykonávať zmeny v spustenom jadre z užívateľského priestoru a v druhom prípade je zakázaná aj funkcionalita, pomocou ktorej je možné z jadra extrahovať citlivé informácie.

Je dôležité poznamenať, že uzamknutie obmedzuje iba štandardný prístup k jadru, ale nechráni pred úpravami v dôsledku zneužitia zraniteľností. Blokovať zmeny v spustenom jadre, keď projekt Openwall používa exploity sa vyvíja samostatný modul LKRG (Linux Kernel Runtime Guard).

Zdroj: opennet.ru

Pridať komentár