LKRG 0.8 modulua kaleratzea Linux nukleoko ahultasunen ustiapenetik babesteko

Openwall proiektua argitaratu nukleoaren modulua askatzea LKRG 0.8 (Linux Kernel Runtime Guard), nukleoaren egituren osotasunaren erasoak eta urraketak detektatzeko eta blokeatzeko diseinatua. Adibidez, moduluak exekutatzen ari den nukleoan baimenik gabeko aldaketetatik babestu dezake eta erabiltzailearen prozesuen baimenak aldatzen saiakerak (explotazioen erabilera detektatuta). Modulua egokia da Linux nukleorako dagoeneko ezagutzen diren ustiapenen aurkako babesa antolatzeko (adibidez, sisteman nukleoa eguneratzea zaila den egoeretan), bai oraindik ezezagun diren ahultasunen ustiapenei aurre egiteko. Proiektuaren kodea arabera banatuta GPLv2 lizentziapean.

Bertsio berriaren aldaketen artean:

  • LKRG proiektuaren kokapena aldatu da, jada ez dago azpisistema bereizietan banatuta osotasuna egiaztatzeko eta ustiapenen erabilera zehazteko, baizik eta erasoak eta hainbat osotasun-urraketa identifikatzeko produktu oso gisa aurkezten da;
  • Bateragarritasuna 5.3tik 5.7ra bitarteko Linux nukleoekin eskaintzen da, baita GCC optimizazio oldarkorrekin konpilatutako nukleoekin ere, CONFIG_USB eta CONFIG_STACKTRACE aukerarik gabe edo CONFIG_UNWINDER_ORC aukerarekin, baita LKRG engantxatutako funtziorik ez duten nukleoekin ere, baldin eta ahal badute. dispensatu;
  • Eraikitzean, derrigorrezko CONFIG_* nukleoaren ezarpen batzuk egiaztatzen dira errore-mezu esanguratsuak sortzeko hutsegite ilunen ordez;
  • Egonean (ACPI S3, eseki RAMera) eta lo egiteko (S4, eseki diskoan) moduetarako laguntza gehitu da;
  • DKMS laguntza gehitu da Makefile-ra;
  • 32 biteko ARM plataformetarako laguntza esperimentala ezarri da (Raspberry Pi 3 B ereduan probatua). Aurretik eskuragarri zegoen AArch64 (ARM64) euskarria zabaldu egin da Raspberry Pi 4 plakarekin bateragarritasuna emateko;
  • Amu berriak gehitu dira, gai () dei-kudeatzailea barne, manipulatzen duten ustiapenak hobeto identifikatzeko "gaitasun", ez prozesatzeko IDak (Egiaztagiriak);
  • Logika berria proposatu da izen-espazioen murrizketetatik ihes egiteko saiakerak detektatzeko (adibidez, Docker-eko edukiontzietatik);
  • x86-64 sistemetan, SMAP (Supervisor Mode Access Prevention) bit egiaztatu eta aplikatzen da, kernel mailan exekutatzen den kode pribilegioetatik erabiltzaile espazioko datuetarako sarbidea blokeatzeko diseinatuta. Aurretik SMEP (Supervisor Mode Execution Prevention) babesa ezarri zen;
  • Funtzionamenduan, LKRG ezarpenak normalean irakurtzeko soilik den memoria-orri batean jartzen dira;
  • Erasoetarako erabilgarriena izan daitekeen erregistro-informazioa (adibidez, nukleoko helbideei buruzko informazioa) arazketa modura mugatzen da (log_level=4 eta handiagoa), lehenespenez desgaituta dagoena.
  • Prozesuaren jarraipenaren datu-basearen eskalagarritasuna areagotu egin da - spinlock batek babestutako RB zuhaitz baten ordez, 512 irakurketa-idazketa blokeoek babestutako 512 RB zuhaitzen hash taula erabiltzen da;
  • Modu bat inplementatu eta gaitu da lehenespenez, zeinetan prozesu-identifikatzaileen osotasuna uneko atazarako soilik egiaztatzen den sarritan, eta aukeran aktibatutako (esnatzeko) zereginetarako ere. Lo-egoeran dauden edo LKRG-ek kontrolatutako nukleoaren APIra sartu gabe lan egiten duten beste zereginetarako, egiaztapena gutxiagotan egiten da.
  • LKRG sintonizatzeko sysctl eta modulu parametro berriak gehitu dira, baita konfigurazio sinplifikatzeko bi sysctl ere garatzaileek prestatutako doikuntza-ezarpenen (profilen) multzoetatik hautatuz;
  • Lehenetsitako ezarpenak aldatu dira, alde batetik, urraketak hautemateko abiaduraren eta erantzunaren eraginkortasunaren eta errendimenduaren eta positibo faltsuen arriskuaren arteko oreka orekatuagoa lortzeko;
  • Systemd unitate-fitxategia birdiseinatu da LKRG modulua abiaraztearen hasieran kargatzeko (nukleoko komando lerroko aukera erabil daiteke modulua desgaitzeko);

