Checkpoint ka ofruar një teknikë mbrojtëse të quajtur Safe-Linking, e cila e bën të vështirë shfrytëzimin e dobësive

Kompania Checkpoint paraqiti mechanizmi i mbrojtjes Safe-Linking, që e vështirëson krijimin e eksploitëve, duke manipuluar në përcaktimin ose ndryshimin e treguesve në bufra, të ndarë gjatë thirrjes së malloc. Safe-Linking nuk bllokon plotësisht mundësinë e shfrytëzimit të dobësive, por me shpenzime minimale komplikon në mënyrë të konsiderueshme krijimin e disa kategorive të eksploitëve, duke pasur parasysh se përveç mbushjes së bufrit të shfrytëzuar është e nevojshme të gjendet edhe një dobësi tjetër, që shkakton një rrjedhje informacioni mbi vendndodhjen e kupës në memorie.

Patch-et me implementimin e Safe-Linking janë përgatitur për Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) dhe Google TCMalloc, si dhe janë propozuar për përmirësimin e mbrojtjes në Chromium (në
Chromium është vendosur një teknik mbrojtjeje e fokusuar në zgjidhjen e të njëjtës problem MaskPtr që nga viti 2012, por zgjidhja nga Checkpoint tregon performancë më të lartë).
Patch-et e propozuara tashmë janë miratuar për t'u përfshirë në lëshimin e gushtit Glibc 3.32 dhe aplikimi i Safe-Linking do të përfshihet si default. Në uClibc-NG mbështetje për Safe-Linking u përfshi në lëshimin 1.0.33 dhe është përfshirë si default. Në gperftools (tcmalloc i vjetër) ndryshimet janë miratuar, por do të ofrohen në një nga lëshimet e ardhshme si një opsion.

Zhvilluesit TCMalloc (tcmalloc i ri) u refuzua ndryshimi, duke iu referuar një rënie të konsiderueshme të performancës dhe nevojës për të shtuar teste të avancuara për verifikimin e rregullt që gjithçka funksionon siç duhet. Testimi nga inxhinierët e Checkpoint ka treguar se metoda Safe-Linking nuk çon në shpenzime të panevojshme të memories, ndërsa performanca gjatë operacioneve me heap zvogëlohet në mesatare me vetëm 0.02%, dhe në rastin më të keq deri në 1.5% (për krahasim, kostot e mbetjeve në metodën e përdorur në Chromium vlerësohen si “më pak se 2%”). Aktivizimi
i Safe-Linking çon në ekzekutimin e 2-3 instrukcioneve të assembler-it në çdo thirrje free() dhe 3-4 instrukcioneve gjatë thirrjes malloc(). Nisi i etapave të inicializimit dhe gjenerimit të vlerave të rastësishme nuk është e nevojshme.

Checkpoint ka ofruar një teknikë mbrojtëse të quajtur Safe-Linking, e cila e bën të vështirë shfrytëzimin e dobësive

Safe-Linking mund të përdoret jo vetëm për të rritur sigurinë e realizimeve të ndryshme të tavanit (heap), por gjithashtu për të shtuar mjete kontrolli të integritetit në çdo strukture të dhënash, ku përdoren lista të lidhura me tregues, të vendosura pranë vetë buferëve. Metoda është shumë e thjeshtë për t'u realizuar dhe kërkon vetëm shtimin e një makrosi dhe aplikimin e saj në treguesit për bllokun e ardhshëm në kod (për shembull, për Glibc ndryshohet vetëm disa rreshta në kod). Metoda përmbledh këto ndryshime:

#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);

Thelbi i metodës është aplikimi i të dhënave të rastësishme nga mekanizmi i randomizimit të adresave ASLR (mmap_base) për të mbrojtur listat e lidhura, siç janë Fast-Bins dhe TCache. Para se të aplikohet në vlerën e treguesit për elementin e ardhshëm në listë, kryhet një transformim sipas maskës dhe kontrolli i rregullimit në kufirin e faqes së memories. Treguesi zëvendësohet me rezultatin e operacionit «(L >> PAGE_SHIFT) XOR (P)», ku P është vlera e treguesit, dhe L është vendndodhja në memories ku ruhet ky tregues.

Checkpoint ka ofruar një teknikë mbrojtëse të quajtur Safe-Linking, e cila e bën të vështirë shfrytëzimin e dobësive

Kur përdoret në sistem ASLR (Address Space Layout Randomization) pjesa e bitave L me adresën bazë të grumbullit përmban vlera të rastësishme, të cilat përdoren si çelës për kodimin P (shkarkohen nga operacioni i zhvendosjes me 12 bit për faqe të 4096 bajtëve). Një manipulim i tillë zvogëlon rrezikun e kapjes së treguesve në eksploatime, pasi treguesi nuk ruhet në formën e tij origjinale dhe për ta zëvendësuar atë, kërkohet të dihen informacionet mbi pozicionin e grumbullit. Për më tepër, në kodin e patch-it ka një kontroll shtesë të përputhshmërisë së bllokut, e cila nuk lejon një sulmues të zëvendësojë treguesin me një vlerë të papërputhshme dhe kërkon njohjen e numrit të bitëve me të cilët është bërë përputhshmëria, çka në sistemet 64-bit shton në mënyrë të mëtejshme aftësinë për të bllokuar 15 nga 16 përpjekjet e sulmeve që nuk marrin parasysh përputhshmërinë.

Metoda është efektive për mbrojtjen ndaj sulmeve që përdorin ri-përcaktimin e pjesshëm të treguesve (ndryshimi i bajtëve më të ulët), ri-shkrimi i plotë i treguesve (ridrejtimi në kodin e sulmuesit) dhe ndryshimi i pozicionit të listës në një adresë të papërputhshme. Si një shembull, është treguar se aplikimi i Safe-Linking në malloc do të mundësonte bllokimin e eksploatimeve të sapo identifikuara nga të njëjtit hulumtues të dobësive CVE-2020-6007 në ndriçimin inteligjent Philips Hue Bridge, shkaktuar nga mbingarkesa e tamponit e cila lejon marrjen e kontrollit mbi pajisjen.

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster