Checkpoint je predložio tehniku ​​zaštite Safe-Linking, što otežava iskorištavanje ranjivosti

Tvrtka Checkpoint predstavio Zaštitni mehanizam Safe-Linking, koji otežava stvaranje eksploatacija koje manipuliraju definicijom ili modifikacijom pokazivača na međuspremnike dodijeljene prilikom izvršavanja malloc poziva. Safe-Linking ne blokira u potpunosti mogućnost iskorištavanja ranjivosti, ali uz minimalne troškove značajno komplicira kreiranje određenih kategorija exploita, budući da je osim eksploatacijskog prekoračenja međuspremnika potrebno pronaći još jednu ranjivost koja uzrokuje curenje informacija o smještaj hrpe 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 tehniku ​​zaštite MaskPtr s ciljem rješavanja istog problema, ali rješenje iz Checkpointa pokazuje bolje performanse).
Predložene zakrpe već su odobrene za isporuku u izdanju za kolovoz Glibc 3.32 i sigurno povezivanje bit će omogućeno prema zadanim postavkama. uClibc-NG podržava sigurno povezivanje ušao uključeno u izdanje 1.0.33 i omogućeno je prema zadanim postavkama. Promjene u gperftools (stari tcmalloc) prihvaćeno, ali će biti ponuđen kao opcija u budućem izdanju.

Developeri TCMalloc (novi tcmalloc) odbio prihvatiti promijeniti, navodeći ozbiljno smanjenje performansi i potrebu dodavanja opsežnih testova za redovitu provjeru radi li sve prema očekivanjima. Testiranje inženjera Checkpointa pokazalo je da metoda sigurnog povezivanja ne dovodi do dodatne potrošnje memorije, a performanse pri izvođenju heap operacija smanjene su u prosjeku za samo 0.02%, au najgorem slučaju za 1.5% (za usporedbu, režijski troškovi u metoda korištena u Chromiumu procjenjuje se na "manje od 2%"). Uključenje, Ubrajanje
Sigurno povezivanje rezultira 2-3 dodatne instrukcije za sklapanje koje se izvršavaju svaki put kada se pozove free(), i 3-4 instrukcije svaki put kada se pozove malloc(). Pokretanje faza inicijalizacije i generiranja slučajnih vrijednosti nije potrebno.

Checkpoint je predložio tehniku ​​zaštite Safe-Linking, što otežava iskorištavanje ranjivosti

Sigurno povezivanje može se koristiti ne samo za poboljšanje sigurnosti različitih implementacija hrpe, već i za dodavanje kontrola cjelovitosti svim strukturama podataka koje koriste pojedinačno povezane popise pokazivača postavljenih pored samih međuspremnika. Metoda je vrlo jednostavna za implementaciju i zahtijeva samo dodavanje jedne makronaredbe i njegovu primjenu na pokazivače na sljedeći blok u kodu (na primjer, za Glibc promjene samo nekoliko redaka koda). Metoda se svodi na sljedeće promjene:

+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

- nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
...

Bit metode je korištenje slučajnih podataka iz ASLR mehanizma za slučajni odabir adresa (mmap_base) za zaštitu pojedinačno povezanih popisa kao što su Fast-Bins i TCache. Prije nego što se vrijednost primijeni na pokazivač na sljedeći element na popisu, ona izvodi pretvorbu maske i provjerava poravnanje stranice. Pokazivač se zamjenjuje rezultatom operacije "(L >> PAGE_SHIFT) XOR (P)", gdje je P vrijednost pokazivača, a L memorijska lokacija na kojoj je pokazivač pohranjen.

Checkpoint je predložio tehniku ​​zaštite Safe-Linking, što otežava iskorištavanje ranjivosti

Kada se koristi u sustavu ASLR (Address Space Layout Randomization) dio L bitova s ​​baznom adresom hrpe sadrži nasumične vrijednosti koje se koriste kao ključ za kodiranje P (izdvojeno 12-bitnom operacijom pomaka za stranice od 4096 bajta). Ova manipulacija smanjuje rizik od otmice pokazivača u eksploataciji, budući da pokazivač nije pohranjen u izvornom obliku i njegova zamjena zahtijeva poznavanje raspodjele hrpe. Osim toga, kod zakrpe sadrži i dodatnu provjeru poravnanja blokova, koja napadaču ne dopušta zamjenu pokazivača neusklađenom vrijednošću i zahtijeva poznavanje broja bitova koji su poravnati, što na 64-bitnim sustavima dodatno omogućuje blokiranje 15 od 16 pokušaja napada koji ne uzimaju u obzir poravnanje.

Metoda je učinkovita za zaštitu od napada koji koriste djelomično prepisivanje pokazivača (promjena niskih bajtova), potpuno prepisivanje pokazivača (preusmjeravanje na napadačev kod) i promjenu pozicije popisa na neusklađenoj adresi. Kao primjer, pokazano je da bi uporaba Safe-Linkinga u malloc-u nedavno omogućila blokiranje iskorištavanja identificiran od strane istih istraživača ranjivosti CVE-2020-6007 u pametnom svjetlu Philips Hue Bridge, uzrokovano prekoračenjem međuspremnika i omogućuje vam kontrolu nad uređajem.

Izvor: opennet.ru

Dodajte komentar