Oharra berrian proposatutako optimizazioak kontuan hartuta, LKRG 0.8 erabiltzean errendimendu murrizketa % 2.5eko modu lehenetsian ("astuna") eta % 2ko modu argian ("argia") kalkulatzen da.

Egin berri den batean azterketa LKRG rootkit-ak detektatzeko paketeen eraginkortasuna erakutsi emaitzarik onenak, kernel mailan positibo faltsurik gabe lan egiten duten probatutako 8 rootkit identifikatuz (Dimorphine, Honey Pot Bears, LilyOfTheValley, Nuk9 Gh3st, Puszek, Reptile, Rootfoo Linux Rootkit eta Sutekh identifikatu ziren, baina Keysniffer, kernel bat dena). modulua, keylogger batekin galdu zen, eta ez rootkit batekin zentzu literalean). Konparazio baterako, AIDE, OSSEC eta Rootkit Hunter paketeek 0 rootkit-etik 2 detektatu zituzten, eta Chkrootkit-ek ez zuen detektatu. Aldi berean, LKRG-k ez du onartzen erabiltzailearen espazioan kokatutako rootkit-ak detektatzeko, beraz, eraginkortasun handiena AIDE eta LKRG-en konbinazioa erabiltzean lortzen da, mota guztietako 9 rootkitetatik 14 identifikatzea posible izan baita.

Gainera, esan daiteke banaketa garatzaileak Whonix hasi nintzen eraketa prest egindako paketeak Debian, Whonix, Qubes eta Kicksecure-rako DKMSrekin, eta pakete bat Arch Linux dagoeneko eguneratuta dago 0.8 bertsiora. LKRG duten paketeak errusieraz ere eskuragarri daude alt linux ΠΈ AstraLinux.

LKRG-en osotasunaren egiaztapena nukleoaren eta moduluen benetako kodea eta datuak, datu-egitura garrantzitsu batzuk eta PUZaren ezarpenak gordetako hashekin edo dagozkien memoria-eremuen, datu-egituren edo erregistroen kopiekin alderatuz egiten da. Kontrolak aldian-aldian aktibatzen dira tenporizadorearen bidez eta hainbat gertaera gertatzen direnean.

Baliabideen erabilera posiblea zehaztea eta erasoak blokeatzea nukleoak baliabideetarako sarbidea ematen duen fasean egiten da (adibidez, fitxategi bat ireki aurretik), baina prozesuak baimenik gabeko baimenak jaso ondoren (adibidez, UIDa aldatzea). Baimenik gabeko portaera detektatzen denean, prozesuak lehenespenez amaitzera behartzen dira, eta hori nahikoa da ustiapen asko blokeatzeko.

Iturria: opennet.ru

Gehitu iruzkin berria