Мушкилоти амниятӣ дар часпакҳое, ки аз ҷониби корманди Huawei барои ҳифзи ядрои Linux пешниҳод шудааст

Таҳиягарони лоиҳаи Grsecurity кашид таваҷҷуҳ ба мавҷудияти осебпазирии ночиз истифодашаванда дар маҷмӯи пач HKSP (Huawei Kernel Self Protection), чанд рӯз пеш пешниҳод кардааст барои беҳтар кардани амнияти ядрои Linux. Вазъият хотиррасон мекунад парванда бо Samsung, ки дар он кӯшиши беҳтар кардани амнияти система боиси пайдоиши осебпазирии нав гардид ва осебпазирии дастгоҳҳоро осон кард.

Часбҳои HKSP аз ҷониби як корманди Huawei нашр шудаанд, ки зикри Huawei дар профили GitHub ва калимаи Huawei дар номи лоиҳа истифода мешаванд (HKSP - Huawei Kernel Self Protection). Ҳамзамон, намояндагони Huawei иртиботи лоиҳаи HKSP бо ширкатро рад карданд ва изҳор доштанд, ки код бо ташаббуси шахсии корманд таҳия шудааст, лоиҳаи расмии Huawei нест ва дар маҳсулоти ширкат истифода намешавад. Дар Саҳифаи GitHub HKSP ба таври бозгашт пас аз кашф осебпазирӣ низ илова карда шуд қайд кунед, ки лоиҳа дар вақти холии ман барои мақсадҳои тадқиқотӣ таҳия карда мешавад.

HKSP тағиротро дар бар мегирад, аз қабили тасодуфии офсетҳо дар сохтори кредитӣ, муҳофизат аз ҳамлаҳо ба фазои номи идентификатори корбар (фазои номи pid), ҷудо кардани стеки раванд аз минтақаи mmap, ошкор кардани зангҳои дукарата ба функсияи kfree, бастани ихроҷҳо тавассути псевдо -FS /proc (/proc/ {модулҳо, калидҳо, корбарони калидӣ}, /proc/sys/kernel/* ва /proc/sys/vm/mmap_min_addr, /proc/kallsyms), тасодуфии беҳтаршудаи фазои корбар, Ptrace иловагӣ муҳофизат, муҳофизати мукаммали smap ва smep, қобилияти манъ кардани ирсоли маълумот тавассути розеткаҳои хом, бастани суроғаҳои нодуруст дар васлаки UDP ва тафтиши якпорчагии равандҳои иҷрошаванда. Он инчунин модули ядрои Ksguard-ро дар бар мегирад, ки барои ошкор кардани кӯшишҳои ҷорӣ кардани руткитҳои маъмулӣ нигаронида шудааст.

Часбҳо даъват кард Грег Кроа-Хартман, ки барои нигоҳ доштани шохаи устувори ядрои Linux масъул аст, ҷолиб буд ва аз муаллиф хоҳиш кард, ки ямоқи монолитиро ба қисмҳо тақсим кунад, то баррасӣ ва пешбарӣ ба ядрои асосӣ содда карда шавад. Кис Кук, сардор лоиҳа ба пешбарй кардан технологияи муҳофизати фаъол дар ядрои Linux, инчунин мусбат ба часбҳо посух дод ва дар байни мушкилот, таваҷҷӯҳро ба пайвастшавӣ ба меъмории x86 ва хусусияти огоҳии бисёр режимҳо ҷалб кард, ки танҳо маълумот дар бораи мушкилотро сабт мекунанд, аммо кӯшиш намекунанд, ки онро маҳкам кунанд.

Омӯзиши патч аз ҷониби таҳиягарони Grsecurity бисёр хатогиҳо ва заъфҳои кодро ошкор кард ва инчунин набудани модели таҳдидро нишон дод, ки ба онҳо имкон медиҳад, ки қобилиятҳои лоиҳаро ба таври кофӣ доварӣ кунанд. Барои равшан нишон додани он, ки код бидуни истифодаи усулҳои барномасозии бехатар навишта шудааст, мисоли осебпазирии ночиз дар коркардкунанда оварда шудааст.
файли /proc/ksguard/state, ки бо ҳуқуқҳои 0777 сохта шудааст, маънои онро дорад, ки ҳама дастрасии навиштан доранд. Функсияи ksg_state_write, ки барои таҳлили фармонҳои ба /proc/ksguard/state навишташуда истифода мешавад, буфери tmp[32]-ро эҷод мекунад, ки ба он маълумот дар асоси андозаи операнди интиқолшуда, бе назардошти андозаи буфери мақсаднок ва бидуни тафтиши параметр бо андозаи сатр. Онхое. Барои аз нав навиштани як қисми стек ядро, ҳамлакунанда танҳо бояд хати махсус форматшударо ба /proc/ksguard/state нависад.

статикӣ ssize_t ksg_state_write(файл сохтори *файл, const char __user *buf,
size_t len, loff_t *офсет)
{
арзиши u64;
char tmp[32];
андоза_t n = 0;

агар (copy_from_user(tmp, buf, len))
бозгашт -1;

арзиш = simple_strtoul(tmp, '\0', 10);
...

Прототипи истисмор:

char buf[4096] = {};
int fd = кушода ("/proc/ksguard/state", O_WRONLY);
агар (fd >= 0) {
нависед (fd, buf, sizeof (buf));
наздик (fd);
}

Манбаъ: opennet.ru

Илова Эзоҳ