Nanolotra teknika fiarovana Safe-Linking ny Checkpoint, ka sarotra kokoa ny manararaotra ny vulnerability

orinasa Checkpoint aseho Mekanisma fiarovana Safe-Rohy, izay manasarotra ny famoronana fanararaotana izay manodinkodina ny famaritana na fanovana ny tondro ho an'ny buffer natokana rehefa manao antso malloc. Ny Safe-Linking dia tsy manakana tanteraka ny mety hisian'ny vulnerability, fa amin'ny overhead kely indrindra dia manasarotra ny famoronana sokajy sasany amin'ny fanararaotana, satria ankoatra ny fihoaran'ny buffer azo trandrahana, dia ilaina ny mitady vulnerable iray hafa mahatonga ny fahapotehan'ny vaovao momba ny fiarovana. ny fametrahana ny antontam-bato ho fahatsiarovana.

Ny patches mampihatra Safe-Linking dia nomanina ho an'ny Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ary Google TCMalloc, ary natolotra ihany koa ho fanatsarana ny fiarovana amin'ny Chromium (amin'ny
Nanomboka tamin'ny 2012, Chromium dia efa nanamboatra ny teknikan'ny fiarovana MaskPtr mikendry ny famahana olana iray ihany, fa ny vahaolana avy amin'ny Checkpoint dia mampiseho fampisehoana ambony kokoa).
Ny patch naroso dia efa nekena ho an'ny fandefasana amin'ny famoahana ny volana Aogositra Glibc 3.32 ary ny Safe-Rohy dia alefa amin'ny alàlan'ny default. uClibc-NG dia manohana ny Safe-Linking niditra tafiditra ao amin'ny famoahana 1.0.33 ary alefa amin'ny alàlan'ny default. Fanovana amin'ny gpperftools (tcmalloc taloha) nanaiky, fa hatolotra ho safidy amin'ny famoahana ho avy.

Developers TCMalloc (tcmalloc vaovao) tsy nety nanaiky fiovana, amin'ny fitanisana ny fahasimban'ny fampandehanana mahery vaika sy ny ilàna ny fanampim-panadinana mivelatra mba hanamarinana tsy tapaka fa mandeha araka ny nantenaina ny zava-drehetra. Ny fitsapana nataon'ny injeniera Checkpoint dia naneho fa ny fomba Safe-Linking dia tsy mitarika amin'ny fanjifana fahatsiarovana fanampiny, ary ny fampisehoana rehefa manao asa fanangonam-bokatra dia mihena amin'ny salan'isa amin'ny 0.02%, ary amin'ny tranga ratsy indrindra amin'ny 1.5% (ho fampitahana, ny overhead amin'ny ny fomba ampiasaina amin'ny Chromium dia tombanana ho "latsaky ny 2%"). fampidirana
Ny Safe-Rohy dia miteraka toromarika fanampiny 2-3 isaky ny miantso maimaim-poana () ary torolàlana 3-4 isaky ny miantso ny malloc (). Tsy ilaina ny fampandehanana ny fanombohana sy ny dingana famokarana sanda kisendrasendra.

Nanolotra teknika fiarovana Safe-Linking ny Checkpoint, ka sarotra kokoa ny manararaotra ny vulnerability

Ny Safe-Rohy dia azo ampiasaina tsy mba hanatsarana ny fiarovana amin'ny fampiharana isan-karazany ihany, fa koa mba hanampiana fanaraha-maso ny fahamendrehana amin'izay rafitra angon-drakitra izay mampiasa lisitry ny tondro mifamatotra tokana napetraka eo akaikin'ny buffer. Ny fomba dia tena tsotra ny fampiharana ary mila ampiana macro iray fotsiny ary mampihatra izany amin'ny fanondro amin'ny sakana manaraka ao amin'ny code (ohatra, ho an'ny Glibc FIOVANA andalana vitsivitsy monja). Ny fomba dia miankina amin'ny toe-javatra manaraka ireto:

+#farito PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

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

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

Ny fototry ny fomba dia ny fampiasana angon-drakitra kisendrasendra avy amin'ny mekanisma fanararaotana adiresy ASLR (mmap_base) mba hiarovana ireo lisitra mifandray tokana toy ny Fast-Bins sy TCache. Alohan'ny hampiharana ny sanda amin'ny tondro mankany amin'ny singa manaraka ao amin'ny lisitra, dia manao fiovam-po saron-tava izy ary manamarina ny fampifanarahana ny pejy. Ny fanondro dia nosoloina ny vokatry ny asa "(L >> PAGE_SHIFT) XOR (P)", izay ny P dia ny sandan'ny fanondro ary L ny toerana fitadidiana misy ny fanondro.

Nanolotra teknika fiarovana Safe-Linking ny Checkpoint, ka sarotra kokoa ny manararaotra ny vulnerability

Rehefa ampiasaina amin'ny rafitra ASLR (Address Space Layout Randomization) ampahany amin'ny bits L miaraka amin'ny adiresin'ny heap base dia misy soatoavina kisendrasendra izay ampiasaina ho fanalahidin'ny P (nalaina tamin'ny 12-bit shift operation ho an'ny pejy 4096-byte). Ity fanodinkodinana ity dia mampihena ny mety hisian'ny fanondroana an-keriny amin'ny fanararaotana, satria tsy voatahiry amin'ny endriny tany am-boalohany ny fanondro ary mila fahalalana momba ny fizarana antontam-bato ny fanoloana azy. Fanampin'izany, ny kaody patch dia misy ihany koa ny fanamarinana fanampiny amin'ny fampifanarahana sakana, izay tsy mamela ny mpanafika hanolo ny tondro amin'ny sanda tsy mifanaraka ary mitaky fahalalana ny isan'ny bits izay mifanaraka, izay amin'ny rafitra 64-bit dia mamela ny fanakanana. Andrana fanafihana 15 amin'ny 16 tsy miraharaha ny fampifanarahana.

Ny fomba dia mandaitra amin'ny fiarovana amin'ny fanafihana izay mampiasa fanondroana tondro ampahany (manova bytes ambany), fanoratana tondro feno (miverina mankany amin'ny kaodin'ny mpanafika) ary manova ny toerana misy lisitra amin'ny adiresy tsy mifanaraka. Ohatra, aseho fa ny fampiasana ny Safe-Rohy amin'ny malloc dia ahafahana manakana ny fitrandrahana vao haingana. fantatra avy amin'ireo mpikaroka vulnerable ihany CVE-2020-6007 ao amin'ny jiro marani-tsaina Philips Hue Bridge, vokatry ny fihoaran'ny buffer ary mamela anao hifehy ny fitaovana.

Source: opennet.ru

Add a comment