ProHoster > Блог > internet vijesti > Checkpoint je predložio zaštitnu tehniku Safe-Linking, što otežava iskorištavanje ranjivosti
Checkpoint je predložio zaštitnu tehniku Safe-Linking, što otežava iskorištavanje ranjivosti
Checkpoint Company predstavljen Zaštitni mehanizam Safe-Linking, koji otežava kreiranje eksploata koji manipulišu definicijom ili modifikacijom pokazivača na bafere dodeljene prilikom izvršavanja malloc poziva. Safe-Linking ne blokira u potpunosti mogućnost iskorišćavanja ranjivosti, ali uz minimalne troškove značajno komplikuje kreiranje određenih kategorija eksploatacije, jer je pored eksploatibilnog prekoračenja bafera potrebno pronaći još jednu ranjivost koja uzrokuje curenje informacija o postavljanje gomile u memoriju.
Zakrpe koje implementiraju Safe-Linking pripremljene su za Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) i Google TCMalloc, a također su predložene za nadogradnju zaštite u Chromiumu (u
Od 2012. Chromium je već ugradio MaskPtr tehniku zaštite koja ima za cilj rješavanje istog problema, ali rješenje iz Checkpointa pokazuje bolje performanse).
Predložene zakrpe su već odobrene za isporuku u avgustovskom izdanju Glibc 3.32 i Sigurno povezivanje će biti omogućeno po defaultu. uClibc-NG podržava Safe-Linking ušao uključeno u izdanje 1.0.33 i omogućeno je po defaultu. Promjene u gperftools-u (stari tcmalloc) prihvaćeno, ali će biti ponuđen kao opcija u budućem izdanju.
Programeri TCMalloc (novi tcmalloc) odbio je prihvatiti amandman, navodeći ozbiljnu degradaciju performansi i potrebu za dodavanjem opsežnih testova kako bi se redovno provjeravalo da li sve radi kako se očekuje. Testiranje inženjera Checkpointa pokazalo je da metoda Safe-Linking ne dovodi do dodatne potrošnje memorije, a performanse pri izvođenju heap operacija su u prosjeku smanjene za samo 0.02%, au najgorem slučaju za 1.5% (za poređenje, režijski troškovi u metoda koja se koristi u Chromiumu procjenjuje se na „manje od 2%“). Inkluzija
Safe-Linking rezultira 2-3 dodatne asemblerske instrukcije koje se izvršavaju svaki put kada se pozove free(), i 3-4 instrukcije svaki put kada se pozove malloc(). Izvođenje faza inicijalizacije i generiranja slučajnih vrijednosti nije potrebno.
Sigurno povezivanje se može koristiti ne samo za poboljšanje sigurnosti raznih implementacija hrpe, već i za dodavanje kontrola integriteta svim strukturama podataka koje koriste jednostruko povezane liste pokazivača postavljenih pored samih bafera. Metoda je vrlo jednostavna za implementaciju i zahtijeva samo dodavanje jednog makroa i primjenu na pokazivače na sljedeći blok u kodu (na primjer, za Glibc se mijenja samo nekoliko linija koda). Metoda se svodi na sljedeće promjene:
Suština metode je korištenje nasumičnih podataka iz ASLR mehanizma randomizacije adresa (mmap_base) za zaštitu jednostruko povezanih lista kao što su Fast-Bins i TCache. Prije nego što se vrijednost primijeni na pokazivač na sljedeći element na listi, vrši konverziju maske i provjerava poravnanje stranice. Pokazivač je zamijenjen rezultatom operacije "(L >> PAGE_SHIFT) XOR (P)", gdje je P vrijednost pokazivača, a L memorijska lokacija na kojoj je pokazivač pohranjen.
Kada se koristi u sistemu ASLR (Address Space Layout Randomization) dio L bitova sa baznom adresom hrpe sadrži nasumične vrijednosti koje se koriste kao ključ za kodiranje P (izvučene 12-bitnom operacijom pomaka za 4096-bajtne stranice). Ova manipulacija smanjuje rizik od otmice pokazivača u eksploataciji, budući da pokazivač nije pohranjen u svom originalnom obliku i njegova zamjena zahtijeva poznavanje informacija o raspodjeli hrpe. Osim toga, kod zakrpe sadrži i dodatnu provjeru za poravnanje bloka, što ne dozvoljava napadaču da zamijeni pokazivač neusklađenom vrijednošću i zahtijeva poznavanje broja bitova koji su poravnati, što na 64-bitnim sistemima dodatno omogućava blokiranje 15 od 16 pokušaja napada koji ne uzimaju u obzir poravnanje.
Metoda je efikasna za zaštitu od napada koji koriste djelomično prepisivanje pokazivača (promjena niskih bajtova), potpuno ponovno pisanje pokazivača (preusmjeravanje na napadačev kod) i promjenu pozicije liste na neusklađenoj adresi. Kao primjer, pokazano je da bi korištenje Safe-Linkinga u malloc-u omogućilo blokiranje eksploatacije nedavno identifikovan od strane istih istraživača ranjivosti CVE-2020-6007 u pametnom svjetlu Philips Hue Bridge, uzrokovano prelivom bafera i omogućava vam da preuzmete kontrolu nad uređajem.