Nucleul Linux 5.4 a primit corecții pentru a restricționa accesul root la elementele interne ale nucleului

Linus Torvalds admis inclus în viitoarea lansare a nucleului Linux 5.4 este un set de patch-uri "blocare“, propus David Howells (Pălărie roșie) și Matthew Garrett (Matthew Garrett, funcționează la Google) pentru a restricționa accesul utilizatorului root la kernel. Funcționalitatea legată de blocare este inclusă într-un modul LSM încărcat opțional (Modulul de securitate Linux), care plasează o barieră între UID 0 și nucleu, limitând anumite funcționalități de nivel scăzut.

Dacă un atacator realizează executarea codului cu drepturi de rădăcină, el își poate executa codul la nivel de kernel, de exemplu, înlocuind nucleul folosind kexec sau memorie de citire/scriere prin /dev/kmem. Cea mai evidentă consecință a unei astfel de activități poate fi ocol UEFI Secure Boot sau preluarea datelor sensibile stocate la nivel de kernel.

Inițial, funcțiile de restricție la rădăcină au fost dezvoltate în contextul întăririi protecției boot-ului verificat, iar distribuțiile folosesc patch-uri de la terți pentru a bloca ocolirea UEFI Secure Boot de ceva timp. În același timp, astfel de restricții nu au fost incluse în compoziția principală a nucleului din cauza dezacorduri în implementarea lor și temerile de întrerupere a sistemelor existente. Modulul „blocare” a absorbit patch-uri deja utilizate în distribuții, care au fost reproiectate sub forma unui subsistem separat care nu este legat de UEFI Secure Boot.

Modul de blocare restricționează accesul la /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debug mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), unele interfețe ACPI și CPU Registrele MSR, apelurile kexec_file și kexec_load sunt blocate, modul de repaus este interzis, utilizarea DMA pentru dispozitivele PCI este limitată, importul codului ACPI din variabilele EFI este interzis,
Manipulările cu porturile I/O nu sunt permise, inclusiv modificarea numărului de întrerupere și a portului I/O pentru portul serial.

Implicit, modulul de blocare nu este activ, este construit atunci când în kconfig este specificată opțiunea SECURITY_LOCKDOWN_LSM și este activată prin parametrul nucleului „lockdown=”, fișierul de control „/sys/kernel/security/lockdown” sau opțiunile de asamblare LOCK_DOWN_KERNEL_FORCE_*, care poate lua valorile „integritate” și „confidențialitate”. În primul caz, sunt blocate caracteristicile care permit modificarea nucleului care rulează din spațiul utilizatorului, iar în al doilea caz, funcționalitatea care poate fi folosită pentru a extrage informații sensibile din nucleu este, de asemenea, dezactivată.

Este important de reținut că blocarea limitează doar accesul standard la nucleu, dar nu protejează împotriva modificărilor ca urmare a exploatării vulnerabilităților. Pentru a bloca modificările aduse nucleului care rulează atunci când exploatările sunt folosite de proiectul Openwall se dezvoltă modul separat LKRG (Linux Kernel Runtime Guard).

Sursa: opennet.ru

Adauga un comentariu