I whakaarohia e te Checkpoint he tikanga whakamarumaru Hononga-Haumaru, ka uaua ake te whakamahi i nga whakaraeraetanga

Kamupene Takitaki представила Ko te tikanga whakamarumaru Hononga-Haumaru, he uaua ki te hanga i nga mahi e raweke ana i te whakamaramatanga, i te whakarereketanga ranei o nga tohu tohu ki nga parepare kua tohaina ina mahia ana he waea malloc. Ko te Hononga-Haumaru e kore e tino aukati i te tupono ki te whakamahi whakaraeraetanga, engari ma te iti o runga ka tino whakararu i te hanga o etahi momo mahi, na te mea i tua atu i te puhaketanga o te putunga, he mea tika ki te kimi i tetahi atu whakaraeraetanga e pakaru ai nga korero mo te whakanohonga o te puranga ki te mahara.

Kua whakarerihia nga papanga e whakamahi ana i te Hononga-Haumaru mo Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) me Google TCMalloc, me te whakaaro ano mo te whakapai ake i te whakamarumaru i Chromium (i roto
Mai i te tau 2012, kua hanga kē a Chromium ki te tikanga whakamarumaru MaskPtr e whai ana ki te whakaoti i te raru ano, engari ko te otinga mai i te Checkpoint e whakaatu ana i nga mahi teitei ake).
Kua whakaaehia nga taapiri kua tohua mo te tuku i te tukunga o Akuhata Glibc 3.32 me te Hononga-Haumaru ka taea te taunoa. Ka tautoko a uClibc-NG i te Hononga-Haumaru tomo kua whakauruhia ki roto i te tukunga 1.0.33 ka taea te taunoa. Nga huringa i roto i nga gperftools (tcmalloc tawhito) whakaaetia, engari ka tukuna hei whiringa i roto i te tukunga a meake nei.

Kaihanga TCMalloc (tcmalloc hou) kaore i whakaae huringa, e kii ana i te tino paheketanga o nga mahi me te hiahia ki te taapiri i nga whakamatautau nui hei tirotiro i nga wa katoa kei te mahi nga mea katoa i runga i te tumanako. Ko nga whakamatautau a nga miihini Takitaki i whakaatu ko te tikanga Hono-Haumaru e kore e arai atu ki te kohi mahara ake, me te mahi i te wa e mahi ana i nga mahi puranga ka whakahekehia i te toharite ma te 0.02% anake, a, i nga ahuatanga kino rawa atu ma te 1.5% (mo te whakataurite, te utu o runga i roto ko te tikanga i whakamahia i roto i te Chromium ka kiia he "iti iho i te 2%"). Te whakauru
Ko te Hononga-Haumaru ka 2-3 etahi atu tohutohu huihuinga e mahia ana i ia wa ka karanga kore utu() me nga tohutohu 3-4 ia wa ka karangahia te malloc(). Ko te whakahaere i nga wahanga arawhiti me te whakaputa uara matapōkere e kore e hiahiatia.

I whakaarohia e te Checkpoint he tikanga whakamarumaru Hononga-Haumaru, ka uaua ake te whakamahi i nga whakaraeraetanga

Ka taea te whakamahi i te Hononga-Haumaru ehara i te mea hei whakapai ake i te haumarutanga o nga momo whakatinanatanga maha, engari hei taapiri i nga mana tika ki nga hanganga raraunga e whakamahi ana i nga rarangi hono takitahi o nga tohu tohu kua tuu ki te taha o nga kaitarai. He tino ngawari te tikanga ki te whakatinana me te tono kia kotahi noa te tonotono me te tono ki nga tohutoro ki te poraka e whai ake nei i roto i te waehere (hei tauira, mo Glibc kei te huri he rarangi waehere noa). Ko te tikanga ka heke ki nga huringa e whai ake nei:

+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) (((((rahi_t) pos) >> 12) ^ ((rahi_t) ptr)))

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

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

Ko te ngako o te tikanga ko te whakamahi i nga raraunga matapōkere mai i te hangahanga matapōkeretanga wāhitau ASLR (mmap_base) hei tiaki i nga rarangi hono takitahi penei i te Fast-Bins me te TCache. I mua i te hoatutanga o te uara ki te atatohu ki te huānga e whai ake nei i te rarangi, ka mahia e ia he huringa kanohi me te tirotiro mo te tiaroaro o te whaarangi. Ka whakakapihia te tohu tohu ki te hua o te mahi "(L >> PAGE_SHIFT) XOR (P)", ko te P te uara o te tohu me te L ko te waahi mahara kei te rongoa te tohu.

I whakaarohia e te Checkpoint he tikanga whakamarumaru Hononga-Haumaru, ka uaua ake te whakamahi i nga whakaraeraetanga

Ina whakamahia i roto i te punaha ASLR (Tahora Mokowā Wāhitau Matapōkeretia) ko tetahi wahanga o nga moka L me te wahitau turanga puranga kei roto nga uara matapōkere e whakamahia ana hei ki te whakawaehere P (i tangohia e te mahinga nekehanga 12-bit mo nga wharangi 4096-paita). Ma tenei maminga ka whakaiti i te tupono o te kaipahua o te atatohu i roto i tetahi mahi, na te mea kaore te atatohu e penapena ki tona ahua taketake me te whakakapi me mohio ki te tohatoha puranga. I tua atu, kei roto ano i te waehere papaki he haki taapiri mo te tirohanga paraka, e kore e taea e te kaitukino te whakakapi i tetahi tohu tohu ki te uara kore, me te mohio ki te maha o nga moka e hono ana, i runga i nga punaha 64-bit ka taea te aukati. 15 i roto i te 16 nga nganatanga whakaeke karekau e aro ki te whakamaarama.

He whai hua te tikanga mo te whakamarumaru i nga whakaeke e whakamahi ana i te tuhi ano i te atatohu wahanga (te huri i nga paita iti), te tuhi ano i te atatohu (te anga ki te waehere a te kaitukino) me te whakarereke i te tuunga rarangi ki te waahi noho kore. Hei tauira, ka whakaatuhia ko te whakamahi i te Hononga-Haumaru i roto i te malloc ka taea te aukati i nga mahi nanakia nei. kua tautuhia na nga kairangahau whakaraerae ano CVE-2020-6007 i roto i te rama atamai Philips Hue Bridge, i puta mai i te puhaketanga o te parapara ka taea e koe te whakahaere i te taputapu.

Source: opennet.ru

Tāpiri i te kōrero