Projektet Openwall har släppt LKRG 0.8-kärnmodulutgåvan (Linux Kernel Runtime Guard), utformad för att upptäcka och blockera attacker y kränkningar av kärnstrukturernas integritet.
Modulen den är lämplig både för att organisera skydd mot redan kända bedrifter för Linux-kärnan (till exempel i situationer där det är problematiskt att uppdatera kärnan i systemet), som för att motsätta sig exploater för okända sårbarheter.
Vad är nytt LKRG 0.8?
I den här nya versionen positioneringen av LKRG-projektet har ändrats, vad atttimme är inte indelad i separata delsystem för att verifiera integritet och bestämma användningen av exploater, men den presenteras som en komplett produkt för att identifiera attacker och olika integritetsbrott;
När det gäller kompatibiliteten för denna nya version, vi kan hitta att den är kompatibel med Linux-kärnor från 5.3 till 5.7liksom kärnor sammanställda med aggressiva GCC-optimeringar, utan alternativen CONFIG_USB och CONFIG_STACKTRACE eller med alternativet CONFIG_UNWINDER_ORCliksom med kärnor där det inte finns några funktioner som fångas upp av LKRG om du kan klara dig utan.
Utöver experimentellt stöd för 32-bitars ARM-plattformar (testat på Raspberry Pi 3 Model B), medan det finns tidigare tillgängligt stöd för AArch64 (ARM64) kompletteras med kompatibilitet med Raspberry Pi 4.
Dessutom, nya krokar har lagts till, som inkluderar en "hook ()" -anropshanterare för att bättre identifiera sårbarheter som manipuleras av "möjligheter", snarare än processidentifierare.
På x86-64-system kontrolleras och tillämpas SMAP-biten (Förebyggande av åtkomst i övervakningsläge), dutformad för att blockera åtkomst till data i användarutrymmet från privilegierad kod som körs på kärnnivå. SMEP-skydd (Supervisor Mode Execution Prevention) -skydd implementerades tidigare.
Den har det ökad skalbarhet i processpårningsdatabasen: istället för ett enda RB-träd skyddat av ett spinlock är en hash-tabell med 512 RB-träd involverad, skyddad av 512 läs- respektive skrivlås;
Ett standardläge är implementerat och aktiverat, i vilken verifiering av identifierarnas integritet Bearbetning utförs ofta endast för den aktuella uppgiften och även valfritt för utlösta uppgifter (wake up). För andra uppgifter som är i avstängt tillstånd eller som fungerar utan ett LKRG-kontrollerat API-anrop från kärnan utförs verifiering mindre ofta.
Utöver systemd-enhetsfilen har redesignats att ladda LKRG-modulen i ett tidigt laddningsskede (alternativet för kärnkommandoraden kan användas för att inaktivera modulen);
Under sammanställningen kontrollerades några av de obligatoriska CONFIG_ * -kärninställningarna för att generera meningsfulla felmeddelanden snarare än dolda fel.
Av de andra förändringarna som sticker ut i den här nya versionen:
- Lagt till stöd för vänteläge (ACPI S3, Suspend to RAM) och Suspend (S4, Suspend to Disk).
- Lagt till stöd för DKMS i Makefile.
- Ny logik föreslås för att bestämma försök att komma ut från namnutrymmesbegränsningar (till exempel från Docker-behållare).
- I processen placeras LKRG-konfigurationen på en minnessida, vanligtvis skrivskyddad.
- Utdata till loggar av information som kan vara mest användbar för attacker (till exempel adressinformation i kärnan) är begränsad av felsökningsläge (log_level = 4 och högre), som är inaktiverat som standard.
- Nya sysctl- och modulparametrar har lagts till för att ställa in LKRG, liksom två sysctl för förenklad konfiguration genom att välja bland profiler som utarbetats av utvecklare.
- Standardinställningarna ändras för att åstadkomma en mer balanserad balans mellan upptäckten av överträdelsens hastighet och reaktionens effektivitet å ena sidan och effekten på produktiviteten och risken för falska positiva å andra sidan.
- Enligt de optimeringar som föreslås i den nya versionen uppskattas prestandasänkningen vid tillämpning av LKRG 0.8 till 2.5% i standardläget ("tung") och 2% i ljusläget ("lätt").
Om du vill veta mer om det kan du rådfråga detaljer här.