Openwall-projektet udgivelse af kernelmodul (Linux Kernel Runtime Guard), designet til at opdage og blokere angreb og krænkelser af kernekonstruktioner. For eksempel kan modulet protegere mod uautoriseret ændring af en aktiv kerne og forsøg på at ændre tilladelser for brugerprocesser (bestemmelse af anvendelsen af exploits). Modulet er velegnet til at beskytte mod allerede kendte exploits for Linux-kernen (f.eks. i tilfælde hvor det er problematisk at opdatere kernen i systemet), såvel som til at modstå exploits for endnu ukendte sårbarheder. Projektkode er under GPLv2-licensen.
Blandt ændringerne i den nye version:
- Projektets positionering af LKRG er ændret, således at det ikke længere opdeles i separate subsystems til integritetskontrol og bestemmelse af anvendelse af exploits, men præsenteres som et samlet produkt til opdagelse af angreb og forskellige former for integritetskrænkelser;
- Sikret kompatibilitet med Linux-kerner fra 5.3 til 5.7, samt med kerner kompileret med aggressive GCC-optimeringer, uden CONFIG_USB og CONFIG_STACKTRACE muligheder eller med CONFIG_UNWINDER_ORC indstillingen, samt med kerner, hvor de opsnappede LKRG-funktioner ikke er til stede, hvis de kan undværes;
- Ved kompilering sikres kontrol af visse nødvendige kerneindstillinger CONFIG_* for at danne meningsfulde fejlmeddelelser i stedet for uklare nedbrud;
- Tilføjet support til suspend-mode (ACPI S3, suspend to RAM) og standby-mode (S4, suspend to disk);
- DKMS support tilføjet i Makefile;
- Eksperimentel support til 32-bit ARM-platforme er implementeret (testet på Raspberry Pi 3 Model B). Den tidligere tilgængelige support til AArch64 (ARM64) er blevet suppleret med kompatibilitet med Raspberry Pi 4;
- Nye hooks er blevet tilføjet, herunder handleren for opkaldet capable() for bedre bestemmelse af exploits, der manipulerer "", og ikke procesidentiteter ();
- Foreslået ny logik til bestemmelse af forsøg på at trænge ud af begrænsningerne for navnerum (f.eks. fra Docker-containere);
- På x86-64-systemer sikres kontrol og anvendelse af SMAP-biten (Supervisor Mode Access Prevention), designet til at blokere adgangen til data i brugerrummet fra privilegeret kode, der kører på kerne-niveau. Beskyttelse mod SMEP (Supervisor Mode Execution Prevention) blev implementeret tidligere;
- Under drift sikres det, at indstillingerne for LKRG placeres i en hukommelsesside, der normalt kun er tilgængelig for læsning;
- Logoutput af oplysninger, der kan være mest nyttige for angreb (f.eks. information om adresser i kernen), er begrænset til fejlsøgningsniveauet (log_level=4 og højere), som er slået fra som standard.
- Øget skalerbarhed af databasesystemet til procesovervågning — i stedet for et enkelt RB-træ, der beskyttes af en spinlock, er der anvendt en hash-tabel med 512 RB-træer, der hver især beskyttes af 512 låse til læsning og skrivning.
- Der er implementeret og aktiveret som standard en tilstand, hvor kontrol af integriteten af proces-id'er ofte kun udføres for den aktuelle opgave, samt valgfrit for aktiverede (vågnende) opgaver. For andre opgaver, der er i dvale eller kører uden at interagere med den kontrollerede LKRG API i kernen, udføres kontrollen sjældnere.
- Nye sysctl og modulparametre er tilføjet for finjustering af LKRG, samt to sysctl til forenklet konfiguration ved at vælge fra de sæt af finjusteringer, der er forberedt af udviklerne (profiler).
- Standardindstillingerne er ændret for at opnå en mere afbalanceret balance mellem hastigheden af opdagelse af overtrædelser og effektiviteten af reaktioner på den ene side, og indflydelsen på ydeevnen og risikoen for falske positiver på den anden side.
- Unit-filen systemd er omarbejdet til at indlæse LKRG-modulet på et tidligt tidspunkt under opstart (parameteren for at deaktivere modulet kan bruges som en kommandolinjeargument til kernen).
I lyset af de foreslåede optimeringer i den nye version vurderes ydeevnedropet ved anvendelse af LKRG 0.8 til 2,5 % i standardtilstand ('heavy') og 2 % i letvægts tilstand ('light').
I en nyligt udført effektivitet af pakker til at opdage rootkits LKRG de bedste resultater, uden falske positiver, identificerede 8 ud af 9 testede rootkits, der kørte på kernes niveau (rootkitterne Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit, og Sutekh blev identificeret, men Keysniffer, som er en keylogger kernelmodul snarere end et rootkit i ordets egentlige forstand, blev overset). Til sammenligning identificerede pakkerne AIDE, OSSEC og Rootkit Hunter 2 rootkits ud af 9, mens Chkrootkit ikke identificerede nogen. Det skal bemærkes, at LKRG ikke understøtter detektion af rootkits placeret i brugerrummet, så den højeste effektivitet opnås ved at bruge kombinationen af AIDE og LKRG, der gjorde det muligt at opdage 14 ud af 15 rootkits af alle typer.
Det kan yderligere bemærkes, at udvikleren af distributionen at opkræve gebyrer for brugen af systemet for hurtige betalinger. er klar med pakker til DKMS for Debian, Whonix, Qubes og Kicksecure, og pakken til er allerede opdateret til version 0.8. Pakker med LKRG findes også i russiske og .
Integritetskontrollen i LKRG udføres ved at sammenligne den aktuelle kode og data fra kernen og modulerne, visse vigtige datakonstruktioner og CPU-indstillinger med de gemte hashes eller kopier af de tilsvarende hukommelsesområder, datakonstruktioner eller registre. Kontrollerne aktiveres både periodisk via en timer og ved indtræden af forskellige begivenheder.
Bestemmelsen af mulige angreb og blokering af angreb udføres på et stadium før kernen giver adgang til ressourcerne (f.eks. før en fil åbnes), men efter at processen har opnået uautoriserede rettigheder (f.eks. ændring af UID). Ved opdagelse af uautoriseret adfærd hos processerne afsluttes de som standard tvangsfuldt, hvilket er tilstrækkeligt til at blokere mange angreb.
Kilde: opennet.ru
