Release van LKRG 1.0.0 ter bescherming tegen exploitatie van kwetsbaarheden in de Linux-kernel

Het Openwall-project heeft de kernelmodule LKRG 1.0.0 (Linux Kernel Runtime Guard) gepubliceerd, die is bedoeld voor het controleren van de integriteit van kernelstructuren en het detecteren van pogingen om kwetsbaarheden in de kernel te exploiteren. Het toekennen van versie 1.0.0 markeert de volwassenheid van het project. De code van het project wordt verspreid onder de GPLv2-licentie.

De module is geschikt voor bescherming tegen aanvallen, die al bekende kwetsbaarheden in de Linux-kernel misbruiken, en ook tegen exploits die gebruikmaken van nog onbekende kwetsbaarheden, zolang er geen speciale maatregelen worden genomen om LKRG te omzeilen. De bescherming is gebaseerd op het detecteren van ongeautoriseerde wijzigingen in een actieve kernel (integriteitscontrole) en het volgen van veranderingen in de bevoegdheden van gebruikersprocessen (detectie van exploitatie).

De integriteitscontrole vindt plaats op basis van hashvergelijking, berekend voor de belangrijkste geheugengebieden en datastructuren van de kernel, zoals de IDT (Interrupt Descriptor Table), MSR, systeemaanroep-tabellen, alle procedures en functies, interrupt-handlers, lijsten van geladen modules, de inhoud van de ‘.text’-secties van modules en de attributen van processen. De controleprocedure wordt periodiek geactiveerd via een timer of bij bepaalde gebeurtenissen in de kernel, bijvoorbeeld bij het uitvoeren van systeemaanroepen setuid, setreuid, fork, exit, execve en do_init_module.

Detectie van mogelijk gebruik van exploits en blokkering van aanvallen gebeurt voordat de kernel toegang tot middelen biedt (bijvoorbeeld voordat een bestand wordt geopend), maar nadat een proces ongeautoriseerde bevoegdheden heeft verkregen (bijvoorbeeld bij het wijzigen van UID). Bij ontdekking van ongeautoriseerd gedrag van processen worden ze gedwongen beëindigd, wat voldoende is om veel exploits te blokkeren. De overhead van het uitvoeren van de module wordt geschat op 2-2,5%.

Ondersteuning voor systemen met architecturen x86-64, AArch64 (ARM64), ARM32 en x86. De werking van LKRG 1.0.0 is getest met kernels van verschillende distributies, beginnend met kernel 3.10 van RHEL/CentOS 7 tot en met 6.17-rc4 uit de repository, waarin de release van Fedora 44 wordt voorbereid. Pakketten zijn beschikbaar voor de distributies ALT Linux, Arch Linux, Astra Linux, Gentoo, Guix, NixOS, Rocky Linux, Whonix, Yocto en OpenBMC. Pakketten die voor Rocky Linux zijn samengesteld, kunnen worden gebruikt in RHEL 8/9 en afgeleide distributies zoals AlmaLinux 8/9, en pakketten voor Whonix in Debian en Ubuntu.

Onder de wijzigingen in de nieuwe versie:

  • Compatibiliteit met Linux-kernels tot en met versie 6.17-rc4 is verzekerd.
  • Bij gebruik met kernels vanaf 6.13 is het onderscheppen van externe aanroepen van override_creds() en revert_creds() stopgezet, wat de detectie van aanvallen die de cred-pointer overschrijven, heeft beperkt. Deze beperkingen zijn geprobeerd te compenseren door controles voor het overschrijven van de cred-pointer op andere plaatsen in de kernel toe te voegen.
  • Overtollige tracking van inloggegevens waarvan de integriteit niet wordt gecontroleerd, is stopgezet. Deze wijziging heeft de codebasis met ongeveer 1500 regels verminderd.
  • Ondersteuning is toegevoegd voor het in Linux kernel 6.10 geïntroduceerde mechanisme voor het creëren van tijdelijke bestanden in de OverlayFS-bestandssystemen met de optie O_TMPFILE (ovl_tmpfile). Deze ondersteuning is noodzakelijk om valse positieven te voorkomen die optreden bij het gebruik van geïsoleerde containers op systemen met kernels 6.10-6.12.
  • Voor x86_64-systemen is ondersteuning toegevoegd voor de Intel CET (Control-flow Enforcement Technology) om uitvoerbare code te beschermen met behulp van IBT (indirect branch tracking) instructies en softwarematige bescherming kCFI (kernel Control Flow Integrity) om de normale volgorde van uitvoering (control flow) te blokkeren als gevolg van exploits die de in het geheugen opgeslagen functie-pointers wijzigen.
  • Voor de verbinding met meerdere handlers is de kprobes-mechanisme gebruikt in plaats van kretprobes, wat de situatie voor het instellen van hooks vereenvoudigt en zorgt voor een hogere prestaties.
  • De werking met locks van proces-specifieke gegevens (per-task shadow data) in de kernel is herzien. Door overbodige locks te elimineren, is de prestatie bij toegang tot dergelijke gegevens verbeterd.
  • Fouten die leidden tot racecondities, integriteitsproblemen en valse positieven zijn verholpen.
  • De ondersteuning voor opbouw met Clang is verbeterd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster