Pagpagawas sa LKRG 0.8 module aron mapanalipdan batok sa pagpahimulos sa mga kahuyangan sa Linux kernel

Proyekto sa Openwall nga gipatik pagpagawas sa kernel module LKRG 0.8 (Linux Kernel Runtime Guard), gidesinyo sa pag-ila ug pagbabag sa mga pag-atake ug mga paglapas sa integridad sa mga istruktura sa kernel. Pananglitan, ang module makapanalipod batok sa dili awtorisado nga mga pagbag-o sa nagdagan nga kernel ug mosulay sa pag-usab sa mga pagtugot sa mga proseso sa user (pag-ila sa paggamit sa mga pagpahimulos). Ang module angay alang sa pag-organisar og proteksyon batok sa nahibal-an na nga mga pagpahimulos alang sa Linux kernel (pananglitan, sa mga sitwasyon diin lisud ang pag-update sa kernel sa sistema), ug alang sa pag-counter sa mga pagpahimulos alang sa wala pa nahibal-an nga mga kahuyangan. Kodigo sa proyekto giapod-apod sa lisensyado ubos sa GPLv2.

Lakip sa mga pagbag-o sa bag-ong bersyon:

  • Ang pagpahimutang sa proyekto sa LKRG giusab, nga wala na gibahin sa bulag nga mga subsystem alang sa pagsusi sa integridad ug pagtino sa paggamit sa mga pagpahimulos, apan gipresentar isip usa ka kompleto nga produkto alang sa pag-ila sa mga pag-atake ug lainlaing mga paglapas sa integridad;
  • Gihatag ang pagkaangay sa mga kernel sa Linux gikan sa 5.3 hangtod sa 5.7, ingon man sa mga kernel nga gihugpong sa mga agresibo nga pag-optimize sa GCC, nga wala ang mga kapilian sa CONFIG_USB ug CONFIG_STACKTRACE o sa kapilian nga CONFIG_UNWINDER_ORC, ingon man sa mga kernel nga wala’y mga function nga naka-lock sa LKRG, kung mahimo nila. isalikway sa;
  • Kung magtukod, pipila ka mandatory nga CONFIG_* kernel settings gisusi aron makamugna og makahuluganon nga mga mensahe sa sayop imbes nga dili klaro nga mga crash;
  • Gidugang nga suporta alang sa standby (ACPI S3, suspindihon sa RAM) ug pagkatulog (S4, suspindihon sa disk) nga mga mode;
  • Gidugang ang suporta sa DKMS sa Makefile;
  • Ang eksperimento nga suporta alang sa 32-bit ARM nga mga plataporma gipatuman (gisulayan sa Raspberry Pi 3 Model B). Ang kaniadto nga magamit nga suporta sa AArch64 (ARM64) gipalapdan aron mahatagan ang pagkaangay sa Raspberry Pi 4 board;
  • Gidugang ang bag-ong mga kaw-it, lakip ang usa ka makahimo () call handler aron mas mailhan ang mga pagpahimulos nga nagmaniobra sa "Kapabilidad", dili mga ID sa pagproseso (mga kredensyal);
  • Gisugyot ang bag-ong lohika alang sa pag-ila sa mga pagsulay nga makalingkawas sa mga pagdili sa namespace (pananglitan, gikan sa mga sudlanan sa Docker);
  • Sa x86-64 nga mga sistema, ang SMAP (Supervisor Mode Access Prevention) bit gisusi ug gipadapat, gidesinyo aron babagan ang access sa user space data gikan sa privileged code nga nagdagan sa kernel level. Ang proteksyon sa SMEP (Supervisor Mode Execution Prevention) gipatuman kaniadto;
  • Atol sa operasyon, ang mga setting sa LKRG gibutang sa usa ka panid sa panumduman nga kasagaran read-only;
  • Ang pag-log sa impormasyon nga mahimong labing mapuslanon alang sa mga pag-atake (pananglitan, impormasyon bahin sa mga adres sa kernel) limitado sa debugging mode (log_level=4 ug mas taas pa), nga gi-disable pinaagi sa default.
  • Ang scalability sa database sa pagsubay sa proseso nadugangan - imbes nga usa ka RB tree nga giprotektahan sa usa ka spinlock, usa ka hash table sa 512 RB trees nga giprotektahan sa 512 read-write lock ang gigamit;
  • Ang usa ka mode gipatuman ug gipalihok pinaagi sa default, diin ang integridad sa mga identifier sa proseso kanunay nga gisusi alang lamang sa kasamtangan nga buluhaton, ug usab opsyonal alang sa gi-aktibo (pagmata) nga mga buluhaton. Alang sa ubang mga buluhaton nga naa sa kahimtang sa pagkatulog o nagtrabaho nga wala maka-access sa kernel API nga kontrolado sa LKRG, ang tseke gihimo nga dili kaayo kanunay.
  • Gidugang ang bag-ong sysctl ug module nga mga parameter para sa fine-tuning nga LKRG, ingon man duha ka sysctl para sa gipasimple nga configuration pinaagi sa pagpili gikan sa mga set sa fine-tuning settings (profiles) nga giandam sa mga developers;
  • Ang mga default nga setting giusab aron makab-ot ang usa ka mas balanse nga balanse tali sa katulin sa pag-ila sa mga paglapas ug sa pagka-epektibo sa tubag, sa usa ka bahin, ug ang epekto sa pasundayag ug ang risgo sa mga sayup nga positibo, sa pikas bahin;
  • Ang systemd unit file gidesinyo pag-usab aron makarga ang LKRG module sayo sa boot (usa ka kernel command line nga opsyon mahimong gamiton aron ma-disable ang module);

