Sigurnosni problemi u zakrpama koje je predložio zaposlenik Huaweija za zaštitu Linux kernela

Programeri projekta Grsecurity izvučeno obratite pažnju na prisustvo trivijalne ranjivosti koja se može iskoristiti u setu zakrpa HKSP (Huawei Kernel Self Protection), prije nekoliko dana predloženo za poboljšanje sigurnosti Linux kernela. Situacija podsjeća kućište sa Samsung-om, u kojem je pokušaj poboljšanja sigurnosti sistema doveo do pojave nove ranjivosti i olakšao kompromitovanje uređaja.

HKSP zakrpe je objavio zaposlenik Huaweija, uključuju spominjanje Huaweija u GitHub profilu, a koriste riječ Huawei u nazivu projekta (HKSP - Huawei Kernel Self Protection). Istovremeno, predstavnici Huaweija negirali su povezanost projekta HKSP s kompanijom i naveli da je kod razvijen na ličnu inicijativu zaposlenika, da nije službeni Huaweijev projekat i da se ne koristi u proizvodima kompanije. On GitHub stranica HKSP retroaktivno nakon otkrića ranjivosti takođe je dodan napominjem da se projekat razvija u moje slobodno vrijeme u istraživačke svrhe.

HKSP uključuje promjene kao što su randomizacija pomaka u strukturi kredita, zaštita od napada na imenski prostor identifikatora korisnika (pid namespace), odvajanje procesnog steka od mmap područja, detekcija dvostrukih poziva kfree funkciji, blokiranje curenja kroz pseudo -FS /proc (/proc/ {moduli, ključevi, korisnici ključeva}, /proc/sys/kernel/* i /proc/sys/vm/mmap_min_addr, /proc/kallsyms), poboljšana randomizacija adresa korisničkog prostora, dodatni Ptrace zaštita, poboljšana smap i smep zaštita, mogućnost zabrane slanja podataka preko sirovih soketa, blokiranje netačnih adresa u UDP soketima i provjera integriteta pokrenutih procesa. Takođe uključuje Ksguard kernel modul, koji ima za cilj otkrivanje pokušaja uvođenja tipičnih rootkita.

Zakrpe pozvao Greg Kroah-Hartman, koji je odgovoran za održavanje stabilne grane Linux kernela, bio je od interesa i zamolio je autora da razbije monolitnu zakrpu na dijelove kako bi se pojednostavio pregled i promocija u glavnom kernelu. Kees Cook, glava nacrt na promocija tehnologija aktivne zaštite u Linux kernelu, također položitelʹno je odgovorio na zakrpe i, među problemima, skrenuo pažnju na vezivanje za x86 arhitekturu i prirodu notifikacije mnogih modova, koji samo evidentiraju informacije o problemu, ali ga ne pokušavaju blokirati.

Studija zakrpe koju su izvršili programeri Grsecurity otkrila je mnoge greške i slabosti u kodu, a pokazala je i odsustvo modela prijetnji koji bi im omogućio da adekvatno procijene mogućnosti projekta. Da bi se jasno pokazalo da je kod napisan bez korištenja metoda sigurnog programiranja, dat je primjer trivijalne ranjivosti u rukovaocu.
fajl /proc/ksguard/state, koji je kreiran sa pravima 0777, što implicira da svi imaju pristup pisanju. Funkcija ksg_state_write, koja se koristi za raščlanjivanje komandi napisanih u /proc/ksguard/state, kreira bafer tmp[32] u koji se upisuju podaci na osnovu veličine proslijeđenog operanda, bez uzimanja u obzir veličine ciljnog bafera i bez provjera parametra sa veličinom niza. One. Da prepiše dio steka kernela, napadač samo treba da upiše posebno formatiranu liniju u /proc/ksguard/state.

static ssize_t ksg_state_write(struct file *file, const char __user *buf,
size_t len, loff_t *offset)
{
u64 vrijednost;
char tmp[32];
size_t n = 0;

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

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

Prototip eksploatacije:

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

izvor: opennet.ru

Dodajte komentar