Нашри модули LKRG 0.8 барои муҳофизат аз истисмори осебпазирӣ дар ядрои Linux

Лоиҳаи Openwall нашр баровардани модули ядро ​​​​ LKRG 0.8 (Linux Kernel Runtime Guard), ки барои ошкор ва бастани ҳамлаҳо ва вайронкунии якпорчагии сохторҳои ядроӣ пешбинӣ шудааст. Масалан, модул метавонад аз тағироти беиҷозат ба ядрои иҷрошаванда ва кӯшиши тағир додани иҷозатҳои равандҳои корбар (ошкор кардани истифодаи истисморҳо) муҳофизат кунад. Модул ҳам барои ташкили муҳофизат аз эксплойтҳои аллакай маълум барои ядрои Linux (масалан, дар ҳолатҳое, ки навсозии ядро ​​дар система мушкил аст) ва ҳам барои муқобила бо истисморҳо барои осебпазириҳои ҳанӯз номаълум мувофиқ аст. Рамзи лоиҳа паҳн мекунад тибқи GPLv2 литсензия шудааст.

Дар байни тағйирот дар версияи нав:

  • Ҷойгиркунии лоиҳаи LKRG тағир дода шуд, ки он дигар ба зерсистемаҳои алоҳида барои санҷиши якпорчагӣ ва муайян кардани истифодаи истисморҳо тақсим карда намешавад, балки ҳамчун як маҳсулоти мукаммал барои муайян кардани ҳамлаҳо ва вайронкуниҳои гуногуни беайбӣ пешниҳод карда мешавад;
  • Мутобиқат бо ядроҳои Linux аз 5.3 то 5.7, инчунин бо ядроҳое, ки бо оптимизатсияи хашмгини GCC тартиб дода шудаанд, бидуни имконоти CONFIG_USB ва CONFIG_STACKTRACE ё бо опсияи CONFIG_UNWINDER_ORC, инчунин бо ядроҳое, ки агар онҳо LKR кор накунанд, таъмин карда мешавад. озод карда шудан;
  • Ҳангоми сохтан, баъзе танзимоти ядрои CONFIG_* барои тавлиди паёмҳои хатогии пурмазмун ба ҷои садамаҳои норавшан санҷида мешаванд;
  • Дастгирии иловагӣ барои режимҳои интизорӣ (ACPI S3, боздоштани ба RAM) ва хоб (S4, боздоштан ба диск);
  • Дастгирии DKMS ба Makefile илова карда шуд;
  • Дастгирии таҷрибавӣ барои платформаҳои 32-битии ARM амалӣ карда шуд (дар Raspberry Pi 3 Model B озмуда шудааст). Дастгирии қаблан дастраси AArch64 (ARM64) барои таъмини мутобиқат бо тахтаи Raspberry Pi 4 васеъ карда шуд;
  • Хокҳои нав илова карда шуданд, аз ҷумла коркардкунандаи занги тавоно() барои беҳтар муайян кардани истисморҳое, ки идора мекунанд "Имкониятҳо", на идентификаторҳои коркард (шаҳодатномаҳо);
  • Мантиқи нав барои ошкор кардани кӯшишҳои фирор аз маҳдудиятҳои фазои ном пешниҳод шудааст (масалан, аз контейнерҳои Docker);
  • Дар системаҳои x86-64, бит SMAP (Пешгирии дастрасии супервайзер) тафтиш ва татбиқ карда мешавад, ки барои бастани дастрасӣ ба маълумоти фазои корбар аз коди имтиёзнок, ки дар сатҳи ядро ​​кор мекунад, тарҳрезӣ шудааст. Муҳофизати SMEP (Пешгирии режими иҷроиши супервайзер) қаблан амалӣ карда шуда буд;
  • Ҳангоми кор, танзимоти LKRG дар саҳифаи хотира ҷойгир карда мешаванд, ки одатан танҳо барои хондан аст;
  • Сабти иттилооте, ки барои ҳамлаҳо бештар муфид аст (масалан, маълумот дар бораи суроғаҳо дар ядро) бо режими ислоҳи хатогӣ (log_level=4 ва болотар) маҳдуд аст, ки бо нобаёнӣ ғайрифаъол аст.
  • Миқёспазирии махзани пайгирии равандҳо зиёд карда шуд - ба ҷои як дарахти RB, ки бо як спинлок ҳифз шудааст, ҷадвали хэш аз 512 дарахти RB, ки бо 512 қулфи хондан ва навиштан ҳифз шудаанд, истифода мешавад;
  • Режим ба таври нобаёнӣ амалӣ ва фаъол карда шудааст, ки дар он якпорчагии идентификаторҳои раванд аксар вақт танҳо барои вазифаи ҷорӣ ва инчунин ихтиёрӣ барои вазифаҳои фаъол (бедор) тафтиш карда мешавад. Барои дигар вазифаҳое, ки дар ҳолати хоб ҳастанд ё бе дастрасӣ ба API ядрои аз ҷониби LKRG идорашаванда кор мекунанд, санҷиш камтар анҷом дода мешавад.
  • Параметрҳои нави sysctl ва модул барои танзими дақиқи LKRG, инчунин ду sysctl барои конфигуратсияи содда тавассути интихоб аз маҷмӯи танзимоти дақиқ (профилҳо), ки таҳиягарон таҳия кардаанд, илова карда шуданд;
  • Танзимоти пешфарз барои ноил шудан ба мувозинати мутавозин байни суръати ошкор кардани қонуншиканиҳо ва самаранокии вокуниш, аз як тараф ва таъсир ба кор ва хатари мусбати бардурӯғ, аз тарафи дигар тағир дода шуданд;
  • Файли воҳиди системавӣ барои бор кардани модули LKRG дар аввали боркунӣ аз нав тарҳрезӣ шудааст (барои хомӯш кардани модул як варианти сатри фармони ядро ​​метавонад истифода шавад);

