Awọn ero lati Mu Ilana Aabo W^X OpenBSD lagbara

Theo De Raadt pin ngbero lati teramo awọn W^X (Kọ XOR Execute) iranti Idaabobo siseto. Kokoro ti ẹrọ naa ni pe awọn oju-iwe iranti ilana ko le wọle si ni nigbakannaa fun kikọ ati ipaniyan. Nitorinaa, koodu le ṣiṣẹ nikan lẹhin kikọ jẹ alaabo, ati kikọ si oju-iwe iranti ṣee ṣe nikan lẹhin ipaniyan alaabo. Ilana W^X ṣe iranlọwọ lati daabobo awọn ohun elo aaye-olumulo lati awọn ikọlu aponsedanu ti o wọpọ, pẹlu aponsedanu akopọ, o si n ṣiṣẹ ni OpenBSD aiyipada.

Lati ibẹrẹ iṣẹ lori W^X, o han gbangba pe eyi jẹ ọna pipẹ, nitori pe nọmba pataki ti awọn ohun elo wa ni lilo JIT. Awọn imuse JIT le pin si awọn ẹka mẹta:

  • Yipada iranti laarin awọn ipinlẹ W ati X, gbigba “iye owo” ti ipe eto naa daadaa.
  • Ṣiṣẹda inagijẹ laarin bata ti W ati awọn aworan aworan X ti iranti kanna.
  • Aṣayan “idọti” pupọ julọ nilo awoṣe iranti W|X ti o fun laaye gbigbasilẹ nigbakanna ati ipaniyan.

Lọwọlọwọ, awọn eto ti o dinku pupọ wa ni lilo aṣayan kẹta ati diẹ sii nipa lilo akọkọ ati keji. Sibẹsibẹ, niwọn bi o ti jẹ dandan lati ṣiṣẹ awọn eto pẹlu W faili ti wa ni samisi pẹlu aami “wxnedeed”, ati awọn ohun elo funrara wọn ni aabo ni afikun nipa lilo awọn ilana ògo и akitiyan lati ṣe idinwo atokọ ti awọn ipe eto ti a lo ati awọn apakan ti eto faili ti o wa si ohun elo, lẹsẹsẹ.

Lati siwaju sii idiju ilokulo ti awọn ailagbara ninu iru awọn ohun elo, afikun si ẹrọ naa ni a dabaa. MAP_STACK, eyiti o ṣayẹwo boya ipe eto naa n ṣiṣẹ lati oju-iwe iranti kikọ. Ti oju-iwe naa ba jẹ kikọ, ilana naa ti fi agbara mu lati fopin si. Ni ọna yii, ikọlu kii yoo ni anfani lati lo awọn ipe eto ati pe yoo fi agbara mu lati gbiyanju lati wa awọn ohun elo pataki ninu imuse JIT tabi paapaa ṣe iṣẹ ti o nira sii ti wiwa awọn stubs ipe eto taara inu. lairotẹlẹ ti sopọ libc.

Awọn ilana Chrome/Iridium ti ni aabo ni igbẹkẹle tẹlẹ nipa lilo ijẹri ati ṣiṣii, ṣugbọn yiyọ agbara lati lo, fun apẹẹrẹ, ipe eto kikọ (2) han ni diẹ ninu awọn anfani, nitori o ṣẹda awọn iṣoro afikun fun ikọlu naa. Sibẹsibẹ, awọn iṣoro tun le dide ti imuse JIT ba nlo awọn ipe eto abinibi lati iranti W|X. Sibẹsibẹ, o wa idi lati nireti pe eyi kii yoo jẹ ọran naa, niwon a ti yipada ABI ni ọpọlọpọ igba, ṣugbọn ko si ẹnikan ti o royin awọn iṣoro.

Awọn ayipada ti wa tẹlẹ ni awọn aworan ifaworanhan deede ti Ẹka OpenBSD-lọwọlọwọ, gbogbo eniyan ti o nifẹ si ni a pe lati ṣe idanwo.

Awọn iroyin ti o jọmọ nipa irisi ipo ni Chrome/Iridium yẹ asọye asọye lati Theo JITless. Lati oju wiwo rẹ, eyi jẹ itẹwọgba fun diẹ ninu awọn awoṣe lilo, ṣugbọn boya kii ṣe fun gbogbo, nitori ipo yii yoo han gbangba pe o pọ si fifuye lori ero isise naa. Lọwọlọwọ, Chrome yoo ṣiṣẹ pupọ julọ ti o ba mu “wxallowed” kuro fun / usr/agbegbe, botilẹjẹpe awọn iṣoro le wa pẹlu awọn amugbooro diẹ (ghostery jẹ apẹẹrẹ). Ọna kan tabi omiiran, Theo nireti pe iṣẹ kikun ni ipo JITless yoo mu wa si ipo iṣẹ ni kikun ni ọjọ iwaju to sunmọ.

orisun: opennet.ru

Fi ọrọìwòye kun