Checkpoint foarstelde Safe-Linking-beskermingstechnyk, wêrtroch it dreger is om kwetsberens te eksploitearjen

Checkpoint Company presintearre Safe-Linking beskerming meganisme, dat makket it lestich te meitsjen eksploaten dy't manipulearje de definysje of wiziging fan pointers oan buffers tawiisd by it útfieren fan in malloc oprop. Safe-Linking blokkearret de mooglikheid fan it eksploitearjen fan kwetsberens net folslein, mar mei minimale overhead komplisearret it de oprjochting fan bepaalde kategoryen fan eksploaten signifikant, om't neist de eksploitearjende bufferoverflow, it nedich is om in oare kwetsberens te finen dy't lekkage fan ynformaasje feroarsaket oer it pleatsen fan de heap yn it ûnthâld.

Patches dy't Safe-Linking ymplementearje binne taret foar Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) en Google TCMalloc, en wurde ek foarsteld foar it opwurdearjen fan beskerming yn Chromium (yn
Sûnt 2012 hat Chromium de MaskPtr-beskermingstechnyk al ynboud, rjochte op it oplossen fan itselde probleem, mar de oplossing fan Checkpoint toant hegere prestaasjes).
Foarstelde patches binne al goedkard foar levering yn 'e augustus-útjefte Glibc 3.32 en Safe-Linking sil standert ynskeakele wurde. uClibc-NG stipet Safe-Linking ynfierd opnommen yn release 1.0.33 en is standert ynskeakele. Feroarings yn gperftools (âlde tcmalloc) akseptearre, mar sil wurde oanbean as opsje yn in takomstige release.

Developers TCMalloc (nij tcmalloc) wegere te akseptearjen feroarje. Testen troch Checkpoint-yngenieurs lieten sjen dat de Safe-Linking-metoade net liedt ta ekstra ûnthâldferbrûk, en de prestaasjes by it útfieren fan heapoperaasjes wurde gemiddeld troch mar 0.02% fermindere, en yn it slimste gefal mei 1.5% (foar ferliking, de overhead yn de metoade brûkt yn Chromium wurde rûsd as "minder dan 2%)"). Ynklusyf
Feilich-Linking resultearret yn 2-3 ekstra assembly ynstruksjes wurde útfierd eltse kear free () wurdt neamd, en 3-4 ynstruksjes eltse kear malloc () wurdt neamd. It útfieren fan de stadia fan inisjalisaasje en generaasje fan willekeurige wearden is net fereaske.

Checkpoint foarstelde Safe-Linking-beskermingstechnyk, wêrtroch it dreger is om kwetsberens te eksploitearjen

Safe-Linking kin net allinich brûkt wurde om de feiligens fan ferskate heap-ymplementaasjes te ferbetterjen, mar ek om yntegriteitskontrôles ta te foegjen oan alle gegevensstruktueren dy't inkeld keppele listen brûke mei oanwizers pleatst neist de buffers sels. De metoade is heul ienfâldich om te ymplementearjen en fereasket allinich ien makro ta te foegjen en it oan te passen op pointers nei it folgjende blok yn 'e koade (bygelyks foar Glibc feroaret mar in pear rigels koade). De metoade komt del op de folgjende feroarings:

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

De essinsje fan 'e metoade is om willekeurige gegevens te brûken fan it ASLR-adres-randomisaasjemeganisme (mmap_base) om single-keppele listen te beskermjen lykas Fast-Bins en TCache. Foardat de wearde wurdt tapast op in oanwizer nei it folgjende elemint yn 'e list, fiert it in maskerkonverzje en kontrolearret de side-ôfstimming. De oanwizer wurdt ferfongen troch it resultaat fan 'e operaasje "(L >> PAGE_SHIFT) XOR (P)", wêrby't P de wearde fan 'e oanwizer is en L de ûnthâldlokaasje is wêr't de oanwizer is opslein.

Checkpoint foarstelde Safe-Linking-beskermingstechnyk, wêrtroch it dreger is om kwetsberens te eksploitearjen

Wannear't brûkt yn it systeem ASLR (Address Space Layout Randomization) diel fan 'e L-bits mei it heapbasisadres befettet willekeurige wearden dy't wurde brûkt as kaai om P te kodearjen (ekstrahearre troch in 12-bit shift-operaasje foar 4096-byte-siden). Dizze manipulaasje ferleget it risiko fan kaping fan oanwizers yn in eksploitaasje, om't de oanwizer net yn 'e oarspronklike foarm wurdt opslein en it ferfangen fan it fereasket kennis fan 'e heap-allokaasje. Dêrnjonken befettet de patchkoade ek in ekstra kontrôle foar blokôfstimming, dy't in oanfaller net tastean om in oanwizer te ferfangen troch in unalignearre wearde en fereasket kennis fan it oantal bits dat is ôfstimd, wat op 64-bit systemen ek blokkearjen mooglik makket 15 fan de 16 oanfalpogingen dy't gjin rekken hâlde mei ôfstimming.

De metoade is effektyf foar it beskermjen tsjin oanfallen dy't gebrûk meitsje fan partiel werskriuwen fan oanwizers (feroarjen fan lege bytes), folsleine werskriuwen fan oanwizers (omlieden nei de koade fan 'e oanfaller) en it feroarjen fan de listposysje op in net-ôfstimd adres. As foarbyld wurdt it oantoand dat it gebrûk fan Safe-Linking yn malloc de eksploitaasje koartlyn blokkearje soe identifisearre troch deselde kwetsberensûndersikers CVE-2020-6007 yn 'e Philips Hue Bridge smart ljocht, feroarsake troch in buffer oerstreaming en kinne jo krije kontrôle fan it apparaat.

Boarne: opennet.ru

Add a comment