Mipango ya Kuimarisha Mfumo wa Usalama wa W^X wa OpenBSD

Theo De Raadt iliyoshirikiwa inapanga kuimarisha utaratibu wa ulinzi wa kumbukumbu wa W^X (Andika XOR Tekeleza). Kiini cha utaratibu ni kwamba kurasa za kumbukumbu za mchakato haziwezi kupatikana kwa wakati mmoja kwa kuandika na kutekeleza. Kwa hivyo, msimbo unaweza kutekelezwa tu baada ya kuandika kuzima, na kuandika kwa ukurasa wa kumbukumbu kunawezekana tu baada ya utekelezaji kuzima. Utaratibu wa W^X husaidia kulinda programu za nafasi ya mtumiaji dhidi ya mashambulizi ya kawaida ya bafa, ikiwa ni pamoja na kufurika kwa rafu, na inatumika katika OpenBSD. kwa msingi.

Tangu mwanzo wa kazi kwenye W^X, ilikuwa wazi kuwa hii ilikuwa barabara ndefu, kwa kuwa kulikuwa na idadi kubwa ya maombi kwa kutumia JIT. Utekelezaji wa JIT unaweza kugawanywa katika makundi matatu:

  • Kubadilisha kumbukumbu kati ya W na X hali, kukubali "gharama" ya simu ya mfumo kulinda.
  • Kuunda lakabu kati ya jozi ya W na X ya upangaji wa kumbukumbu sawa.
  • Chaguo "chafu" zaidi linahitaji muundo wa kumbukumbu wa W|X unaoruhusu kurekodi na kutekeleza kwa wakati mmoja.

Hivi sasa, kuna programu chache sana zinazotumia chaguo la tatu na zaidi kwa kutumia la kwanza na la pili. Walakini, kwa kuwa ilihitajika kuendesha programu na W|X JIT (haswa Chromium na Iridum), chaguo la kuweka mfumo wa faili "wxallowed" liliongezwa, ambalo liliruhusu kumbukumbu kutumika wakati huo huo kwa uandishi na utekelezaji, ikiwa ELF inayoweza kutekelezwa. faili imetiwa alama ya "wxneeded", na programu zenyewe zililindwa kwa kutumia mifumo. ahadi ΠΈ kufunua ili kupunguza orodha ya simu za mfumo zinazotumiwa na sehemu za mfumo wa faili zinazopatikana kwa programu, kwa mtiririko huo.

Ili kutatiza zaidi unyonyaji wa udhaifu katika programu kama hizo, nyongeza ya utaratibu inapendekezwa. MAP_STACK, ambayo hukagua ikiwa simu ya mfumo inatekelezwa kutoka kwa ukurasa wa kumbukumbu unaoweza kuandikwa. Ikiwa ukurasa unaweza kuandikwa, mchakato unalazimika kukomesha. Kwa njia hii, mshambuliaji hataweza kutumia vibaya simu za mfumo na atalazimika kujaribu kutafuta vifaa muhimu katika utekelezaji wa JIT, au hata kufanya kazi ngumu zaidi ya kugundua vijiti vya simu moja kwa moja ndani. iliyounganishwa kwa bahati mbaya libc.

Michakato ya Chrome/Iridium tayari inalindwa kwa uhakika kabisa kwa kutumia ahadi na kufichua, lakini kuondoa uwezo wa kutumia, kwa mfano, simu ya mfumo wa kuandika(2) ni wazi ina faida fulani, kwani inaleta matatizo ya ziada kwa mshambuliaji. Walakini, ugumu unaweza pia kutokea ikiwa utekelezaji wa JIT unatumia simu za mfumo asili kutoka kwa kumbukumbu ya W|X. Hata hivyo, kuna sababu ya kutumaini kwamba hii haitakuwa hivyo, kwa kuwa ABI imebadilishwa mara kadhaa, lakini hakuna mtu aliyewahi kuripoti matatizo.

Mabadiliko tayari yanapatikana katika vijipicha vya kawaida vya tawi la OpenBSD-Current, kila mtu anayevutiwa anaalikwa kufanya majaribio.

Habari zinazohusiana kuhusu kuonekana kwa hali katika Chrome/Iridium zinastahili maoni tofauti kutoka kwa Theo JIT bila. Kwa mtazamo wake, hii inakubalika kwa mifano fulani ya matumizi, lakini labda si kwa wote, kwa kuwa hali hii itakuwa wazi kuongeza mzigo kwenye processor. Hivi sasa, Chrome itafanya kazi zaidi ikiwa utalemaza "wxallowed" kwa /usr/local, ingawa kunaweza kuwa na shida na viendelezi vingine (ghostery ni mfano). Kwa njia moja au nyingine, Theo anatumai kuwa kazi kamili katika hali ya JITless italetwa katika hali ya kufanya kazi kikamilifu katika siku za usoni.

Chanzo: opennet.ru

Kuongeza maoni