Nagplano nga palig-onon ang mekanismo sa seguridad sa W^X sa OpenBSD

Theo De Raadt gipaambit nagplano sa pagpalig-on sa W^X (Write XOR Execute) nga mekanismo sa pagpanalipod sa memorya. Ang esensya sa mekanismo mao nga ang proseso sa mga panid sa memorya dili mahimong dungan nga ma-access alang sa pagsulat ug pagpatuman. Busa, ang kodigo mahimong ipatuman lamang human ma-disable ang pagsulat, ug ang pagsulat ngadto sa usa ka panid sa panumduman posible lamang human ma-disable ang pagpatay. Ang mekanismo sa W^X nagtabang sa pagpanalipod sa mga aplikasyon sa espasyo sa gumagamit gikan sa sagad nga pag-atake sa buffer overflow, lakip ang mga stack overflow, ug aktibo sa OpenBSD pinaagi sa default.

Gikan sa pagsugod sa pagtrabaho sa W^X, klaro nga kini usa ka taas nga dalan, tungod kay adunay daghang mga aplikasyon nga naggamit sa JIT. Ang mga pagpatuman sa JIT mahimong bahinon sa tulo ka mga kategorya:

  • Pagbalhin sa memorya tali sa W ug X nga mga estado, pagdawat sa "gasto" sa tawag sa sistema mproteksyon.
  • Paghimo og mga alyas tali sa usa ka parisan sa W ug X mapping sa parehas nga memorya.
  • Ang labing "hugaw" nga kapilian nanginahanglan usa ka modelo sa panumduman sa W | X nga nagtugot sa dungan nga pagrekord ug pagpatay.

Sa pagkakaron, adunay mas gamay nga mga programa nga naggamit sa ikatulo nga kapilian ug daghan pa nga naggamit sa una ug ikaduha. Bisan pa, tungod kay gikinahanglan ang pagpadagan sa mga programa nga adunay W|X JIT (panguna nga Chromium ug Iridum), usa ka "wxallowed" nga kapilian sa pag-mount sa filesystem ang gidugang, nga nagtugot sa memorya nga magamit nga dungan alang sa pagsulat ug pagpatuman, kung ang mahimo nga ELF Ang file gimarkahan sa "wxneeded" marker, ug ang mga aplikasyon mismo giprotektahan usab gamit ang mga mekanismo pangako ΠΈ unveil aron limitahan ang lista sa mga tawag sa sistema nga gigamit ug mga bahin sa file system nga magamit sa aplikasyon, matag usa.

Aron mas makomplikado ang pagpahimulos sa mga kahuyangan sa maong mga aplikasyon, gisugyot ang pagdugang sa mekanismo MAP_STACK, nga nagsusi kung ang tawag sa sistema gipatuman gikan sa usa ka panid sa panumduman nga gisulat. Kung ang panid masulat, ang proseso mapugos sa pagtapos. Niining paagiha, ang usa ka tig-atake dili makapahimulos sa mga tawag sa sistema ug mapugos sa pagsulay sa pagpangita sa gikinahanglan nga mga gadyet sa pagpatuman sa JIT, o bisan sa pagbuhat sa mas lisud nga trabaho sa pag-ila sa mga sistema sa tawag nga mga stub direkta sa sulod. aksidente nga na-link ang libc.

Ang mga proseso sa Chrome/Iridium kay masaligan na nga giprotektahan gamit ang pledge ug unveil, apan ang pagtangtang sa abilidad sa paggamit, pananglitan, ang write(2) system call dayag nga adunay pipila ka bentaha, tungod kay nagmugna kini og dugang mga kalisdanan alang sa tig-atake. Bisan pa, ang mga kalisud mahimo usab nga motumaw kung ang pagpatuman sa JIT naggamit sa mga tawag sa lumad nga sistema gikan sa memorya sa W | X. Bisan pa, adunay katarongan nga maglaum nga dili kini mahitabo, tungod kay ang ABI giusab sa daghang mga higayon, apan wala’y usa nga nagreport sa mga problema.

Ang mga pagbag-o anaa na sa regular nga mga snapshot sa OpenBSD-Current nga sanga, ang tanan nga interesado gidapit sa pagsulay.

Ang mga may kalabutan nga balita bahin sa dagway sa mode sa Chrome / Iridium angayan sa usa ka lahi nga komento gikan sa Theo walay JIT. Gikan sa iyang punto sa panglantaw, kini mao ang madawat alang sa pipila ka mga modelo sa paggamit, apan tingali dili alang sa tanan, tungod kay kini nga mode dayag nga makadugang sa load sa processor. Sa pagkakaron, ang Chrome kasagaran magtrabaho kung imong i-disable ang "wxallowed" para sa /usr/local, bisan kung adunay mga problema sa pipila ka mga extension (ang ghostery usa ka pananglitan). Usa ka paagi o lain, si Theo naglaum nga ang hingpit nga trabaho sa JITless mode madala sa usa ka hingpit nga operasyon nga estado sa umaabot nga umaabot.

Source: opennet.ru

Idugang sa usa ka comment