Checkpoint har foreslået en sikkerhedsteknik kaldet Safe-Linking, som komplicerer udnyttelsen af sårbarheder.

Checkpoint Company præsenterede Safe-Linking er en beskyttelsesmekanisme, der gør det vanskeligere at oprette exploits, der manipulerer med definitionen eller ændringen af ​​pegepunkter til de buffere, der er tildelt under en malloc-opkald. Safe-Linking blokkerer ikke fuldstændigt muligheden for at udnytte sårbarheder, men det gør det betydeligt vanskeligere at oprette visse kategorier af exploits med minimale omkostninger, da det ud over den udnyttede bufferoverfyldning er nødvendigt at finde en anden sårbarhed, der forårsager en lækage af information om hukommelsens (heap) placering.

Patches, der implementerer Safe-Linking, er forberedt til Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) og Google TCMalloc, og de er også blevet foreslået til opdatering af beskyttelsen i Chromium (i
Chromium har siden 2012 været udstyret med en teknik til beskyttelse mod samme problem, kaldet MaskPtr, men løsningen fra Checkpoint viser højere ydeevne).
De foreslåede patches er allerede godkendt til levering i augustudgaven Glibc 3.32 og anvendelsen af ​​Safe-Linking vil være inkluderet som standard. I uClibc-NG vil understøttelse af Safe-Linking blev optaget være en del af udgivelsen 1.0.33 og inkluderet som standard. I gperftools (den gamle tcmalloc) er ændringerne er blevet vedtaget, men de vil blive tilbudt i en af ​​de kommende versioner som en mulighed.

Udviklere TCMalloc (den nye tcmalloc) nægtede at acceptere ændringen, med henvisning til et stort fald i ydeevne og behovet for at tilføje udvidede tests for regelmæssigt at sikre, at alt fungerer korrekt. Testning udført af Checkpoint-ingeniører viste, at Safe-Linking-metoden ikke fører til yderligere hukommelsesforbrug, og at ydeevnen ved operationer med heapen gennemsnitligt kun falder med 0,02 %, og i værste fald med 1,5 % (til sammenligning vurderes omkostningerne ved den anvendte metode i Chromium som "mindre end 2 %"). Aktivering af
Safe-Linking resulterer i, at der udføres 2-3 ekstra assembly-instruktioner ved hvert free()-opkald og 3-4 instruktioner ved malloc()-opkald. Kørsel af initialiseringstrin og generering af tilfældige værdier er ikke nødvendig.

Checkpoint har foreslået en sikkerhedsteknik kaldet Safe-Linking, som komplicerer udnyttelsen af sårbarheder.

Safe-Linking kan ikke kun anvendes til at øge sikkerheden for forskellige metoder til heap-håndtering, men også til at tilføje integritetskontrol til enhver datakonstruktion, hvor der bruges singly-linked lister, der placeres i nærheden af de faktiske buffere. Metoden er meget enkel at implementere og kræver kun tilføjelsen af en makro og dens anvendelse på pointere til den næste blok i koden (for eksempel for Glibc ændres kun et par linjer i koden). Metoden indebærer følgende ændringer:

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

Essensen af metoden er at anvende tilfældige data fra ASLR (Address Space Layout Randomization) mekanismen (mmap_base) til at beskytte singly-linked lister såsom Fast-Bins og TCache. Før det anvendes på værdien af pointeren til det næste element i listen, bliver der udført en maskering og en justeringskontrol på sidens grænse. Pointeren bliver erstattet med resultatet af operationen "(L >> PAGE_SHIFT) XOR (P)", hvor P er pointerens værdi, og L er placeringen i hukommelsen, hvor denne pointer er gemt.

Checkpoint har foreslået en sikkerhedsteknik kaldet Safe-Linking, som komplicerer udnyttelsen af sårbarheder.

Ved brug i systemet ASLR (Address Space Layout Randomization) indeholder nogle bits i L med basisadressen for heap'en tilfældige værdier, der bruges som en nøgle til kodning af P (udtrukket ved en bitshift på 12 for 4096-byte sider). En sådan manipulation mindsker risikoen for, at pointeren bliver fanget i et exploit, da pointeren ikke opbevares i sin originale form, og for at erstatte den kræves det at kende information om, hvordan heap'en er placeret. Desuden indeholder patch-koden også en ekstra kontrol for blokjustering, hvilket forhindrer en angriber i at erstatte pointeren med en ikke-justeret værdi og kræver viden om antallet af bits, som justering er udført, hvilket i 64-bit systemer yderligere muliggør at blokere 15 ud af 16 angrebsforsøg, der ikke tager højde for justering.

Metoden er effektiv til at beskytte mod angreb, hvor delvise overskrivninger af pointere anvendes (ændring af laveste bytes), fuld overskrivning af pointere (omdirigering til angriberens kode) og ændring af positionen af listen til en ikke-justeret adresse. Som eksempel er det vist, at anvendelsen af Safe-Linking i malloc ville kunne blokere for udnyttelse af nyligt opdaget de samme forskere sårbarheder CVE-2020-6007 i den smarte belysning Philips Hue Bridge, forårsaget af buffer overflow og som tillader kontrol over enheden.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster