Hoʻolālā e hoʻoikaika i ka OpenBSD's W^X Security Mechanism

Theo De Raadt kaʻana like hoʻolālā e hoʻoikaika i ka mīkini pale hoʻomanaʻo W^X (Write XOR Execute). ʻO ke kumu o ka mīkini ʻaʻole hiki ke komo i nā ʻaoʻao hoʻomanaʻo i ka manawa like no ke kākau ʻana a me ka hoʻokō. No laila, hiki ke hoʻokō ʻia ke code ma hope o ka pio ʻana o ke kākau ʻana, a hiki ke kākau ʻia i kahi ʻaoʻao hoʻomanaʻo ma hope o ka pau ʻana o ka hoʻokō. Kōkua ka mea hana W^X i ka pale ʻana i nā noi hoʻohana-space mai ka hoʻouka ʻana o ka buffer overflow maʻamau, me ka hoʻoulu ʻana o ka puʻupuʻu, a ke hana nei i OpenBSD. ma ke ʻano.

Mai ka hoʻomaka ʻana o ka hana ma W^X, ua ʻike ʻia he ala lōʻihi kēia, ʻoiai he nui nā noi e hoʻohana ana iā JIT. Hiki ke hoʻokaʻawale ʻia nā hoʻokō JIT i ʻekolu mau ʻāpana:

  • Ke hoʻololi nei i ka hoʻomanaʻo ma waena o nā mokuʻāina W a me X, e ʻae ana i ka "kumu" o ke kelepona ʻōnaehana mprotec.
  • Ke hana ʻana i nā inoa inoa ma waena o nā palapala palapala W a me X o ka hoʻomanaʻo like.
  • ʻO ka koho "palapala" loa e pono ai i kahi hoʻohālike hoʻomanaʻo W | X e hiki ai ke hoʻopaʻa a me ka hoʻokō like.

I kēia manawa, ʻoi aku ka liʻiliʻi o nā polokalamu e hoʻohana ana i ke kolu o ka koho a ʻoi aku ka hoʻohana ʻana i ka mua a me ka lua. Eia nō naʻe, no ka mea pono e holo i nā polokalamu me W|X JIT (ʻoi loa ʻo Chromium a me Iridum), ua hoʻohui ʻia kahi koho "wxallowed" filesystem mauna, i hiki ke hoʻohana ʻia ka hoʻomanaʻo i ka manawa like no ka kākau ʻana a me ka hoʻokō ʻana, inā inā ʻo ELF hiki ke hoʻokō. Ua hōʻailona ʻia ka faila me ka marker "wxneeded", a ua pale pū ʻia nā noi me ka hoʻohana ʻana i nā mīkini. hoʻohiki и kona uhi e kaupalena i ka papa inoa o nā kelepona pūnaewele i hoʻohana ʻia a me nā ʻāpana o ka ʻōnaehana faila i loaʻa i ka noi.

No ka hoʻopiʻi hou ʻana i ka hoʻohana ʻana i nā nāwaliwali i ia mau noi, ua manaʻo ʻia kahi hoʻohui i ka mīkini. MAP_STACK, nāna e nānā inā hoʻokō ʻia ke kelepona ʻōnaehana mai kahi ʻaoʻao hoʻomanaʻo hiki ke kākau. Inā hiki ke kākau ʻia ka ʻaoʻao, koi ʻia ke kaʻina hana e hoʻopau. Ma kēia ala, ʻaʻole hiki i ka mea hoʻouka ke hoʻohana i nā kelepona ʻōnaehana a koi ʻia e ʻimi e ʻimi i nā hāmeʻa e pono ai i ka hoʻokō JIT, a i ʻole e hana i ka hana ʻoi aku ka paʻakikī o ka ʻike ʻana i nā stubs kelepona pūnaewele pololei i loko. hoʻopili ʻia libc.

Ua pale pono ʻia nā kaʻina hana Chrome/Iridium me ka hoʻohana ʻana i ka hōʻaiʻē a me ka wehe ʻana, akā ʻo ka wehe ʻana i ka hiki ke hoʻohana, no ka laʻana, ʻo ke kelepona ʻōnaehana kākau (2) ʻike maopopo ʻia kekahi pōmaikaʻi, no ka mea, hoʻokumu ia i nā pilikia hou no ka mea hoʻouka. Eia nō naʻe, hiki ke ala mai nā pilikia inā hoʻohana ka JIT i nā kelepona ʻōnaehana maoli mai ka hoʻomanaʻo W|X. Eia nō naʻe, aia ke kumu e manaʻolana ai ʻaʻole kēia ka hihia, ʻoiai ua hoʻololi pinepine ʻia ka ABI, akā ʻaʻohe mea i hōʻike i nā pilikia.

Loaʻa nā loli i nā kiʻi maʻamau o ka lālā OpenBSD-Current, kono ʻia nā mea makemake e hoʻāʻo.

ʻO nā nūhou pili e pili ana i ke ʻano o ke ʻano ma Chrome/Iridium pono kahi ʻōlelo ʻokoʻa mai Theo JITless. Mai kona manaʻo, ʻae ʻia kēia no kekahi mau hiʻohiʻona hoʻohana, akā ʻaʻole paha no nā mea āpau, no ka mea, e hoʻonui ʻia kēia ʻano i ka ukana ma ka kaʻina. I kēia manawa, e hana nui ʻo Chrome inā hoʻopau ʻoe i ka "wxallowed" no /usr/local, ʻoiai aia nā pilikia me kekahi mau hoʻonui (he laʻana ka ghostery). ʻO kekahi ala a i ʻole, manaʻolana ʻo Theo e lawe ʻia ka hana piha i ka JITless mode i kahi kūlana hana piha i ka wā e hiki mai ana.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka