Grsecurity proiektuaren garatzaileak
HKSP adabakiak Huawei-ko langile batek argitaratu zituen, GitHub profilean Huaweiren aipamena jasotzen dute eta Huawei hitza erabiltzen dute proiektuaren izenean (HKSP - Huawei Kernel Self Protection). Aldi berean, Huawei-ko ordezkariek ukatu egin zuten HKSP proiektuaren konexioa enpresarekin eta kodea langilearen ekimen pertsonalaren arabera garatu zela adierazi zuten, ez dela Huawei proiektu ofiziala eta ez dela konpainiaren produktuetan erabiltzen. On
HKSP-k aldaketak barne hartzen ditu, hala nola, kredi egituran desplazamenduak aleatorizatzea, erabiltzailearen identifikatzailearen izen-espazioaren aurkako erasoen aurkako babesa (pid namespace), prozesuaren pila mmap eremutik bereiztea, kfree funtziorako dei bikoitzak detektatzea, ihesak blokeatzea. -FS /proc (/proc/ {moduluak, gakoak, gako-erabiltzaileak}, /proc/sys/kernel/* eta /proc/sys/vm/mmap_min_addr, /proc/kallsyms), erabiltzaile-espazio-helbideen aleatorizazioa hobetua, Ptrace gehigarria babesa, smap eta smep babes hobetua, socket gordinen bidez datuak bidaltzea debekatzeko gaitasuna, UDP socketetan helbide okerrak blokeatzea eta martxan dauden prozesuen osotasuna egiaztatzea. Ksguard kernel modulua ere barne hartzen du, rootkit tipikoak sartzeko saiakerak detektatzeko xedea duena.
Adabakiak
Grsecurity-ko garatzaileek egindako adabakiaren azterketak akats eta ahulgune asko agerian utzi zituen kodean, eta proiektuaren gaitasunak behar bezala epaitzeko aukera emango dien mehatxu-eredurik ez dagoela ere erakutsi zuen. Kodea programazio-metodo seguruak erabili gabe idatzi zela argi eta garbi erakusteko, kudeatzailean ahultasun hutsal baten adibidea ematen da.
/proc/ksguard/state fitxategia, 0777 eskubideekin sortzen dena, guztiek idazteko sarbidea dutela esan nahi duena. ksg_state_write funtzioak, /proc/ksguard/state-n idatzitako komandoak analizatzeko erabiltzen dena, tmp[32] buffer bat sortzen du eta bertan datuak idazten dira pasatako operandoaren tamainaren arabera, xede-buffer-aren tamaina kontuan hartu gabe eta gabe. parametroa katearen tamainarekin egiaztatzea. Horiek. Kernel-pilaren zati bat gainidazteko, erasotzaile batek formatu berezia duen lerro bat idatzi besterik ez du egin behar /proc/ksguard/state-ra.
static ssize_t ksg_state_write (egitura fitxategia *fitxategia, const char __user *buf,
size_t len, loff_t *offset)
{
u64 balioa;
char tmp[32];
tamaina_t n = 0;
bada (kopiatu_erabiltzailetik (tmp, buf, len))
itzuli -1;
balioa = simple_strtoul(tmp, '\0', 10);
...
Exploit prototipoa:
char buf[4096] = {};
int fd = open ("/proc/ksguard/state", O_WRONLY);
bada (fd >= 0) {
write(fd, buf, sizeof(buf));
itxi(fd);
}
Iturria: opennet.ru