Бо дарназардошти оптимизатсияҳое, ки дар версияи нав пешниҳод шудаанд, коҳиши самаранокӣ ҳангоми истифодаи LKRG 0.8 дар ҳолати пешфарз ("вазнин") 2.5% ва дар ҳолати рӯшноӣ ("сабук") 2% ҳисоб карда мешавад.

Дар ба карибй барпо гардид тадқиқот самаранокии бастаҳо барои ошкор кардани руткитҳои LKRG нишон дод натиҷаҳои беҳтарин, муайян кардани 8 аз 9 руткитҳои санҷидашуда, ки дар сатҳи ядро ​​бе позитивҳои бардурӯғ кор мекунанд (руткитҳо Diamorphine, Honey Pot Bear, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit ва Sutekh муайян карда шуданд, аммо Keysniffernel, ки он аст. модул, бо keylogger беҷавоб шуд, на руткит ба маънои аслӣ). Барои муқоиса, бастаҳои AIDE, OSSEC ва Rootkit Hunter аз 2 руткит 9-тоашро ошкор карданд, дар ҳоле ки Chkrootkit ягонтоашро ошкор накардааст. Дар айни замон, LKRG ошкор кардани руткитҳои дар фазои корбар ҷойгиршударо дастгирӣ намекунад, аз ин рӯ самаранокии баландтарин ҳангоми истифодаи маҷмӯи AIDE ва LKRG ба даст меояд, ки имкон дод аз 14 руткитҳои ҳама намудҳо 15-тоашро муайян кунад.

Илова бар ин, метавон қайд кард, ки таҳиягари тақсимот Кимиёи саодат сар шуд ташаккули бастаҳои тайёр бо DKMS барои Debian, Whonix, Qubes ва Kicksecure ва баста барои Коғази Linux аллакай ба версияи 0.8 навсозӣ шудааст. Бастаҳои дорои LKRG низ ба забони русӣ дастрасанд alt linux и AstraLinux.

Санҷиши якпорчагӣ дар LKRG бо роҳи муқоисаи код ва маълумоти воқеии ядро ​​ва модулҳо, баъзе сохторҳои муҳими додаҳо ва танзимоти CPU бо хэшҳои ҳифзшуда ё нусхаҳои минтақаҳои хотираи мувофиқ, сохторҳои додаҳо ё регистрҳо анҷом дода мешавад. Санҷишҳо ҳам давра ба давра тавассути таймер ва ҳам ҳангоми рух додани ҳодисаҳои гуногун фаъол карда мешаванд.

Муайян кардани истифодаи эҳтимолии истисмор ва бастани ҳамлаҳо дар марҳилаи пеш аз он ки ядро ​​дастрасӣ ба захираҳоро таъмин кунад (масалан, пеш аз кушодани файл), аммо пас аз гирифтани иҷозатҳои беиҷозат (масалан, тағир додани UID) анҷом дода мешавад. Вақте ки рафтори беиҷозат ошкор карда мешавад, равандҳо маҷбур мешаванд, ки бо нобаёнӣ қатъ шаванд, ки барои бастани бисёр истисморҳо кофӣ аст.

Манбаъ: opennet.ru

Илова Эзоҳ