သီးခြားပတ်ဝန်းကျင်များဖန်တီးရန်အတွက် အလွှာတစ်ခုဖြစ်သည့် Bubblewrap 0.8 ကို ဖြန့်ချိသည်။

သီးခြားပတ်ဝန်းကျင်များလုပ်ဆောင်ရန် ကိရိယာများ ထုတ်ဝေခြင်း Bubblewrap 0.8 ကို ရနိုင်သည်၊ အများအားဖြင့် အခွင့်ထူးမခံသော သုံးစွဲသူများ၏ တစ်ဦးချင်း အပလီကေးရှင်းများကို ကန့်သတ်ရန် အသုံးပြုပါသည်။ လက်တွေ့တွင်၊ Bubblewrap ကို ပက်ကေ့ချ်များမှ စတင်သော အပလီကေးရှင်းများကို ခွဲထုတ်ရန် အလွှာတစ်ခုအနေဖြင့် Flatpak ပရောဂျက်မှ အသုံးပြုပါသည်။ ပရောဂျက်ကုဒ်ကို C ဖြင့်ရေးသားထားပြီး LGPLv2+ လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

အထီးကျန်မှုအတွက်၊ cgroups၊ namespaces၊ Seccomp နှင့် SELinux ကိုအသုံးပြုမှုအပေါ် အခြေခံ၍ ရိုးရာ Linux container virtualization နည်းပညာများကို အသုံးပြုပါသည်။ ကွန်တိန်နာကို configure လုပ်ရန် အခွင့်ထူးခံ လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန် Bubblewrap ကို root လုပ်ပိုင်ခွင့် ( suid အလံပါသော executable ဖိုင်တစ်ခု) ဖြင့် စတင်ပြီး ကွန်တိန်နာကို စတင်ပြီးနောက် အခွင့်ထူးများကို ပြန်လည်သတ်မှတ်ပါ။

ကွန်တိန်နာများတွင် သင့်ကိုယ်ပိုင် သီးခြားသတ်မှတ်သတ်မှတ်မှုအစုအဝေးကို အသုံးပြုခွင့်ပြုသည့် namespace စနစ်တွင် အသုံးပြုသူအမည်နေရာများကို အသက်သွင်းခြင်းသည် လုပ်ဆောင်ချက်အတွက် မလိုအပ်သောကြောင့်၊ ၎င်းသည် ဖြန့်ဝေမှုများစွာတွင် ပုံသေဖြင့် အလုပ်မလုပ်သောကြောင့် (Bubblewrap ကို ကန့်သတ် suid အကောင်အထည်ဖော်မှုတစ်ခုအဖြစ် သတ်မှတ်ထားသည်။ အသုံးပြုသူ namespaces စွမ်းရည်၏ အစုခွဲ - လက်ရှိတစ်ခုမှလွဲ၍ အသုံးပြုသူနှင့် လုပ်ငန်းစဉ်ဆိုင်ရာ ခွဲခြားသတ်မှတ်မှုအားလုံးကို ပတ်ဝန်းကျင်မှ ဖယ်ထုတ်ရန်၊ CLONE_NEWUSER နှင့် CLONE_NEWPID မုဒ်များကို အသုံးပြုသည်)။ ထပ်ဆောင်းကာကွယ်မှုများအတွက်၊ Bubblewrap အောက်တွင် လုပ်ဆောင်ထားသော ပရိုဂရမ်များကို PR_SET_NO_NEW_PRIVS မုဒ်တွင် စတင်လုပ်ဆောင်သည်၊ ဥပမာ၊ setuid အလံရှိနေပါက၊ အထူးအခွင့်အရေးအသစ်များရယူခြင်းကို တားမြစ်ထားသည်။

tmpfs ကို အသုံးပြု၍ အချည်းနှီးသော root partition ကိုဖန်တီးထားသည့် ဖိုင်စနစ်အဆင့်တွင် သီးခြားခွဲထားခြင်းသည် mount namespace အသစ်တစ်ခု ဖန်တီးခြင်းဖြင့် ပြီးမြောက်ပါသည်။ လိုအပ်ပါက၊ ပြင်ပ FS အခန်းကန့်များကို "mount —bind" မုဒ်တွင် ဤအခန်းကန့်သို့ ချိတ်ဆက်ထားပါသည် (ဥပမာ၊ "bwrap —ro-bind /usr /usr" ရွေးချယ်မှုဖြင့် စတင်သောအခါ /usr အပိုင်းကို ပင်မစနစ်မှ တစ်ဆင့်ပေးပို့ပါသည်။ ဖတ်ရန်သာမုဒ်တွင်)။ CLONE_NEWNET နှင့် CLONE_NEWUTS အလံများမှတစ်ဆင့် ကွန်ရက်အစုအဝေးကို သီးခြားခွဲထားခြင်းဖြင့် ကွန်ရက်ချိတ်ဆက်နိုင်စွမ်းကို ကန့်သတ်ထားသည်။

setuid launch model ကိုအသုံးပြုသည့် အလားတူ Firejail ပရောဂျက်၏ အဓိကကွာခြားချက်မှာ Bubblewrap ကွန်တိန်နာဖန်တီးမှုအလွှာတွင် လိုအပ်သော အနိမ့်ဆုံးစွမ်းရည်များသာ ပါဝင်ပြီး ဒက်စ်တော့နှင့် စစ်ထုတ်ခြင်းတောင်းဆိုချက်များကို အပြန်အလှန်တုံ့ပြန်သည့် ဂရပ်ဖစ်အက်ပလီကေးရှင်းများလည်ပတ်ရန်အတွက် လိုအပ်သောအဆင့်မြင့်လုပ်ဆောင်ချက်များ ပါဝင်သည်။ Pulseaudio သို့ Flatpak ဘက်သို့ ပြောင်းရွှေ့ပြီး အခွင့်ထူးများ ပြန်လည်သတ်မှတ်ပြီးနောက် ကွပ်မျက်ခဲ့သည်။ တစ်ဖက်တွင် Firejail သည် ဆက်စပ်လုပ်ဆောင်နိုင်သော လုပ်ဆောင်ချက်အားလုံးကို ဖိုင်တစ်ခုတည်းတွင် ပေါင်းစပ်ထားသောကြောင့် သင့်လျော်သောအဆင့်တွင် စာရင်းစစ်ထိန်းသိမ်းရန် ခက်ခဲစေသည်။

ထုတ်ဝေမှုအသစ်တွင်-

  • sandbox ပတ်ဝန်းကျင်တွင် ၎င်း၏ကိုယ်ပိုင် nested user namespace ဖန်တီးမှုကို ပိတ်ရန် "--disable-users" option ကို ပေါင်းထည့်ထားသည်။
  • "--disable-userns" ရွေးချယ်မှုကို အသုံးပြုသောအခါ ရှိပြီးသား အသုံးပြုသူ ID နေရာအား အသုံးပြုထားကြောင်း စစ်ဆေးရန် "--assert-users-disabled" option ကို ထပ်ထည့်ထားသည်။
  • Kernel ရှိ CONFIG_SECCOMP နှင့် CONFIG_SECCOMP_FILTER ဆက်တင်များကို ပိတ်ထားခြင်းနှင့် ပတ်သက်သော အမှားအယွင်းစာတိုများ ၏ အချက်အလက် အကြောင်းအရာကို တိုးမြှင့်ထားပါသည်။

source: opennet.ru

မှတ်ချက် Add