Merero ea ho Matlafatsa Ts'ireletso ea OpenBSD's W^X

Theo De Raadt arolelanoa merero ea ho matlafatsa ts'ireletso ea mohopolo ea W^X (Ngola XOR Execute). Moko oa mochine ke hore maqephe a memori a ts'ebetso a ke ke a fumaneha ka nako e le 'ngoe bakeng sa ho ngola le ho phethahatsa. Ka hona, khoutu e ka etsoa feela ka mor'a hore ho ngola ho holotsoe, 'me ho ngolla leqephe la memori ho ka khoneha feela ka mor'a hore ts'ebetso e koetsoe. Mochine oa W^X o thusa ho sireletsa lits'ebetso tsa sebaka sa basebelisi ho tsoa litlhaselong tse tloaelehileng tsa buffer, ho kenyeletsoa ho tlala, 'me e sebetsa ho OpenBSD. tlola.

Ho tloha qalong ea mosebetsi ho W^X, ho ne ho hlakile hore ena e ne e le tsela e telele, kaha ho ne ho e-na le palo e kholo ea likopo tse sebelisang JIT. Ts'ebetsong ea JIT e ka aroloa ka mekhahlelo e meraro:

  • Ho fetola memori pakeng tsa W le X, ho amohela "litšenyehelo" tsa mohala oa sistimi sireletsa.
  • Ho theha mabitso a mang pakeng tsa para ea W le X ea 'mapa oa memori e tšoanang.
  • Khetho e "silafetseng" ka ho fetisisa ke e hlokang mohlala oa memori oa W | X o lumellang ho rekota le ho etsoa ka nako e le 'ngoe.

Hajoale, ho na le mananeo a fokolang haholo a sebelisang khetho ea boraro le ho feta a sebelisa ea pele le ea bobeli. Leha ho le joalo, kaha ho ne ho hlokahala ho tsamaisa mananeo ka W | X JIT (haholo-holo Chromium le Iridum), ho ile ha eketsoa khetho ea "wxallowed" filesystem mount, e ileng ea lumella mohopolo hore o sebelisoe ka nako e le 'ngoe bakeng sa ho ngola le ho phethahatsa, haeba ELF e ka phethisoa. faele e tšoailoe ka lets'oao la "wxneeded", mme lits'ebetso ka botsona li ne li sirelelitsoe ho sebelisoa mekhoa. pledge и senola ho fokotsa lenane la mehala ea sistimi e sebelisitsoeng le likarolo tsa sistimi ea faele e fumanehang ts'ebelisong, ka ho latellana.

Ho thatafatsa ts'ebeliso ea bofokoli lits'ebetsong tse joalo, ho khothaletsoa hore ho eketsoe mochini. MAP_STACK, e hlahlobang hore na mohala oa sistimi o ntse o etsoa ho tsoa leqepheng la memori le ngoloang. Haeba leqephe le ngoloa, ts'ebetso e qobelloa ho emisa. Ka tsela ena, mohlaseli a ke ke a khona ho sebelisa hampe mehala ea sistimi mme o tla qobelloa ho leka ho fumana lisebelisoa tse hlokahalang ts'ebetsong ea JIT, kapa a etse mosebetsi o boima le ho feta oa ho bona li-stubs tsa mohala oa sistimi ka kotloloho. e hokahane ka phoso libc.

Mekhoa ea Chrome / Iridium e se e ntse e sirelelitsoe ka mokhoa o ts'eptjoang ka ho sebelisa boitlamo le ho senola, empa ho tlosa bokhoni ba ho sebelisa, mohlala, mohala oa (2) oa tsamaiso ho hlakile hore o na le molemo o itseng, kaha o baka mathata a eketsehileng bakeng sa mohlaseli. Leha ho le joalo, mathata a ka boela a hlaha haeba ts'ebetsong ea JIT e sebelisa mehala ea sistimi ea matsoalloa ho tsoa mohopolong oa W | X. Leha ho le joalo, ho na le lebaka la ho tšepa hore ho ke ke ha e-ba joalo, kaha ABI e fetotsoe ka makhetlo a 'maloa, empa ha ho motho ea kileng a tlaleha mathata.

Liphetoho li se li ntse li le teng ka li-snapshots tse tloaelehileng tsa lekala la OpenBSD-Hajoale, bohle ba nang le thahasello ba memeloa ho etsa liteko.

Litaba tse amanang le ponahalo ea mokhoa oa Chrome / Iridium li tšoaneloa ke tlhaloso e fapaneng le Theo JIT e se nang letho. Ho ea ka pono ea hae, sena se amoheleha bakeng sa mefuta e meng ea tšebeliso, empa mohlomong ha se bakeng sa bohle, kaha mokhoa ona o tla eketsa mojaro ho processor. Hajoale, Chrome e tla sebetsa haholo haeba o tima "wxallowed" bakeng sa /usr/local, leha ho ka ba le mathata ka likeketso tse ling (ghostery ke mohlala). Ka tsela e 'ngoe, Theo o tšepa hore mosebetsi o feletseng ka mokhoa oa JITless o tla tlisoa boemong bo sebetsang ka botlalo haufinyane.

Source: opennet.ru

Eketsa ka tlhaloso