Openwall projekti avaldas LKRG 1.0.0 (Linux Kernel Runtime Guard) tuuma mooduli, mis on mõeldud tuuma struktuuride terviklikkuse kontrollimiseks ja tuuma haavatavuste ärakasutamise katsete tuvastamiseks. Versiooninumbri 1.0.0 määramine tähistab projekti küpsuse saavutamist. Projekti kood on litsentseeritud GPLv2 alusel.
Moodul sobib nii rünnakute kaitsmiseks, mis manipuleerivad juba tuntud Linuxi tuuma haavatavustega, kui ka eksploitide vastu, mis kasutavad veel tundmatuid haavatavusi, kui neid ei rakendata LKRG vältimiseks erilisi meetmeid. Kaitse põhineb töötava tuuma volituste volitamata muutuste tuvastamisel (terviklikkuse kontroll) ja kasutajaprotsesside volituste muutuste jälgimisel (eksploitide rakendamise tuvastamine).
Integraalsuse kontrollimine põhineb hash'ide võrdlemisel, mis arvutatakse kõige olulisemate mälu ja tuuma andmestruktuuride valdkondade jaoks, nagu IDT (katkestuse kirjeldustabel), MSR, süsteemi kutsungite tabelid, kõik protseduurid ja funktsioonid, katkestuste töötlejad, laaditud moodulite loendid, moodulite '.text' sektsiooni sisu ja protsesside atribuudid. Kontrollimisprotseduur aktiveeritakse perioodiliselt taimeri või teatud sündmuste toimumise korral tuumas, näiteks setuid, setreuid, fork, exit, execve ja do_init_module süsteemi kutsungite täitmisel.
Võimalike eksploitide tuvastamine ja rünnakute blokeerimine toimub enne, kui tuum annab juurdepääsu ressurssidele (näiteks enne faili avamist), kuid pärast protsessi volituste omandamist (näiteks UID muutmine). Kui tuvastatakse volitamata protsesside käitumine, sunnitakse need lõpetama, mis on paljude eksploitide blokeerimiseks piisav. Mooduli töö tõttu tekkiv kulu on hinnanguliselt 2-2.5%.
Toetatud on töö x86-64, AArch64 (ARM64), ARM32 ja x86 arhitektuuride süsteemides. LKRG 1.0.0 töö on testitud mitmesuguste jaotusversioonide kernelitega, alates RHEL / CentOS 7 kernelist 3.10 kuni 6.17-rc4 versioonini, mis valmistatakse ette Fedora 44 vabastamiseks. Pakette on saadaval ALT Linuxi, Arch Linuxi, Astra Linuxi, Gentoo, Guixi, NixOSi, Rocky Linuxi, Whonixi, Yocto ja OpenBMC jaoks. Rocky Linuxi jaoks koostatud pakette saab kasutada RHEL 8/9 ja sellistes tuletatud jaotustes nagu AlmaLinux 8/9, samuti pakette Whonixile, mis on mõeldud Debianile ja Ubuntu’le.
Uue versiooni muudatuste hulgas on:
- Tagatud on ühilduvus Linuxi kernelitest, mis ulatub kuni 6.17-rc4 versioonini.
- Kernelite versioonidest alates 6.13 on lõpetatud kaugete override_creds() ja revert_creds() kõnede püüdmine, mis on piiratud rünnakute tuvastamine, mis ületavad cred osutajat. Piiranguid üritati kompenseerida cred osutaja kirjutamise kontrollide lisamise kaudu teistes kernelite kohtades.
- Liigne autentimisandmete jälgimine, mille puhul terviklikkuse kontrolli ei tehta, on lõpetatud. Muudatus võimaldas vähendada koodibaasi umbes 1500 rea võrra.
- Linux 6.10 südamikus on lisatud tugi OverlayFS failisüsteemis ajutiste failide loomise mehhanismile, kasutades O_TMPFILE (ovl_tmpfile) valikut. Antud tugi on vajalik vale aktiveerimise vältimiseks, mis ilmneb eraldatud konteinerite kasutamisel süsteemides, kus on südamikud 6.10-6.12.
- x86_64 süsteemidele on lisatud Intel CET (Control-flow Enforcement Technology) tehnoloogiate tugi, et kaitsta täidetavat koodi, kasutades IBT (indirect branch tracking) käske, samuti kCFI (kernel Control Flow Integrity) tarkvaralist kaitset, et blokeerida kontrollvoo normaalse järjestuse rikkumise (control flow) tõttu, mis tuleneb eksploaitide rakendamisest, mis muudavad mälu salvestatud funktsioonide näidiseid.
- Paljude töötlejate ühendamiseks kasutatakse kretprobesi asemel kprobesi mehhanismi, mis lihtsustab hook-ide seadistamise koodi ja võimaldab saavutada kõrgemat jõudlust.
- Protsessispetsiifiliste andmete (per-task shadow data) lukustamise töö on ümber mõeldud. Liigsete lukustuste eemaldamise tulemusena on suudetud parandada juurdepääsu tootlikkust.
- Parandatud vead, mis viisid võistlusolukordade, terviklikkuse kontrollimise ja valehäirete probleemideni.
- Parandatud toe pakkumist Clang'i koostamiseks.
Allikas: opennet.ru
