He Mahere ki te Whakakaha i te Hangaia Haumaru W^X a OpenBSD

Theo De Raadt tohaina he mahere ki te whakapakari i te tikanga tiaki mahara W^X (Tuhia XOR Execute). Ko te ngako o te tikanga ko te kore e taea te uru atu ki nga wharangi mahara tukatuka i te wa kotahi mo te tuhi me te mahi. No reira, ka taea te mahi waehere i muri i te whakakorenga o te tuhi, ka taea te tuhi ki te wharangi mahara i muri i te whakakorenga o te mahi. Ka awhina te tikanga W^X ki te whakamarumaru i nga tono mokowā-kaiwhakamahi mai i nga whakaekenga puhake puhake noa, tae atu ki nga puranga puhake, me te kaha ki OpenBSD taunoa.

Mai i te timatanga o te mahi i runga i te W^X, i kitea he huarahi roa tenei, i te mea he nui nga tono e whakamahi ana i te JIT. Ka taea te wehewehea nga whakatinanatanga JIT ki nga waahanga e toru:

  • Ko te huri i te mahara i waenga i te W me te X, ka whakaae ki te "utu" o te waea punaha m tiaki.
  • Waihanga ingoa ingoa i waenga i nga mapi W me X o te mahara kotahi.
  • Ko te waahanga "paru" me whai tauira mahara W|X ka taea te tuhi me te mahi i te wa kotahi.

I tenei wa, he iti ake nga papatono e whakamahi ana i te waahanga tuatoru me te maha atu e whakamahi ana i te tuatahi me te tuarua. Heoi, i te mea e tika ana ki te whakahaere kaupapa me te W|X JIT (te nuinga ko Chromium me te Iridum), i taapirihia he "wxallowed" mo te whakatakotoranga o nga punaha konae, ka taea te whakamahi i te mahara ki te wa kotahi mo te tuhi me te mahi, mena ko te ELF ka taea te whakahaere. kua tohua te konae ki te tohu "wxneeded", a ko nga tono ano i tiakina ma te whakamahi i nga tikanga. putea и whakaatu ki te whakawhāiti i te rarangi o nga waea punaha e whakamahia ana me nga waahanga o te punaha konae e waatea ana ki te tono.

Hei whakararu i te mahi whakaraeraetanga i roto i aua tono, ka whakaarohia he taapiri atu ki te miihini. MAP_STACK, e taki ana mena kei te mahia te waea punaha mai i te wharangi mahara tuhi. Mena ka taea te tuhi te wharangi, ka peia te tukanga ki te whakamutu. Ma tenei ara, ka kore e taea e te kaitukino te whakamahi i nga waea punaha, ka kaha ki te rapu i nga taputapu e tika ana i roto i te whakatinanatanga JIT me te mahi i nga mahi uaua ake ki te kimi i nga piira waea punaha kei roto tika. i hono aitua te libc.

Ko nga tikanga Chrome/Iridium kua tino tiakina ma te whakamahi i te taunaha me te hura, engari ko te tango i te kaha ki te whakamahi, hei tauira, ko te waea tuhi(2) ka kitea he painga, na te mea ka nui ake nga uauatanga mo te kaitukino. Heoi, ka ara ake ano nga uauatanga mena ka whakamahia e te whakatinanatanga JIT nga waea punaha taketake mai i te mahara W|X. Engari, he take ki te tumanako ka kore e penei, no te mea kua whakarerekehia te ABI i nga wa maha, engari kaore he tangata i korero i nga raruraru.

Kei te waatea nga huringa ki nga whakaahua o te peka OpenBSD-Current, ka tonohia nga tangata katoa e hiahia ana ki te whakamatautau.

Ko nga korero e pa ana mo te ahua o te ahua i roto i te Chrome / Iridium e tika ana te korero motuhake mai i a Theo JITkore. Mai i tana tirohanga, he pai tenei mo etahi tauira whakamahi, engari kaore pea mo te katoa, na te mea ka tino piki ake te kawenga ki te tukatuka. I tenei wa, ka mahi te nuinga o Chrome ki te whakakorehia e koe te "wxallowed" mo /usr/local, ahakoa he raruraru kei etahi toronga (he tauira kehua). I tetahi ara, i tetahi atu ranei, ko te tumanako a Theo ko nga mahi katoa i roto i te aratau JITless ka kawea ki te ahua tino whakahaere i roto i nga wa e heke mai nei.

Source: opennet.ru

Tāpiri i te kōrero