Gikonsiderar ang mga pag-optimize nga gisugyot sa bag-ong pagpagawas, ang pagkunhod sa pasundayag kung gigamit ang LKRG 0.8 gibanabana nga 2.5% sa default mode ("bug-at") ug 2% sa light mode ("kahayag").

Sa bag-o lang gipahigayon panukiduki pagka-epektibo sa mga pakete alang sa pag-ila sa mga rootkit LKRG gipakita labing maayo nga mga resulta, pag-ila sa 8 sa 9 nga gisulayan nga mga rootkit nga nagtrabaho sa lebel sa kernel nga walay bakak nga mga positibo (rootkits Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit ug Sutekh giila, apan Keysniffer, nga usa ka kernel module, gimingaw sa usa ka keylogger, dili usa ka rootkit sa literal nga diwa). Alang sa pagtandi, ang AIDE, OSSEC ug Rootkit Hunter nga mga pakete nakamatikod sa 2 sa 9 nga mga rootkit, samtang ang Chkrootkit wala makamatikod sa bisan unsa. Sa parehas nga oras, wala gisuportahan sa LKRG ang pag-ila sa mga rootkit nga nahimutang sa wanang sa gumagamit, mao nga ang labing kadaghan nga kaarang nakab-ot kung gigamit ang kombinasyon sa AIDE ug LKRG, nga nagpaposible nga mailhan ang 14 sa 15 nga mga rootkit sa tanan nga mga lahi.

Dugang pa, matikdan nga ang developer sa pag-apod-apod Whonix nagsugod paghulma andam nga mga pakete nga adunay DKMS alang sa Debian, Whonix, Qubes ug Kicksecure, ug usa ka pakete alang sa Arch Linux na-update na sa bersyon 0.8. Ang mga pakete nga adunay LKRG magamit usab sa Russian alt linux ΠΈ AstraLinux.

Ang pagsusi sa integridad sa LKRG gihimo pinaagi sa pagtandi sa aktuwal nga code ug data sa kernel ug modules, pipila ka importante nga istruktura sa datos ug mga setting sa CPU nga adunay gitipigan nga mga hash o mga kopya sa katugbang nga mga lugar sa memorya, mga istruktura sa datos o mga rehistro. Ang mga tseke gi-aktibo matag karon ug unya pinaagi sa timer ug kung adunay lainlaing mga panghitabo.

Ang pagtino sa posible nga paggamit sa mga pagpahimulos ug pag-block sa mga pag-atake gihimo sa entablado sa wala pa ang kernel naghatag access sa mga kapanguhaan (pananglitan, sa wala pa magbukas sa usa ka file), apan pagkahuman ang proseso nakadawat dili awtorisado nga pagtugot (pananglitan, pagbag-o sa UID). Kung makit-an ang dili awtorisado nga pamatasan, ang mga proseso mapugos nga tapuson pinaagi sa default, nga igo aron mapugngan ang daghang mga pagpahimulos.

Source: opennet.ru

Idugang sa usa ka comment