OpenBSD ၏ W^X လုံခြုံရေး ယန္တရားအား အားကောင်းစေမည့် အစီအစဉ်များ

Theo De Raadt မျှဝေသည် W^X (Write XOR Execute) မမ်မိုရီကာကွယ်ရေးယန္တရားကို အားကောင်းစေရန် စီစဉ်ထားသည်။ ယန္တရား၏ အနှစ်သာရမှာ လုပ်ငန်းစဉ်မှတ်ဉာဏ် စာမျက်နှာများကို ရေးသားခြင်းနှင့် လုပ်ဆောင်ခြင်းအတွက် တပြိုင်နက် ဝင်ရောက်၍မရပါ။ ထို့ကြောင့်၊ စာရေးခြင်းကိုပိတ်ထားပြီးမှသာ ကုဒ်ကိုလုပ်ဆောင်နိုင်ပြီး၊ လုပ်ဆောင်ချက်ကိုပိတ်ထားပြီးမှသာ မန်မိုရီစာမျက်နှာသို့ စာရေးနိုင်မည်ဖြစ်သည်။ W^X ယန္တရားသည် အသုံးပြုသူ-အာကာသ အပလီကေးရှင်းများအား stack overflows များအပါအဝင် ဘုံကြားခံအလျှံပယ်တိုက်ခိုက်မှုများမှ ကာကွယ်ပေးပြီး OpenBSD တွင် လုပ်ဆောင်နေသည် မူလက.

W^X တွင် အလုပ်စတင်ချိန်မှစ၍ JIT ကို အသုံးပြုသည့် အက်ပ်လီကေးရှင်းများစွာရှိသဖြင့် ဤလမ်းသည် ရှည်လျားကြောင်း ထင်ရှားပါသည်။ JIT အကောင်အထည်ဖော်မှုများကို အမျိုးအစားသုံးမျိုး ခွဲခြားနိုင်သည်။

  • စနစ်ခေါ်ဆိုမှု၏ "ကုန်ကျစရိတ်" ကို လက်ခံခြင်းဖြင့် W နှင့် X ပြည်နယ်များအကြား မမ်မိုရီကို ပြောင်းခြင်း။ အကာအကွယ်.
  • တူညီသောမှတ်ဉာဏ်၏ W နှင့် X မြေပုံတွဲများကြားတွင် နာမည်တူများဖန်တီးခြင်း။
  • အများဆုံး "ညစ်ပတ်သော" ရွေးချယ်မှုသည် တစ်ပြိုင်နက်တည်း ရိုက်ကူးခြင်းနှင့် လုပ်ဆောင်ခြင်းတို့ကို ခွင့်ပြုသည့် W|X memory model လိုအပ်သည်။

လောလောဆယ်တွင်၊ တတိယရွေးချယ်မှုကို အသုံးပြုသည့် ပရိုဂရမ်များ သိသိသာသာနည်းပါးလာပြီး ပထမနှင့် ဒုတိယကို အသုံးပြုမှုပိုများသည်။ သို့သော်လည်း၊ W|X JIT (အဓိကအားဖြင့် Chromium နှင့် Iridum) ဖြင့် ပရိုဂရမ်များကို run ရန် လိုအပ်သောကြောင့်၊ "wxallowed" filesystem mount option ကို ထည့်သွင်းထားပြီး၊ လုပ်ဆောင်နိုင်သော ELF ဖြစ်ပါက၊ executable ELF နှစ်ခုလုံးအတွက် memory ကို တစ်ပြိုင်နက်အသုံးပြုနိုင်စေရန် ခွင့်ပြုထားသည်။ ဖိုင်ကို “wxneeded” အမှတ်အသားဖြင့် အမှတ်အသားပြုထားပြီး အပလီကေးရှင်းများကိုယ်တိုင် ယန္တရားများကို အသုံးပြု၍ ထပ်မံကာကွယ်ထားသည်။ ကတိ и မိတ်ဆက် အသုံးပြုထားသော စနစ်ခေါ်ဆိုမှုစာရင်းနှင့် အပလီကေးရှင်းအတွက် ရရှိနိုင်သော ဖိုင်စနစ်၏ အစိတ်အပိုင်းများကို ကန့်သတ်ရန်၊

