Checkpoint ippropona teknika ta' protezzjoni Safe-Linking, li tagħmilha aktar diffiċli biex jiġu sfruttati l-vulnerabbiltajiet

Kumpanija Checkpoint ippreżentata Mekkaniżmu ta 'protezzjoni Safe-Linking, li jagħmilha diffiċli biex jinħolqu sfruttamenti li jimmanipulaw id-definizzjoni jew il-modifika ta' pointers għal buffers allokati meta tesegwixxi sejħa malloc. Safe-Linking ma jimblokkax kompletament il-possibbiltà li jiġu sfruttati l-vulnerabbiltajiet, iżda b'overhead minimu jikkomplika b'mod sinifikanti l-ħolqien ta 'ċerti kategoriji ta' sfruttament, peress li minbarra l-overflow tal-buffer sfruttabbli, huwa meħtieġ li tinstab vulnerabbiltà oħra li tikkawża tnixxija ta 'informazzjoni dwar it-tqegħid tal-borġ fil-memorja.

Irqajja li jimplimentaw Safe-Linking tħejjew għal Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) u Google TCMalloc, u huma proposti wkoll għall-aġġornament tal-protezzjoni fil-Kromju (fi
Mill-2012, Chromium diġà bena fit-teknika ta 'protezzjoni MaskPtr immirata biex issolvi l-istess problema, iżda s-soluzzjoni minn Checkpoint turi prestazzjoni ogħla).
Irqajja ssuġġeriti diġà ġew approvati għall-kunsinna fir-rilaxx ta 'Awwissu glibc 3.32 u Safe-Linking se jkun attivat awtomatikament. uClibc-NG jappoġġja Safe-Linking daħlu inkluż fir-rilaxx 1.0.33 u huwa attivat awtomatikament. Bidliet fil-gperftools (tcmalloc antik) aċċettata, iżda se jiġu offruti bħala għażla f'rilaxx futur.

Developers TCMalloc (tcmalloc ġdid) irrifjuta li jaċċetta bidla, li jiċċita degradazzjoni severa tal-prestazzjoni u l-ħtieġa li jiżdiedu testijiet estensivi biex jiċċekkjaw regolarment li kollox qed jaħdem kif mistenni. Ittestjar minn inġiniera ta 'Checkpoint wera li l-metodu Safe-Linking ma jwassalx għal konsum ta' memorja addizzjonali, u l-prestazzjoni meta jsiru operazzjonijiet tal-borġ titnaqqas bħala medja b'0.02% biss, u fl-agħar xenarju b'1.5% (għal tqabbil, l-overhead f' il-metodu użat fil-Kromju huma stmati bħala "inqas minn 2%"). Inklużjoni
Safe-Linking jirriżulta f'2-3 struzzjonijiet ta' assemblaġġ addizzjonali li jiġu esegwiti kull darba li tissejjaħ free(), u 3-4 istruzzjonijiet kull darba li tissejjaħ malloc(). It-tmexxija tal-istadji tal-inizjalizzazzjoni u tal-ġenerazzjoni tal-valur każwali mhix meħtieġa.

Checkpoint ippropona teknika ta' protezzjoni Safe-Linking, li tagħmilha aktar diffiċli biex jiġu sfruttati l-vulnerabbiltajiet

Safe-Linking jista 'jintuża mhux biss biex ittejjeb is-sigurtà ta' diversi implimentazzjonijiet ta 'heap, iżda wkoll biex iżżid kontrolli ta' integrità ma 'kwalunkwe struttura tad-dejta li tuża listi konnessi waħedhom ta' indikaturi mqiegħda ħdejn il-buffers infushom. Il-metodu huwa sempliċi ħafna biex jiġi implimentat u jeħtieġ biss li żżid makro wieħed u li tiġi applikata għal indikaturi għall-blokk li jmiss fil-kodiċi (per eżempju, għal Glibc bidliet ftit linji ta’ kodiċi biss). Il-metodu jgħodd għall-bidliet li ġejjin:

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

L-essenza tal-metodu hija li tuża dejta każwali mill-mekkaniżmu ta 'randomizzazzjoni tal-indirizz ASLR (mmap_base) biex tipproteġi listi marbuta waħedhom bħal Fast-Bins u TCache. Qabel ma l-valur jiġi applikat għal pointer għall-element li jmiss fil-lista, iwettaq konverżjoni tal-maskra u jiċċekkja l-allinjament tal-paġna. Il-pointer huwa sostitwit bir-riżultat tal-operazzjoni "(L >> PAGE_SHIFT) XOR (P)", fejn P huwa l-valur tal-pointer u L huwa l-post tal-memorja fejn jinħażen il-pointer.

Checkpoint ippropona teknika ta' protezzjoni Safe-Linking, li tagħmilha aktar diffiċli biex jiġu sfruttati l-vulnerabbiltajiet

Meta jintuża fis-sistema ASLR (Address Space Layout Randomization) parti mill-bits L bl-indirizz bażi tal-borġ fiha valuri każwali li jintużaw bħala ċavetta biex tikkodifika P (estratt b'operazzjoni ta 'shift ta' 12-il bit għal paġni ta '4096 byte). Din il-manipulazzjoni tnaqqas ir-riskju ta 'ħtif ta' pointer fi sfruttament, peress li l-pointer mhuwiex maħżun fil-forma oriġinali tiegħu u biex jissostitwixxih jeħtieġ għarfien tal-allokazzjoni tal-heap. Barra minn hekk, il-kodiċi tal-garża fih ukoll kontroll addizzjonali għall-allinjament tal-blokki, li ma jippermettix li attakkant jissostitwixxi pointer b'valur mhux allinjat u jeħtieġ għarfien tan-numru ta 'bits li huma allinjati, li fuq sistemi ta' 64 bit jippermetti wkoll l-imblukkar. 15 minn 16-il tentattiv ta' attakk li ma jqisux l-allinjament.

Il-metodu huwa effettiv għall-protezzjoni kontra attakki li jużaw kitba mill-ġdid tal-pointer parzjali (bdil ta 'bytes baxxi), kitba mill-ġdid tal-pointer komplut (ridirezzjoni għall-kodiċi tal-attakkant) u tbiddel il-pożizzjoni tal-lista f'indirizz mhux allinjat. Bħala eżempju, jidher li l-użu ta' Safe-Linking f'malloc jippermetti l-imblukkar tal-isfruttament reċentement identifikati mill-istess riċerkaturi tal-vulnerabbiltà CVE-2020-6007 fid-dawl intelliġenti Philips Hue Bridge, ikkawżat minn buffer overflow u li jippermettilek tikseb il-kontroll tal-apparat.

Sors: opennet.ru

Żid kumment