Awọn Difelopa ti ise agbese Grasecurity
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
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ẹ
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