Turvaprobleemid paikades, mille Huawei töötaja pakkus välja Linuxi tuuma kaitsmiseks

Grsecurity projekti arendajad joonistas tähelepanu triviaalselt ärakasutatava haavatavuse olemasolule paigakomplektis HKSP (Huawei Kernel Self Protection), paar päeva tagasi pakutud Linuxi tuuma turvalisuse parandamiseks. Olukord tuletab meelde ümbris Samsungiga, milles katse parandada süsteemi turvalisust tõi kaasa uue haavatavuse ja muutis seadmete kompromiteerimise lihtsamaks.

HKSP plaastrid avaldas Huawei töötaja, need sisaldavad GitHubi profiilis Huawei mainimist ja kasutavad projekti nimes sõna Huawei (HKSP – Huawei Kernel Self Protection). Samas eitasid Huawei esindajad HKSP projekti seotust ettevõttega ja väitsid, et kood töötati välja töötaja isiklikul initsiatiivil, see ei ole ametlik Huawei projekt ning seda ei kasutata ettevõtte toodetes. Peal GitHubi leht HKSP tagasiulatuvalt pärast avastamist ka haavatavused lisati Pange tähele, et projekti töötatakse välja minu vabal ajal uurimistöö eesmärgil.

HKSP sisaldab selliseid muudatusi nagu nihkete randomiseerimine krediitstruktuuris, kaitse kasutaja identifikaatori nimeruumi (pid nimeruumi) rünnakute eest, protsessipinu eraldamine mmap piirkonnast, kfree funktsiooni topeltkutsete tuvastamine, pseudo kaudu lekete blokeerimine. -FS /proc (/proc/ {moodulid, võtmed, võtmekasutajad}, /proc/sys/kernel/* ja /proc/sys/vm/mmap_min_addr, /proc/kallsyms), täiustatud kasutajaruumi aadresside randomiseerimine, täiendav Ptrace kaitse, täiustatud smp- ja smep-kaitse, võimalus keelata andmete saatmine töötlemata pesade kaudu, UDP-pesades ebaõigete aadresside blokeerimine ja töötavate protsesside terviklikkuse kontrollimine. See sisaldab ka Ksguardi tuumamoodulit, mis on suunatud tüüpiliste juurkomplektide juurutamise katsete tuvastamisele.

Plaastrid helistas Greg Kroah-Hartman, kes vastutab Linuxi tuuma stabiilse haru säilitamise eest, pakkus huvi ja palus autoril jagada monoliitne plaaster osadeks, et lihtsustada ülevaatamist ja põhituuma üleviimist. Kees Cook, pea projekt edasi edendamine aktiivne kaitsetehnoloogia ka Linuxi tuumas positiivselt reageeris plaastritele ja juhtis probleemide hulgas tähelepanu siduvusele x86 arhitektuuriga ja paljude režiimide teavitusloomusele, mis ainult logivad probleemi kohta teavet, kuid ei püüa seda blokeerida.

Grsecurity arendajate plaastri uuring paljastas koodis palju vigu ja nõrkusi ning näitas ka ohumudeli puudumist, mis võimaldaks neil projekti võimalusi adekvaatselt hinnata. Et selgelt näidata, et kood on kirjutatud ilma turvalisi programmeerimismeetodeid kasutamata, on toodud näide töötleja triviaalsest haavatavusest.
fail /proc/ksguard/state, mis luuakse õigustega 0777, mis tähendab, et kõigil on kirjutamisõigus. Funktsioon ksg_state_write, mida kasutatakse faili /proc/ksguard/state kirjutatud käskude sõelumiseks, loob tmp[32] puhvri, kuhu kirjutatakse andmed edastatud operandi suuruse alusel, võtmata arvesse sihtpuhvri suurust ja ilma parameetri kontrollimine stringi suurusega. Need. Osa kerneli pinu ülekirjutamiseks peab ründaja lihtsalt kirjutama faili /proc/ksguard/state spetsiaalselt vormindatud rea.

static ssize_t ksg_state_write(struct fail *fail, const char __user *buf,
suurus_t len, loff_t *nihe)
{
u64 väärtus;
char tmp[32];
suurus_t n = 0;

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

väärtus = simple_strtoul(tmp, '\0', 10);
...

Kasutage prototüüpi:

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

Allikas: opennet.ru

Lisa kommentaar