Linux ядросунун кемчиликтерин эксплуатациялоодон коргоо үчүн LKRG 0.8 модулунун чыгарылышы

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, оперативдүү эстутумга токтотуу) жана уйку (S4, дискке токтотуу) режимдерине колдоо кошулду;
  • Makefileге DKMS колдоосу кошулду;
  • 32-биттик ARM платформалары үчүн эксперименталдык колдоо ишке ашырылган (Raspberry Pi 3 Model Bде сыналган). Мурда жеткиликтүү AArch64 (ARM64) колдоосу Raspberry Pi 4 тактасы менен шайкештикти камсыз кылуу үчүн кеңейтилген;
  • Жаңы илгичтер, анын ичинде манипуляциялоочу эксплуаттарды жакшыраак аныктоо үчүн capable() чалуу иштеткичтери кошулду.мүмкүнчүлүктөрү", процесс ID'лери эмес (ишеним грамоталары);
  • Ат мейкиндигинин чектөөлөрүнөн качуу аракеттерин аныктоо үчүн жаңы логика сунушталды (мисалы, Docker контейнерлеринен);
  • x86-64 системаларында SMAP (Supervisor Mode Access Prevention) бити текшерилет жана ядро ​​деңгээлинде иштеген артыкчылыктуу коддон колдонуучу мейкиндигинин маалыматтарына кирүү мүмкүнчүлүгүн бөгөттөө үчүн иштелип чыккан. SMEP (Supervisor Mode Execution Prevention) коргоо мурда ишке ашырылган;
  • Иштөө учурунда LKRG орнотуулары эстутум барагына жайгаштырылат, ал көбүнчө окуу үчүн гана болот;
  • Кол салуулар үчүн эң пайдалуу болушу мүмкүн болгон маалыматтарды журналга жазуу (мисалы, ядродогу даректер жөнүндө маалымат) мүчүлүштүктөрдү оңдоо режими менен чектелет (log_level=4 жана андан жогору), ал демейки боюнча өчүрүлгөн.
  • Процесске көз салуу маалыматтар базасынын масштабдуулугу жогорулатылды - бир спинлок менен корголгон бир RB дарагынын ордуна, 512 окуу-жазуу кулпусу менен корголгон 512 RB дарактарынын хэш таблицасы колдонулат;
  • Режим ишке ашырылган жана демейки боюнча иштетилген, мында процесстин идентификаторлорунун бүтүндүгү көбүнчө учурдагы тапшырма үчүн, ошондой эле активдештирилген (ойгонуу) тапшырмалар үчүн гана текшерилет. Уйку абалындагы же LKRG тарабынан көзөмөлдөнгөн API ядросуна кирбестен иштеген башка тапшырмалар үчүн текшерүү азыраак аткарылат.
  • LKRGди тактоо үчүн жаңы sysctl жана модуль параметрлери, ошондой эле иштеп чыгуучулар тарабынан даярдалган тактоо орнотууларынын (профильдеринин) топтомун тандоо аркылуу жөнөкөйлөштүрүлгөн конфигурация үчүн эки Sysctl кошулду;
  • Демейки жөндөөлөр бир жагынан бузууларды аныктоо ылдамдыгы менен жооптун натыйжалуулугунун, экинчи жагынан, аткарууга тийгизген таасири жана жалган позитивдүү тобокелдиктин ортосундагы тең салмактуураак баланска жетүү үчүн өзгөртүлдү;
  • Системдик бирдик файлы LKRG модулун жүктөөнүн башталышында жүктөө үчүн кайра конструкцияланган (модулду өчүрүү үчүн ядронун буйрук сабынын опциясын колдонсо болот);

Жаңы чыгарылышта сунушталган оптималдаштырууну эске алуу менен, LKRG 0.8ди колдонууда өндүрүмдүүлүктүн төмөндөшү демейки режимде («оор») 2.5% жана жарык режиминде («жарык») 2%га бааланат.

Жакында болуп өткөн окуу руткиттерди аныктоо үчүн пакеттердин эффективдүүлүгү LKRG көрсөттү эң жакшы натыйжалар, 8 тесттен өткөн 9 руткиттердин ичинен 3 идентификатору жалган позитивдери жок ядро ​​деңгээлинде иштеген (rootkits Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk0 Gh2st, Puszek, Reptile, Rootfoo Linux Rootkit жана Sutekh аныкталды, бирок Keysniffernel болуп саналат. модулу, түз маанисинде руткит эмес, keylogger менен өткөрүп жиберилген). Салыштыруу үчүн, AIDE, OSSEC жана Rootkit Hunter пакеттери 9 руткиттин 14син аныктады, ал эми Chkrootkit эч кимди тапкан жок. Ошол эле учурда LKRG колдонуучу мейкиндигинде жайгашкан руткиттерди аныктоону колдобойт, ошондуктан эң чоң эффективдүүлүккө AIDE жана LKRG айкалышын колдонууда жетишилет, бул бардык түрдөгү 15 руткиттердин XNUMXүн аныктоого мүмкүндүк берди.

Кошумча, бул бөлүштүрүү иштеп белгилей кетүү керек Whonix башталды пайда болушу Debian, Whonix, Qubes жана Kicksecure үчүн DKMS менен даяр пакеттер жана Arch Linux буга чейин 0.8 версиясына жаңыртылган. LKRG менен пакеттер орус тилинде да бар ALT Linux и AstraLinux.

ЛКРГде бүтүндүктү текшерүү ядронун жана модулдардын, кээ бир маанилүү маалымат структураларынын жана CPU орнотууларынын иш жүзүндөгү кодун жана маалыматтарын сакталган хэштер же тиешелүү эстутум аймактарынын, маалымат структураларынын же регистрлердин көчүрмөлөрү менен салыштыруу жолу менен жүргүзүлөт. Текшерүүлөр мезгил-мезгили менен таймер менен жана ар кандай окуялар болгондо жандырылат.

Эксплойттордун мүмкүн болгон колдонулушун аныктоо жана чабуулдарды бөгөттөө ядро ​​ресурстарга кирүү мүмкүнчүлүгүн бергенге чейин (мисалы, файлды ачуунун алдында), бирок процесс уруксатсыз уруксаттарды алгандан кийин (мисалы, UIDди өзгөртүү) жүргүзүлөт. Уруксатсыз жүрүм-турум аныкталганда процесстер демейки боюнча токтотууга аргасыз болушат, бул көптөгөн эксплуатацияларды бөгөт коюу үчүн жетиштүү.

Source: opennet.ru

Комментарий кошуу