La Linukso 5.4-kerno ricevis diakilojn por limigi radikan aliron al kernaj internaĵoj

Linus Torvalds akceptis kiel parto de la estonta eldono de la Linukso-kerno 5.4-a flikaĵo "Lockdown", proponis David Howells (Ruĝa Ĉapelo) kaj Matthew Garrett (Matthew Garrett, funkciigita de Google) por limigi radikan aliron al la kerno. La funkcieco rilata al ŝlosilo estis movita al laŭvole ŝarĝita LSM-modulo (Linuksa Sekureca Modulo) kiu establas baron inter UID 0 kaj la kerno, limigante certan malaltnivelan funkciecon.

Se atakanto sukcesis ekzekuti kodon kun radikrajtoj kiel rezulto de atako, tiam li povas ekzekuti sian kodon ĉe la kernnivelo, ekzemple, anstataŭigante la kernon per kexec aŭ legado/skribado de memoro per /dev/kmem. La plej evidenta sekvo de tia agado estus kromvojo UEFI Secure Boot aŭ eltiro de sentemaj datumoj stokitaj ĉe la kernnivelo.

Radikaj limigoj estis origine evoluigitaj en la kunteksto de hardado de kontrolita lanĉsekureco, kaj distribuoj longe uzis triapartajn diakilojn por bloki UEFI Secure Boot-pretervojon. Samtempe, tiaj limigoj ne estis inkluditaj en la ĉefa komponado de la kerno pro malkonsentoj en ilia efektivigo kaj timoj pri interrompo de ekzistantaj sistemoj. La "lockdown" modulo asimilis diakilojn jam uzitajn en distribuoj, kiuj estis restrukturitaj en la formo de aparta subsistemo kiu ne estas ligita al UEFI Secure Boot.

Lockdown limigas aliron al /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes-sencimreĝimo, mmiotrace, tracefs, BPF, PCMCIA CIS (Karto-Informstrukturo), kelkaj ACPI-interfacoj, kaj CPU MSR-registroj, kexec_file kaj kexec_load alvokoj estas blokitaj, vintrodormo estas malpermesita, DMA-uzado por PCI-aparatoj estas limigita, ACPI-koda importo de EFI-variabloj estas malpermesita,
I/O-havenmanipulado ne estas permesita, inkluzive de ŝanĝado de la interrompa nombro kaj I/O-haveno por la seria haveno.

Defaŭlte, la ŝlosa modulo estas neaktiva, konstruita per specifo de la opcio SECURITY_LOCKDOWN_LSM en kconfig, kaj ebligita per la parametro lockdown= kernel, la /sys/kernel/security/lockdown-kontroldosiero aŭ konstruopcioj. LOCK_DOWN_KERNEL_FORCE_*, kiu povas preni la valorojn "integreco" kaj "konfidenco". La unua malfunkciigas funkciojn, kiuj permesas ŝanĝojn al funkcianta kerno de uzantspaco, dum la dua ankaŭ malfunkciigas funkciojn, kiuj povas esti uzataj por ĉerpi sentemajn informojn el la kerno.

Samtempe, gravas noti, ke blokado nur limigas la regulan aliron al la kerno, sed ne protektas kontraŭ modifoj rezulte de ekspluatado de vundeblecoj. Por bloki ŝanĝojn al la kuranta kerno kiam vi uzas ekspluataĵojn de la projekto Openwall disvolviĝas aparta modulo LKRG (Linukso Kernel Runtime Guard).

fonto: opennet.ru

Aldoni komenton