Liberigo de la modulo LKRG 0.8 por protekti kontraŭ ekspluato de vundeblecoj en la Linukso-kerno

Openwall Projekto eldonita liberigo de kerno-modulo LKRG 0.8 (Linukso Kernel Runtime Guard), dizajnita por detekti kaj bloki atakojn kaj malobservojn de la integreco de kernaj strukturoj. Ekzemple, la modulo povas protekti kontraŭ neaŭtorizitaj ŝanĝoj al la kuranta kerno kaj provoj ŝanĝi la permesojn de uzantprocezoj (detektante la uzon de ekspluatoj). La modulo taŭgas kaj por organizi protekton kontraŭ jam konataj ekspluataĵoj por la Linukso-kerno (ekzemple, en situacioj kie estas malfacile ĝisdatigi la kernon en la sistemo), kaj por kontraŭstari ekspluatojn por ankoraŭ nekonataj vundeblecoj. Projekta kodo distribuita de licencita laŭ GPLv2.

Inter la ŝanĝoj en la nova versio:

  • La pozicio de la projekto LKRG estis ŝanĝita, kiu ne plu estas dividita en apartajn subsistemojn por kontroli integrecon kaj determini la uzon de ekspluatoj, sed estas prezentita kiel kompleta produkto por identigi atakojn kaj diversajn integrecajn malobservojn;
  • Kongrueco estas provizita per Linukso-kernoj de 5.3 ĝis 5.7, same kiel kun kernoj kompilitaj per agresemaj GCC-optimumoj, sen la opcioj CONFIG_USB kaj CONFIG_STACKTRACE aŭ kun la opcio CONFIG_UNWINDER_ORC, kaj ankaŭ kun kernoj kiuj ne havas LKRG-hokitajn funkciojn, se ili povas. esti forigita;
  • Dum konstruado, iuj devigaj CONFIG_* kernaj agordoj estas kontrolitaj por generi signifajn erarmesaĝojn anstataŭ obskuraj kraŝoj;
  • Aldonita subteno por standby (ACPI S3, suspendo al RAM) kaj dormo (S4, suspendo al disko) reĝimoj;
  • Aldonita DKMS-subteno al Makefile;
  • Eksperimenta subteno por 32-bita ARM-platformoj estis efektivigita (provita sur Raspberry Pi 3 Modelo B). Antaŭe havebla AArch64 (ARM64) subteno estis vastigita por provizi kongruon kun la Raspberry Pi 4-tabulo;
  • Novaj hokoj estis aldonitaj, inkluzive de kapabla () alvokotraktilo por pli bone identigi ekspluatojn kiuj manipulas "Kapabloj", ne procesi ID-ojn (Kreditoj);
  • Nova logiko estis proponita por detekti provojn eskapi nomspaclimigojn (ekzemple, de Docker-ujoj);
  • Sur x86-64 sistemoj, la SMAP (Supervisor Mode Access Prevention) bito estas kontrolita kaj aplikata, dizajnita por bloki aliron al uzantspacaj datumoj de privilegia kodo funkcianta ĉe la kernnivelo. SMEP (Supervisor Mode Execution Prevention) protekto estis efektivigita antaŭe;
  • Dum operacio, la LKRG-agordoj estas metitaj en memorpaĝon kiu estas kutime nurlegebla;
  • Registrado de informoj, kiuj povas esti plej utilaj por atakoj (ekzemple, informoj pri adresoj en la kerno) estas limigitaj al sencimiga reĝimo (log_level=4 kaj pli alta), kiu estas malebligita defaŭlte.
  • La skaleblo de la proceza spura datumbazo estis pliigita - anstataŭ unu RB-arbo protektita per unu spinlock, hashtabelo de 512 RB-arboj protektitaj per 512 lego-skriba seruroj estas uzata;
  • Reĝimo estis efektivigita kaj ebligita defaŭlte, en kiu la integreco de procezidentigiloj ofte estas kontrolita nur por la nuna tasko, kaj ankaŭ laŭvole por aktivigitaj (vekiĝo) taskoj. Por aliaj taskoj kiuj estas en dormstato aŭ laborantaj sen aliri la kernan API kontrolitan de LKRG, la kontrolo estas farita malpli ofte.
  • Aldonitaj novaj sysctl kaj modulaj parametroj por fajnagordado de LKRG, kaj ankaŭ du sysctl por simpligita agordo elektante el aroj de fajnagordaj agordoj (profiloj) preparitaj de la programistoj;
  • Defaŭltaj agordoj estis ŝanĝitaj por atingi pli ekvilibran ekvilibron inter la rapideco de detekto de malobservoj kaj la efikeco de la respondo, unuflanke, kaj la efiko al agado kaj la risko de falsaj pozitivoj, aliflanke;
  • La systemd-unuodosiero estis restrukturita por ŝargi la LKRG-modulon frue en lanĉo (opcio de komandlinio de kerno povas esti uzata por malŝalti la modulon);

Konsiderante la optimumojn proponitajn en la nova eldono, la rendimento redukto kiam vi uzas LKRG 0.8 estas taksita je 2.5% en defaŭlta reĝimo ("peza") kaj 2% en malpeza reĝimo ("malpeza").

En lastatempe okazigita esplorado efikeco de pakoj por detekti radikilojn LKRG montris plej bonaj rezultoj, identigante 8 el 9 elprovitaj radiketoj laborantaj ĉe la kernnivelo sen falsaj pozitivoj (radikiloj Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit kaj Sutekh estis identigitaj, sed Keysniffer, kiu estas kerno. modulo, estis maltrafita kun keylogger, ne rootkit en la laŭvorta signifo). Por komparo, la pakaĵoj AIDE, OSSEC kaj Rootkit Hunter detektis 2 el 9 rootkits, dum Chkrootkit ne detektis iujn ajn. Samtempe, LKRG ne subtenas la detekton de rootkits situantaj en uzantspaco, do la plej granda efikeco estas atingita uzante kombinaĵon de AIDE kaj LKRG, kiu ebligis identigi 14 el 15 rootkits de ĉiuj specoj.

Aldone, oni povas rimarki, ke la distribua programisto Whonix ekiris formado pretaj pakaĵoj kun DKMS por Debian, Whonix, Qubes kaj Kicksecure, kaj pakaĵo por Arch Linukso jam ĝisdatigita al versio 0.8. Pakoj kun LKRG ankaŭ haveblas en la rusa ALT Linukso и Astra Linukso.

Kontrolado de integreco en LKRG estas farita komparante la realan kodon kaj datumojn de la kerno kaj moduloj, iujn gravajn datumstrukturojn kaj CPU-agordojn kun stokitaj haŝoj aŭ kopioj de la respondaj memorareoj, datumstrukturoj aŭ registroj. Ĉekoj estas aktivigitaj kaj periode per tempigilo kaj sur la okazo de diversaj okazaĵoj.

Determini la eblan uzon de ekspluatoj kaj blokado de atakoj estas efektivigita en la stadio antaŭ ol la kerno disponigas aliron al rimedoj (ekzemple, antaŭ malfermi dosieron), sed post kiam la procezo ricevis neaŭtorizitajn permesojn (ekzemple, ŝanĝante la UID). Kiam neaŭtorizita konduto estas detektita, procezoj estas devigitaj finiĝi defaŭlte, kio sufiĉas por bloki multajn ekspluatojn.

fonto: opennet.ru

Aldoni komenton