Checkpoint lagði til verndartækni fyrir örugga tengingu, sem gerir það erfiðara að nýta veikleika

Checkpoint fyrirtæki fram Verndarkerfi fyrir örugga tengingu, sem gerir það erfitt að búa til hetjudáð sem vinna með skilgreiningu eða breytingu á ábendingum á biðminni sem úthlutað er þegar malloc símtal er keyrt. Safe-Linking lokar ekki algjörlega fyrir möguleikann á að nýta veikleika, en með lágmarks kostnaði torveldar það verulega að búa til ákveðna flokka hetjudáða, þar sem til viðbótar við hagnýtanlegt biðminniflæði er nauðsynlegt að finna annan varnarleysi sem veldur leka upplýsinga um staðsetningu haugsins í minni.

Plástrar sem innleiða Safe-Linking hafa verið útbúnir fyrir Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) og Google TCMalloc, og er einnig lagt til að uppfæra vernd í Chromium (í
Síðan 2012 hefur Chromium þegar byggt inn MaskPtr verndartæknina sem miðar að því að leysa sama vandamál, en lausnin frá Checkpoint sýnir meiri afköst).
Fyrirhugaðir plástrar hafa þegar verið samþykktir til afhendingar í ágústútgáfunni glibc 3.32 og Safe-Linking verður sjálfgefið virkt. uClibc-NG styður Safe-Linking inn innifalinn í útgáfu 1.0.33 og er sjálfgefið virkt. Breytingar á gperftools (gamla tcmalloc) samþykkt, en verður boðið sem valkostur í framtíðarútgáfu.

Nýskráning TCMalloc (nýtt tcmalloc) neitaði að samþykkja breyta, þar sem vitnað er í alvarlega skerðingu á frammistöðu og nauðsyn þess að bæta við víðtækum prófum til að athuga reglulega hvort allt virki eins og búist var við. Prófanir Checkpoint verkfræðinga sýndu að Safe-Linking aðferðin leiðir ekki til aukinnar minnisnotkunar og afköst við hrúguaðgerðir minnka að meðaltali um aðeins 0.02% og í versta falli um 1.5% (til samanburðar er kostnaður í aðferðin sem notuð er í Chromium er áætluð „minna en 2%“). Inntaka
Örugg tenging leiðir til þess að 2-3 samsetningarleiðbeiningar til viðbótar eru keyrðar í hvert sinn sem free() er kallað, og 3-4 leiðbeiningar í hvert sinn sem malloc() er kallað. Ekki þarf að keyra frumstillingar- og slembigildamyndunarstigin.

Checkpoint lagði til verndartækni fyrir örugga tengingu, sem gerir það erfiðara að nýta veikleika

Safe-Linking er ekki aðeins hægt að nota til að bæta öryggi ýmissa hrúguútfærslur, heldur einnig til að bæta heilleikastýringum við hvaða gagnaskipulag sem er sem notar eintengda lista yfir ábendingar sem eru settir við hliðina á biðmunum sjálfum. Aðferðin er mjög einföld í framkvæmd og krefst þess að bæta við einu fjölvi og nota það á ábendingar í næsta blokk í kóðanum (til dæmis fyrir Glibc breytingar bara nokkrar línur af kóða). Aðferðin gengur út á eftirfarandi breytingar:

+#skilgreina PROTECT_PTR(pos, ptr) \
+ ((__tegund (ptr)) ((((stærð_t) pos) >> 12) ^ ((stærð_t) ptr)))

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

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

Kjarni aðferðarinnar er að nota handahófskennd gögn frá slembivalskerfi ASLR vistfanga (mmap_base) til að vernda eintengda lista eins og Fast-Bins og TCache. Áður en gildið er notað á bendilinn á næsta þátt á listanum, framkvæmir það grímubreytingu og athugar hvort síðu sé raðað. Bendilinn er skipt út fyrir niðurstöðu aðgerðarinnar "(L >> PAGE_SHIFT) XOR (P)", þar sem P er gildi bendillsins og L er minnisstaðurinn þar sem bendillinn er geymdur.

Checkpoint lagði til verndartækni fyrir örugga tengingu, sem gerir það erfiðara að nýta veikleika

Þegar það er notað í kerfinu ASLR (Address Space Layout Randomization) hluti af L bitunum með hrúgugrunnfanginu inniheldur handahófskennd gildi sem eru notuð sem lykill til að umrita P (dregið út með 12 bita vaktaðgerð fyrir 4096 bæta síður). Þessi meðhöndlun dregur úr hættu á að bendilinn sé rænt í hagnýtingu, þar sem bendillinn er ekki geymdur í sinni upprunalegu mynd og til að skipta um hann þarf þekkingu á hrúguúthlutuninni. Að auki inniheldur plásturskóðinn einnig viðbótarathugun á blokkaraðlögun, sem gerir árásarmanni ekki kleift að skipta um bendi með ójafnað gildi og krefst þekkingar á fjölda bita sem eru samræmdir, sem á 64 bita kerfum leyfir að auki lokun 15 af 16 árásstilraunum sem taka ekki tillit til samstillingar.

Aðferðin er áhrifarík til að verjast árásum þar sem bendill er endurskrifaður að hluta (breytir lágum bætum), fullkominni endurskrifun bendilsins (endurvísun á kóða árásarmannsins) og til að breyta listastöðu á ósamræmdu heimilisfangi. Sem dæmi er sýnt fram á að notkun Safe-Linking í malloc myndi leyfa að hindra nýtingu nýlega auðkennd af sömu varnarleysisfræðingum CVE-2020-6007 í Philips Hue Bridge snjallljósinu, sem stafar af biðminni flæði og gerir þér kleift að ná stjórn á tækinu.

Heimild: opennet.ru

Bæta við athugasemd