Linux 5.4 kodols saņēma ielāpus, lai ierobežotu saknes piekļuvi kodola iekšējiem elementiem

Linus Torvalds pieņemts Gaidāmajā Linux 5.4 kodola laidienā ir iekļauts ielāpu komplekts "Slēgts", ierosināts Deivids Hovelss (Red Hat) un Metjū Garets (Metjū Garets, strādā Google), lai ierobežotu root lietotāja piekļuvi kodolam. Ar bloķēšanu saistītā funkcionalitāte ir iekļauta pēc izvēles ielādētā LSM modulī (Linux drošības modulis), kas novieto barjeru starp UID 0 un kodolu, ierobežojot noteiktas zema līmeņa funkcionalitāti.

Ja uzbrucējs panāk koda izpildi ar root tiesībām, viņš var izpildīt savu kodu kodola līmenī, piemēram, nomainot kodolu, izmantojot kexec vai lasīšanas/rakstīšanas atmiņu, izmantojot /dev/kmem. Šādas darbības acīmredzamākās sekas var būt apkārtceļš UEFI Secure Boot vai sensitīvu datu izgūšana, kas glabājas kodola līmenī.

Sākotnēji saknes ierobežošanas funkcijas tika izstrādātas verificētās sāknēšanas aizsardzības stiprināšanas kontekstā, un izplatījumi jau ilgu laiku ir izmantojuši trešo pušu ielāpus, lai bloķētu UEFI Secure Boot apiešanu. Tajā pašā laikā šādi ierobežojumi netika iekļauti kodola galvenajā sastāvā, jo nesaskaņas to ieviešanā un bailes no esošo sistēmu traucējumiem. “Bloķēšanas” modulis absorbēja izplatījumos jau izmantotos ielāpus, kas tika pārveidoti kā atsevišķa apakšsistēma, kas nebija saistīta ar UEFI Secure Boot.

Bloķēšanas režīms ierobežo piekļuvi /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes atkļūdošanas režīmam, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), dažām ACPI saskarnēm un centrālajam procesoram. MSR reģistri, kexec_file un kexec_load izsaukumi ir bloķēti, miega režīms ir aizliegts, DMA lietošana PCI ierīcēm ir ierobežota, ACPI koda importēšana no EFI mainīgajiem ir aizliegta,
Nav atļautas manipulācijas ar I/O portiem, tostarp pārtraukuma numura un I/O porta maiņa seriālajam portam.

Pēc noklusējuma bloķēšanas modulis nav aktīvs, tas tiek veidots, kad kconfig ir norādīta opcija SECURITY_LOCKDOWN_LSM un tiek aktivizēta, izmantojot kodola parametru “lockdown=”, vadības failu “/sys/kernel/security/lockdown” vai montāžas opcijas. LOCK_DOWN_KERNEL_FORCE_*, kas var pieņemt vērtības "integritāte" un "konfidencialitāte". Pirmajā gadījumā tiek bloķēti līdzekļi, kas ļauj veikt izmaiņas darbošajā kodolā no lietotāja vietas, un otrajā gadījumā tiek atspējota arī funkcionalitāte, ko var izmantot sensitīvas informācijas iegūšanai no kodola.

Ir svarīgi atzīmēt, ka bloķēšana ierobežo tikai standarta piekļuvi kodolam, bet neaizsargā pret modifikācijām, kas rodas ievainojamību izmantošanas rezultātā. Lai bloķētu izmaiņas darbošajā kodolā, kad Openwall projekts izmanto eksploatācijas attīstās atsevišķs modulis LKRG (Linux kodola izpildlaika aizsargs).

Avots: opennet.ru

Pievieno komentāru