Vrystelling van die LKRG 0.8-module om te beskerm teen uitbuiting van kwesbaarhede in die Linux-kern

Openwall-projek опубликовал kernmodule vrystelling LKRG 0.8 (Linux Kernel Runtime Guard), ontwerp om aanvalle en skendings van die integriteit van kernstrukture op te spoor en te blokkeer. Die module kan byvoorbeeld beskerm teen ongemagtigde veranderinge aan die lopende kern en pogings om die toestemmings van gebruikerprosesse te verander (opsporing van die gebruik van misbruik). Die module is geskik om beide beskerming teen reeds bekende uitbuitings vir die Linux-kern te organiseer (byvoorbeeld in situasies waar dit moeilik is om die kern in die stelsel op te dateer), en om uitbuitings vir nog onbekende kwesbaarhede teen te werk. Projek kode versprei deur gelisensieer onder GPLv2.

Onder die veranderinge in die nuwe weergawe:

  • Die posisionering van die LKRG-projek is verander, wat nie meer in aparte substelsels vir die kontrolering van integriteit en die bepaling van die gebruik van uitbuitings opgedeel is nie, maar aangebied word as 'n volledige produk vir die identifisering van aanvalle en verskeie integriteitskendings;
  • Verenigbaarheid word voorsien met Linux-kerne van 5.3 tot 5.7, sowel as met pitte wat saamgestel is met aggressiewe GCC-optimalisasies, sonder die CONFIG_USB- en CONFIG_STACKTRACE-opsies of met die CONFIG_UNWINDER_ORC-opsie, sowel as met pitte wat nie LKRG-gehakte funksies het nie, indien hulle kan afgesien word;
  • Wanneer daar gebou word, word sommige verpligte CONFIG_* kerninstellings nagegaan om betekenisvolle foutboodskappe te genereer in plaas van obskure ineenstortings;
  • Bygevoeg ondersteuning vir bystand (ACPI S3, skort na RAM) en slaap (S4, skort na skyf) modusse;
  • Bygevoeg DKMS ondersteuning by Makefile;
  • Eksperimentele ondersteuning vir 32-bis ARM-platforms is geïmplementeer (getoets op Raspberry Pi 3 Model B). Voorheen beskikbare AArch64 (ARM64) ondersteuning is uitgebrei om verenigbaarheid met die Raspberry Pi 4 bord te bied;
  • Nuwe hake is bygevoeg, insluitend 'n bekwame () oproephanteerder om beter uitbuitings te identifiseer wat "manipuleer"vermoëns", nie verwerk ID's (geloofsbriewe);
  • Nuwe logika is voorgestel vir die opsporing van pogings om naamruimtebeperkings te ontsnap (byvoorbeeld vanaf Docker-houers);
  • Op x86-64-stelsels word die SMAP (Supervisor Mode Access Prevention)-bis ​​gekontroleer en toegepas, wat ontwerp is om toegang tot gebruikersspasiedata te blokkeer vanaf bevoorregte kode wat op die kernvlak loop. SMEP (Supervisor Mode Execution Prevention) beskerming is voorheen geïmplementeer;
  • Tydens werking word die LKRG-instellings in 'n geheuebladsy geplaas wat gewoonlik leesalleen is;
  • Loginligting wat die nuttigste vir aanvalle kan wees (byvoorbeeld inligting oor adresse in die kern) is beperk tot ontfoutingsmodus (log_level=4 en hoër), wat by verstek gedeaktiveer is.
  • Die skaalbaarheid van die prosesnasporingdatabasis is verhoog - in plaas van een RB-boom wat deur een spinlock beskerm word, word 'n hash-tabel van 512 RB-bome wat deur 512 lees-skryf-slotte beskerm word, gebruik;
  • 'n Modus is by verstek geïmplementeer en geaktiveer, waarin die integriteit van prosesidentifiseerders dikwels net vir die huidige taak nagegaan word, en ook opsioneel vir geaktiveerde (opwek-) take. Vir ander take wat in 'n slaaptoestand is of werk sonder toegang tot die kern-API wat deur LKRG beheer word, word die kontrole minder gereeld uitgevoer.
  • Bygevoeg nuwe sysctl en module parameters vir fyn-instelling LKRG, sowel as twee sysctl vir vereenvoudigde konfigurasie deur te kies uit stelle van fyn-tuning instellings (profiele) voorberei deur die ontwikkelaars;
  • Verstek instellings is verander om 'n meer gebalanseerde balans te bereik tussen die spoed van opsporing van oortredings en die doeltreffendheid van die reaksie, aan die een kant, en die impak op prestasie en die risiko van vals positiewes, aan die ander kant;
  • Die systemd-eenheidlêer is herontwerp om die LKRG-module vroeg tydens opstart te laai ('n kernopdragreëlopsie kan gebruik word om die module te deaktiveer);

Met inagneming van die optimaliserings wat in die nuwe vrystelling voorgestel word, word die werkverrigtingvermindering by die gebruik van LKRG 0.8 geskat op 2.5% in verstekmodus ("swaar") en 2% in ligte modus ("lig").

In 'n onlangs gehou studie doeltreffendheid van pakkette vir die opsporing van rootkits LKRG gewys beste resultate, identifiseer 8 uit 9 getoetste wortelstelle wat op kernvlak werk sonder vals positiewe (rootkits Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit en Sutekh is geïdentifiseer, maar Keysniffer, wat 'n kernel is module, is gemis met 'n keylogger, nie 'n rootkit in die letterlike sin nie). Ter vergelyking, die AIDE-, OSSEC- en Rootkit Hunter-pakkette het 2 uit 9 rootkits opgespoor, terwyl Chkrootkit geen opgespoor het nie. Terselfdertyd ondersteun LKRG nie die opsporing van rootkits wat in gebruikersruimte geleë is nie, so die grootste doeltreffendheid word behaal wanneer 'n kombinasie van AIDE en LKRG gebruik word, wat dit moontlik gemaak het om 14 uit 15 rootkits van alle tipes te identifiseer.

Daarbenewens kan daarop gelet word dat die verspreidingsontwikkelaar Whonix Ek het begin vorming klaargemaakte pakkette met DKMS vir Debian, Whonix, Qubes en Kicksecure, en 'n pakket vir Arch Linux reeds opgedateer na weergawe 0.8. Pakkette met LKRG is ook in Russies beskikbaar ALT Linux и AstraLinux.

Integriteitskontrole in LKRG word uitgevoer deur die werklike kode en data van die kern en modules, 'n paar belangrike datastrukture en SVE-instellings te vergelyk met gestoorde hashes of kopieë van die ooreenstemmende geheue-areas, datastrukture of registers. Tjeks word beide periodiek geaktiveer deur tydhouer en by die voorkoms van verskeie gebeurtenisse.

Die bepaling van die moontlike gebruik van uitbuiting en die blokkering van aanvalle word uitgevoer op die stadium voordat die kern toegang tot hulpbronne verskaf (byvoorbeeld voordat 'n lêer oopgemaak word), maar nadat die proses ongemagtigde toestemmings ontvang het (byvoorbeeld die verandering van die UID). Wanneer ongemagtigde gedrag bespeur word, word prosesse gedwing om by verstek te beëindig, wat voldoende is om baie uitbuitings te blokkeer.

Bron: opennet.ru

Voeg 'n opmerking