သီးခြားပတ်ဝန်းကျင်များကို စီစဉ်ရန်အတွက် ကိရိယာတစ်ခုဖြစ်သည့် Bubblewrap 0.12 ၏ ဗားရှင်းအသစ်ကို ထုတ်ဝေလိုက်ပါပြီ။ ၎င်းကို အထူးအခွင့်အရေးမရှိသော အသုံးပြုသူများအတွက် တစ်ဦးချင်းအပလီကေးရှင်းများကို ကန့်သတ်ရန် အသုံးပြုပါသည်။ လက်တွေ့တွင် Bubblewrap ကို Flatpak ပရောဂျက်မှ package များမှ စတင်ထားသော အပလီကေးရှင်းများကို သီးခြားခွဲထုတ်ရန်အတွက် အလွှာတစ်ခုအဖြစ် အသုံးပြုပါသည်။ သီးခြားခွဲထုတ်ရန် ရိုးရာနည်းလမ်းများကို ဤရည်ရွယ်ချက်အတွက် အသုံးပြုပါသည်။ Linux cgroups၊ namespaces၊ Seccomp နှင့် SE တို့ကို အသုံးပြုသည့် container virtualization နည်းပညာများLinuxပရောဂျက်ကုဒ်ကို C ဖြင့်ရေးသားထားပြီး LGPLv2.1+ လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။
tmpfs ကို အသုံးပြု၍ အချည်းနှီးသော root partition ကိုဖန်တီးထားသည့် ဖိုင်စနစ်အဆင့်တွင် သီးခြားခွဲထားခြင်းသည် mount namespace အသစ်တစ်ခု ဖန်တီးခြင်းဖြင့် ပြီးမြောက်ပါသည်။ လိုအပ်ပါက၊ ပြင်ပ FS အခန်းကန့်များကို "mount —bind" မုဒ်တွင် ဤအခန်းကန့်သို့ ချိတ်ဆက်ထားပါသည် (ဥပမာ၊ "bwrap —ro-bind /usr /usr" ရွေးချယ်မှုဖြင့် စတင်သောအခါ /usr အပိုင်းကို ပင်မစနစ်မှ တစ်ဆင့်ပေးပို့ပါသည်။ ဖတ်ရန်သာမုဒ်တွင်)။ CLONE_NEWNET နှင့် CLONE_NEWUTS အလံများမှတစ်ဆင့် ကွန်ရက်အစုအဝေးကို သီးခြားခွဲထားခြင်းဖြင့် ကွန်ရက်ချိတ်ဆက်နိုင်စွမ်းကို ကန့်သတ်ထားသည်။
ဖန်တီးထားသော သီးခြားပတ်ဝန်းကျင်မှ မလိုအပ်သော user နှင့် process ID အားလုံးကို ဖယ်ထုတ်ရန်အတွက် CLONE_NEWUSER (user namespace) နှင့် CLONE_NEWPID (PID namespace) mode များကို အသုံးပြုနိုင်ပြီး PR_SET_NO_NEW_PRIVS mode ကို အခွင့်ထူးအသစ်များ မရရှိအောင် ကာကွယ်ရန် အသုံးပြုသည်။ "user namespace" ကို လိုအပ်သော အခွင့်ထူးများ ရယူရန် အသုံးပြုသည်။
ထုတ်ဝေမှုအသစ်တွင်-
- ကုဒ်လိုင်စင်ကို LGPL 2.0+ မှ LGPL 2.1+ သို့ ပြောင်းလဲလိုက်ပါပြီ။
- suid root flag ကို အသုံးပြု၍ နောက်ထပ်အခွင့်အရေးများရရှိသည့် executable file အဖြစ်တည်ဆောက်ခြင်းအတွက် ပံ့ပိုးမှုကို ရပ်ဆိုင်းလိုက်ပါပြီ။ "user namespace" အတွက် ပံ့ပိုးမှုကို ယခုအခါ မဖြစ်မနေလုပ်ဆောင်ရမည်ဖြစ်သည်။ ဖြန့်ဝေမှုများတွင် "user namespace" အတွက် ကျယ်ကျယ်ပြန့်ပြန့် ပံ့ပိုးမှုကို ထည့်သွင်းစဉ်းစားလျှင် suid flag ကို ထိန်းသိမ်းခြင်း၏ ရှုပ်ထွေးမှုမှာ ဖော်ပြထားသော အကြောင်းရင်းဖြစ်သည်။
- "--not-a-security-boundary" ရွေးချယ်မှုကို ထည့်သွင်းထားပြီး၊ ၎င်းကို သတ်မှတ်လိုက်သောအခါ၊ subkey တစ်ခုကို ပြန်လည်တပ်ဆင်ခြင်းကဲ့သို့သော သီးခြား sandbox ပတ်ဝန်းကျင်တစ်ခုကို စနစ်ထည့်သွင်းသည့်အခါ အချို့သော ပျက်ကွက်မှုများ၊ crash ဖြစ်စေခြင်းမှ ကာကွယ်ပေးသည်။
- kernel များနှင့် နောက်ပြန်လိုက်ဖက်ညီမှုကို ပိတ်ရန် "assume_kernel" build option ကို ထည့်သွင်းထားသည် Linux၊ သတ်မှတ်ထားသော ဗားရှင်းထက် ပိုဟောင်းသည်။ ဥပမာအားဖြင့်၊ ဗားရှင်း 5.6.0+ ကို သတ်မှတ်ခြင်းသည် "openat2(RESOLVE_IN_ROOT)" လုပ်ဆောင်ချက်၏ အခြားအကောင်အထည်ဖော်မှုကို ချန်လှပ်ထားမည်ဖြစ်သည်။
source: opennet.ru
