Linuxi 5.4 kernel sai paigad, et piirata juurjuurdepääsu kerneli sisemistele

Linus Torvalds aktsepteeritud Linuxi 5.4 kerneli eelseisvas väljalaskes sisaldub paikade komplekt "lukustamine" pakutud David Howells (Red Hat) ja Matthew Garrett (Matthew garrett, töötab Google'is), et piirata juurkasutajate juurdepääsu kernelile. Lukustamisega seotud funktsioonid sisalduvad valikuliselt laetavas LSM-moodulis (Linuxi turvamoodul), mis seab UID 0 ja kerneli vahele barjääri, piirates teatud madala taseme funktsionaalsust.

Kui ründaja saavutab koodikäituse juurõigustega, saab ta oma koodi käivitada kerneli tasemel, näiteks asendades kerneli kexeci abil või lugemis-/kirjutusmälu läbi /dev/kmem. Sellise tegevuse ilmseim tagajärg võib olla ümbersõit UEFI Secure Boot või kerneli tasemel salvestatud tundlike andmete toomine.

Algselt töötati juurpiirangu funktsioonid välja kontrollitud alglaadimise kaitse tugevdamise kontekstis ja distributsioonid on juba mõnda aega kasutanud kolmanda osapoole plaastreid, et blokeerida UEFI Secure Booti möödaviigu. Samal ajal ei sisaldunud sellised piirangud tuuma põhikoostises tõttu erimeelsused nende rakendamisel ja olemasolevate süsteemide häirete ees. "Lukustus" moodul absorbeeris distributsioonides juba kasutatud plaastrid, mis kujundati ümber eraldi alamsüsteemi kujul, mis ei olnud seotud UEFI turvalise alglaadimisega.

Lukustusrežiim piirab juurdepääsu /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes silumisrežiimi, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), mõned ACPI liidesed ja CPU MSR-registrid, kexec_file ja kexec_load kõned on blokeeritud, puhkerežiim on keelatud, DMA kasutamine PCI-seadmete jaoks on piiratud, ACPI koodi import EFI muutujatest on keelatud,
I/O-portidega manipuleerimine, sealhulgas jadapordi katkestuse numbri ja I/O-pordi muutmine, ei ole lubatud.

Vaikimisi ei ole lukustusmoodul aktiivne, see luuakse siis, kui failis kconfig on määratud suvand SECURITY_LOCKDOWN_LSM ja see aktiveeritakse kerneli parameetri "lockdown=", juhtfaili "/sys/kernel/security/lockdown" või montaaživalikute kaudu LOCK_DOWN_KERNEL_FORCE_*, mis võib võtta väärtusi "terviklikkus" ja "konfidentsiaalsus". Esimesel juhul blokeeritakse funktsioonid, mis võimaldavad kasutajaruumist töötavas kernelis muudatusi teha, ja teisel juhul on keelatud ka funktsionaalsus, mille abil saab kernelist tundlikku teavet välja tõmmata.

Oluline on märkida, et lukustamine piirab ainult standardjuurdepääsu kernelile, kuid ei kaitse turvaaukude ärakasutamisest tulenevate muudatuste eest. Töötava kerneli muudatuste blokeerimiseks, kui Openwalli projekt kasutab exploite areneb eraldi moodul LKRG (Linux Kernel Runtime Guard).

Allikas: opennet.ru

Lisa kommentaar