Awọn iṣoro aabo ni awọn abulẹ ti a dabaa nipasẹ oṣiṣẹ Huawei kan lati daabobo ekuro Linux

Awọn Difelopa ti ise agbese Grasecurity yipada ifarabalẹ si wiwa ti ailagbara aibikita ninu eto alemo Hkp (Idaabobo Ara-ẹni Huawei Kernel), awọn ọjọ diẹ sẹhin dabaa lati mu aabo ti ekuro Linux dara si. Ipo naa leti irú pẹlu Samsung, ninu eyiti igbiyanju lati ṣe ilọsiwaju aabo eto ti o yorisi ifarahan ti ailagbara titun kan ati ki o jẹ ki o rọrun lati fi ẹnuko awọn ẹrọ.

Awọn abulẹ HKSP ni a tẹjade nipasẹ oṣiṣẹ Huawei kan, pẹlu mẹnuba Huawei ninu profaili GitHub, ati lo ọrọ Huawei ni orukọ iṣẹ akanṣe (HKSP - Idaabobo Ara-ẹni Huawei Kernel). Ni akoko kanna, awọn aṣoju Huawei sẹ asopọ asopọ ti iṣẹ HKSP pẹlu ile-iṣẹ naa ati sọ pe koodu ti ni idagbasoke lori ipilẹṣẹ ti ara ẹni ti oṣiṣẹ, kii ṣe iṣẹ Huawei osise ati pe ko lo ninu awọn ọja ile-iṣẹ naa. Lori Oju-iwe GitHub HKSP retroactively lẹhin Awari vulnerabilities tun ti a fi kun akiyesi pe ise agbese na ti wa ni idagbasoke ni akoko apoju mi ​​fun awọn idi iwadi.

HKSP pẹlu awọn ayipada gẹgẹbi awọn aiṣedeede ti awọn aiṣedeede ninu eto igbẹkẹle, aabo lodi si awọn ikọlu lori aaye idanimọ olumulo (pid namespace), ipinya ti akopọ ilana lati agbegbe mmap, wiwa awọn ipe meji si iṣẹ kfree, idilọwọ awọn n jo nipasẹ pseudo -FS /proc (/ proc / {modulu, awọn bọtini, bọtini-olumulo}, /proc/sys/kernel/* ati /proc/sys/vm/mmap_min_addr, /proc/kallsyms), ilọsiwaju aaye adirẹsi olumulo, Ptrace afikun Idaabobo, imudara smap ati aabo smep, agbara lati ṣe idiwọ fifiranṣẹ data nipasẹ awọn sockets aise, didi awọn adirẹsi ti ko tọ ni awọn iho UDP ati ṣayẹwo iduroṣinṣin ti awọn ilana ṣiṣe. O tun pẹlu module kernel Ksguard, eyiti o ni ero lati ṣawari awọn igbiyanju lati ṣafihan awọn rootkits aṣoju.

Awọn abulẹ ti a npe ni Greg Kroah-Hartman, ẹniti o ni iduro fun mimu ẹka iduroṣinṣin ti ekuro Linux, jẹ iwulo, o beere lọwọ onkọwe lati fọ alemo monolithic si awọn apakan lati jẹ ki atunyẹwo rọrun ati igbega si ekuro akọkọ. Kees Cook, ori igbiyanju on igbega ti nṣiṣe lọwọ Idaabobo ọna ẹrọ ni Linux ekuro, tun daadaa dahun si awọn abulẹ ati, laarin awọn iṣoro naa, fa ifojusi si isopọmọ si faaji x86 ati iseda iwifunni ti ọpọlọpọ awọn ipo, eyiti o wọle alaye nikan nipa iṣoro naa, ṣugbọn maṣe gbiyanju lati dènà rẹ.

Iwadi ti alemo nipasẹ awọn olupilẹṣẹ Grsecurity ṣafihan ọpọlọpọ awọn aṣiṣe ati ailagbara ninu koodu naa, ati tun ṣafihan isansa ti awoṣe irokeke ti yoo gba wọn laaye lati ṣe idajọ awọn agbara iṣẹ akanṣe naa. Lati ṣe afihan ni kedere pe a ti kọ koodu naa laisi lilo awọn ọna siseto to ni aabo, apẹẹrẹ ti ailagbara bintin ninu oluṣakoso ni a fun.
faili /proc/ksguard/state, eyiti o ṣẹda pẹlu awọn ẹtọ 0777, ti o tumọ si pe gbogbo eniyan ni iwọle kikọ. Iṣẹ ksg_state_write, ti a lo lati ṣe itupalẹ awọn aṣẹ ti a kọ si /proc/ksguard/state, ṣẹda ifipamọ tmp[32] si eyiti a kọ data ti o da lori iwọn operand ti kọja, laisi akiyesi iwọn ifipamọ ibi-afẹde ati laisi yiyewo paramita pẹlu awọn okun iwọn. Awon. Lati kọ apakan ti akopọ ekuro, ikọlu kan nilo lati kọ laini ti a ṣe ni pataki si /proc/ksguard/state.

static ssize_t ksg_state_write (faili struct * faili, const char __user * buf,
lẹnsi size_t, loff_t * aiṣedeede)
{
u64 iye;
char tmp[32];
iwọn_t n = 0;

ti o ba jẹ (copy_from_user (tmp, buf, lẹnsi))
pada -1;

iye = simple_strtoul (tmp, '\0', 10);
...

Lo nilokulo apẹrẹ:

char buf[4096] = {};
int fd = ṣiṣi (“/ proc/ksguard/state”, O_WRONLY);
ti o ba jẹ (fd >= 0) {
kọ (fd, buf, sizeof (buf));
sunmọ (fd);
}

orisun: opennet.ru

Fi ọrọìwòye kun