Linux 5.4 өзөгү ядронун ички түзүлүштөрүнө тамыр мүмкүнчүлүгүн чектөө үчүн тактарды алды

Линус Торвалдс Мен алып Linux 5.4 ядросунун келе жаткан релизине киргизилген бул тактардын топтому "тоз', сунушталган Дэвид Хоуэллс (Кызыл шляпа) жана Мэттью Гарретт (Мэттью Гаррет, Google'да иштейт) тамыр колдонуучусунун ядрого кирүү мүмкүнчүлүгүн чектөө үчүн. Бөгөттөө менен байланышкан функция кошумча жүктөлгөн LSM модулунда камтылган (Linux коопсуздук модулу), бул UID 0 менен ядронун ортосунда тоскоолдук жаратып, кээ бир төмөнкү деңгээлдеги функцияларды чектейт.

Эгерде чабуулчу кодду тамыр укуктары менен аткарууга жетишсе, ал өз кодун ядро ​​деңгээлинде аткара алат, мисалы, kexec аркылуу ядрону алмаштыруу же /dev/kmem аркылуу эстутумду окуу/жазуу. Мындай иш-аракеттин эң айкын натыйжасы болушу мүмкүн айланма жол UEFI Secure Boot же ядро ​​деңгээлинде сакталган купуя маалыматтарды алуу.

Башында, тамыр чектөө функциялары текшерилген жүктөөнүн коргоосун күчөтүү контекстинде иштелип чыккан жана дистрибуциялар бир топ убакыттан бери UEFI Secure Bootту айланып өтүүнү бөгөттөө үчүн үчүнчү тараптын патчтарын колдонуп келишкен. Ошол эле учурда, мындай чектөөлөр улам ядронун негизги курамына киргизилген эмес пикир келишпестиктер аларды ишке ашырууда жана иштеп жаткан системалардын бузулушунан коркушат. "Бөгөттөө" модулу UEFI Secure Boot менен байланышпаган өзүнчө подсистема түрүндө кайра иштелип чыккан бөлүштүрүүдө колдонулган патчтарды өзүнө сиңирген.

Бөгөттөө режими /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes мүчүлүштүктөрдү оңдоо режими, mmiotrace, tracefs, BPF, PCMCIA CIS (Карта маалымат структурасы), кээ бир ACPI интерфейстерине жана CPUга кирүүнү чектейт. MSR регистрлери, kexec_file жана kexec_load чалуулары бөгөттөлгөн, уйку режимине тыюу салынган, PCI түзмөктөрү үчүн DMA колдонуу чектелген, EFI өзгөрмөлөрүнөн ACPI кодун импорттоого тыюу салынган,
Киргизүү/чыгаруу порттору менен манипуляцияларга, анын ичинде үзгүлтүккө учуратуу номерин жана сериялык порт үчүн киргизүү/чыгаруу портун өзгөртүүгө жол берилбейт.

Демейки боюнча, кулпулоо модулу жигердүү эмес, ал SECURITY_LOCKDOWN_LSM опциясы kconfigде көрсөтүлгөндө курулат жана “lockdown=” өзөк параметри, “/sys/kernel/security/lockdown” башкаруу файлы же чогултуу параметрлери аркылуу иштетилет. LOCK_DOWN_ERNEL_FORCE_*, "бүтүндүк" жана "жашыруундуулук" баалуулуктарын ала алат. Биринчи учурда колдонуучу мейкиндигинен иштеп жаткан ядрого өзгөртүүлөрдү киргизүүгө мүмкүндүк берүүчү функциялар бөгөттөлөт, ал эми экинчи учурда ядродон купуя маалыматты алуу үчүн колдонула турган функциялар да өчүрүлөт.

Белгилеп кетүүчү нерсе, кулпулоо ядрого стандарттуу кирүүнү гана чектейт, бирок алсыздыктарды колдонуунун натыйжасында модификациялардан коргобойт. Openwall долбоору тарабынан эксплоиттер колдонулганда иштеп жаткан ядродогу өзгөрүүлөрдү бөгөттөө иштеп өзүнчө модулу ЛКРГ (Linux Kernel Runtime Guard).

Source: opennet.ru

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