ယင်းကဲ့သို့သော အပလီကေးရှင်းများတွင် အားနည်းချက်များကို အသုံးချခြင်းအား ပိုမိုရှုပ်ထွေးစေရန် ယန္တရားအပြင် အဆိုပြုထားသည်။ MAP_STACKစနစ်ခေါ်ဆိုမှုကို စာရေးနိုင်သော မှတ်ဉာဏ်စာမျက်နှာမှ လုပ်ဆောင်ခြင်းရှိမရှိ စစ်ဆေးပေးသည်။ စာမျက်နှာကို ရေးနိုင်လျှင်၊ လုပ်ငန်းစဉ်ကို ရပ်ဆိုင်းရန် ဖိအားပေးခံရသည်။ ဤနည်းအားဖြင့်၊ တိုက်ခိုက်သူသည် စနစ်ခေါ်ဆိုမှုများကို အသုံးချနိုင်မည်မဟုတ်သည့်အပြင် JIT အကောင်အထည်ဖော်မှုတွင် လိုအပ်သည့် gadget များကို ရှာဖွေရန် သို့မဟုတ် အတွင်းရှိ စနစ်ခေါ်ဆိုမှုချလံများကို တိုက်ရိုက်ရှာဖွေရန် ပို၍ခက်ခဲသည့်အလုပ်များကိုပင် လုပ်ဆောင်ခိုင်းမည်ဖြစ်သည်။ မတော်တဆ libc ကို လင့်ခ်ချိတ်ထားသည်။.

Chrome/Iridium လုပ်ငန်းစဉ်များသည် ကတိစကားနှင့်ထုတ်ဖော်ပြသခြင်းတို့ကို အသုံးပြု၍ စိတ်ချယုံကြည်စွာကာကွယ်ထားပြီးဖြစ်သော်လည်း၊ ဥပမာအားဖြင့်၊ write(2) စနစ်ခေါ်ဆိုမှုကို ဖယ်ရှားခြင်းသည် တိုက်ခိုက်သူအတွက် နောက်ထပ်အခက်အခဲများကို ဖန်တီးပေးသည့်အတွက် အားသာချက်အချို့ရှိပါသည်။ သို့သော် JIT အကောင်အထည်ဖော်မှုသည် W|X မမ်မိုရီမှ မူရင်းစနစ်ခေါ်ဆိုမှုများကို အသုံးပြုပါက အခက်အခဲများလည်း ဖြစ်ပေါ်လာနိုင်သည်။ သို့သော်လည်း ABI ကို အကြိမ်များစွာ ပြောင်းလဲခဲ့သော်လည်း ပြဿနာများကို မည်သူမျှ အစီရင်ခံခြင်း မရှိခဲ့သဖြင့် ဤကဲ့သို့ ဖြစ်လာမည်မဟုတ်ဟု မျှော်လင့်ရန် အကြောင်းရှိပါသည်။

အပြောင်းအလဲများကို OpenBSD-Current ဌာနခွဲ၏ ပုံမှန်လျှပ်တစ်ပြက်ပုံများတွင် ရရှိနေပြီဖြစ်ပြီး စိတ်ပါဝင်စားသူတိုင်းကို စမ်းသပ်ရန် ဖိတ်ခေါ်အပ်ပါသည်။

Chrome/Iridium ရှိ မုဒ်၏ အသွင်အပြင်နှင့် ပတ်သက်သည့် သတင်းများသည် Theo ထံမှ သီးခြားမှတ်ချက်ပေးထိုက်သည်။ JITless. ၎င်း၏အမြင်အရ၊ ၎င်းသည် အချို့သောအသုံးပြုမှုမော်ဒယ်များအတွက် လက်ခံနိုင်သော်လည်း၊ ဤမုဒ်တွင် ပရိုဆက်ဆာပေါ်ရှိဝန်သည် သိသာထင်ရှားစွာ တိုးလာမည်ဖြစ်၍ အားလုံးအတွက် ဖြစ်နိုင်သည်။ လောလောဆယ်တွင်၊ သင်သည် /usr/local အတွက် "wxallowed" ကို ပိတ်ပါက Chrome သည် အများအားဖြင့် အလုပ်လုပ်လိမ့်မည်၊၊ အချို့သော extension များနှင့် ပြဿနာများရှိနိုင်သည် (ghostery သည် ဥပမာတစ်ခုဖြစ်သည်)။ တစ်နည်းမဟုတ်တစ်နည်း၊ JITless မုဒ်တွင် ပြီးပြည့်စုံသောအလုပ်များကို မဝေးတော့သောအနာဂတ်တွင် အပြည့်အဝလည်ပတ်နိုင်သည့်အခြေအနေသို့ရောက်စေမည်ဟု Theo မှမျှော်လင့်ပါသည်။

source: opennet.ru

မှတ်ချက် Add