Ngaleupaskeun modul LKRG 0.8 pikeun nangtayungan tina eksploitasi kerentanan dina kernel Linux.

Proyék Openwall diterbitkeun release modul kernel LKRG 0.8 (Linux Kernel Runtime Guard), dirancang pikeun ngadeteksi sareng meungpeuk serangan sareng palanggaran integritas struktur kernel. Salaku conto, modul tiasa ngajagi tina parobihan anu teu sah kana kernel anu ngajalankeun sareng nyobian ngarobih idin prosés pangguna (ngadeteksi panggunaan eksploitasi). Modul ieu cocog pikeun ngatur panyalindungan ngalawan eksploitasi anu parantos dipikanyaho pikeun kernel Linux (contona, dina kaayaan dimana hese ngapdet kernel dina sistem), sareng pikeun ngalawan eksploitasi pikeun kerentanan anu teu dipikanyaho. Kodeu proyék disebarkeun ku dilisensikeun dina GPLv2.

Diantara parobahan dina versi anyar:

  • Posisi proyék LKRG parantos dirobih, anu henteu deui dibagi kana subsistem anu misah pikeun mariksa integritas sareng nangtoskeun panggunaan eksploitasi, tapi dibere salaku produk lengkep pikeun ngaidentipikasi serangan sareng sagala rupa pelanggaran integritas;
  • Kasaluyuan disayogikeun sareng kernel Linux tina 5.3 dugi ka 5.7, kitu ogé sareng kernel anu disusun sareng optimasi GCC agrésif, tanpa pilihan CONFIG_USB sareng CONFIG_STACKTRACE atanapi sareng pilihan CONFIG_UNWINDER_ORC, kitu ogé sareng kernel anu henteu ngagaduhan fungsi hooked LKRG, upami tiasa. jadi dispensed kalawan;
  • Nalika ngawangun, sababaraha setélan kernel CONFIG_* wajib dipariksa pikeun ngahasilkeun pesen kasalahan anu bermakna tinimbang kacilakaan anu teu jelas;
  • Ditambahkeun dukungan pikeun mode sayaga (ACPI S3, ditunda ka RAM) sareng mode sare (S4, ditunda kana disk);
  • Ditambahkeun dukungan DKMS kana Makefile;
  • Pangrojong ékspérimén pikeun platform ARM 32-bit parantos dilaksanakeun (diuji dina Raspberry Pi 3 Model B). Saméméhna aya rojongan AArch64 (ARM64) geus dimekarkeun pikeun nyadiakeun kasaluyuan jeung dewan buah prambus Pi 4;
  • Kait anyar parantos ditambah, kalebet panangan telepon anu sanggup () pikeun ngaidentipikasi langkung saé eksploitasi anu ngamanipulasi "kamampuhan", sanes prosés ID (surat kapercayaan keur utusan);
  • Logika anyar parantos diajukeun pikeun ngadeteksi usaha kabur larangan namespace (contona, tina wadah Docker);
  • Dina sistem x86-64, bit SMAP (Supervisor Mode Access Prevention) dipariksa sarta diterapkeun, dirancang pikeun meungpeuk aksés ka data spasi pamaké tina kode husus ngajalankeun di tingkat kernel. SMEP (Supervisor Mode Execution Prevention) panyalindungan dilaksanakeun saméméhna;
  • Salila operasi, setélan LKRG disimpen dina kaca mémori anu biasana dibaca wungkul;
  • Inpormasi logging anu paling mangpaat pikeun serangan (contona, inpormasi ngeunaan alamat dina kernel) dugi ka modeu debugging (log_level=4 sareng langkung luhur), anu ditumpurkeun sacara standar.
  • Skalabilitas tina database tracking prosés geus ngaronjat - tinimbang hiji tangkal rb ditangtayungan ku hiji spinlock, tabel hash 512 tangkal rb ditangtayungan ku 512 baca-tulis konci dipaké;
  • A mode geus dilaksanakeun sarta diaktipkeun sacara standar, nu integritas prosés identifiers mindeng dipariksa ukur keur tugas ayeuna, sarta ogé optionally pikeun aktip (hudang up) tugas. Pikeun pancén séjén anu dina kaayaan saré atawa digawé tanpa ngakses kernel API dikawasa ku LKRG, pamariksaan dilaksanakeun kirang sering.
  • Ditambahkeun sysctl anyar jeung parameter modul keur fine-tuning LKRG, kitu ogé dua sysctl pikeun konfigurasi saderhana ku milih ti sét setélan fine-tuning (profil) disiapkeun ku pamekar;
  • Setélan standar parantos dirobih pikeun ngahontal kasaimbangan anu langkung saimbang antara laju deteksi palanggaran sareng efektivitas réspon, di hiji sisi, sareng dampak kana kinerja sareng résiko positip palsu, di sisi sanésna;
  • File unit systemd parantos didesain ulang pikeun ngamuat modul LKRG dina awal boot (pilihan garis paréntah kernel tiasa dianggo pikeun nganonaktipkeun modul);

Ningali optimasi anu diusulkeun dina sékrési énggal, pangurangan kinerja nalika nganggo LKRG 0.8 diperkirakeun 2.5% dina modeu standar ("beurat") sareng 2% dina modeu lampu ("lampu").

Dina hiji nembe dilaksanakeun panalungtikan éféktivitas bungkusan pikeun detecting rootkits LKRG nunjukkeun hasil pangalusna, ngaidentipikasi 8 ti 9 rootkits diuji digawé di tingkat kernel tanpa positip palsu (rootkits Diamorphine, Madu Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptil, Rootfoo Linux Ubuntu Rootkit jeung Sutekh ieu dicirikeun, tapi Keysniffer, nu kernel a. modul, ieu lasut kalawan keylogger a, lain rootkit dina rasa literal). Pikeun babandingan, bungkusan AIDE, OSSEC sareng Rootkit Hunter ngadeteksi 2 ti 9 rootkit, sedengkeun Chkrootkit henteu ngadeteksi nanaon. Dina waktos anu sami, LKRG henteu ngadukung deteksi rootkit anu aya di rohangan pangguna, ku kituna efisiensi anu paling hébat dihontal nalika nganggo kombinasi AIDE sareng LKRG, anu ngamungkinkeun pikeun ngaidentipikasi 14 tina 15 rootkit sadaya jinis.

Salaku tambahan, éta tiasa dicatet yén pamekar distribusi Whonix ngamimitian ngawangun bungkusan siap-siap sareng DKMS pikeun Debian, Whonix, Qubes sareng Kicksecure, sareng pakét pikeun Arch Linux Ubuntu parantos diropéa kana versi 0.8. Bungkusan sareng LKRG ogé sayogi dina basa Rusia alt linux и AstraLinux.

Integritas mariksa di LKRG dipigawé ku ngabandingkeun kode sabenerna sarta data tina kernel jeung modul, sababaraha struktur data penting jeung setélan CPU jeung hashes disimpen atawa salinan wewengkon memori saluyu, struktur data atawa registers. Cék diaktipkeun sacara périodik ku waktos sareng nalika lumangsungna sagala rupa acara.

Nangtukeun kamungkinan pamakean eksploitasi sareng blokir serangan dilaksanakeun di panggung sateuacan kernel nyayogikeun aksés kana sumber daya (contona, sateuacan muka file), tapi saatos prosésna nampi idin anu henteu sah (contona, ngarobih UID). Nalika paripolah anu teu diidinan dideteksi, prosés dipaksa pikeun ngeureunkeun sacara standar, anu cekap pikeun meungpeuk seueur garapan.

sumber: opennet.ru

Tambahkeun komentar