Snap ပက်ကေ့ဂျ် စီမံခန့်ခွဲမှုကိရိယာအစုံရှိ စက်တွင်း အမြစ်အားနည်းချက်များ

Qualys သည် SUID အမြစ်အလံကို ပံ့ပိုးပေးထားသည့် snap-confine utility တွင် (CVE-2021-44731၊ CVE-2021-44730) အားနည်းချက်နှစ်ခုကို ဖော်ထုတ်ခဲ့ပြီး ကိုယ်တိုင်ပါရှိသော ပက်ကေ့ဂျ်များအတွင်း ပေးပို့သော အပလီကေးရှင်းများအတွက် လည်ပတ်နိုင်သော ပတ်ဝန်းကျင်ကို ဖန်တီးရန် snapd လုပ်ငန်းစဉ်မှ ခေါ်သည် snap format ထဲမှာ။ အားနည်းချက်များသည် ဒေသဆိုင်ရာအခွင့်ထူးမခံရသေးသောအသုံးပြုသူတစ်ဦးအား စနစ်ပေါ်ရှိ root အခွင့်ထူးများဖြင့် ကုဒ်ကိုလုပ်ဆောင်နိုင်စေပါသည်။ ပြဿနာများကို ယနေ့ Ubuntu 21.10၊ 20.04 နှင့် 18.04 အတွက် snapd package update တွင် ဖြေရှင်းထားပါသည်။

ပထမဆုံး အားနည်းချက် (CVE-2021-44730) သည် hard link များကို ခြယ်လှယ်ခြင်းမှတစ်ဆင့် တိုက်ခိုက်မှုကို ခွင့်ပြုသော်လည်း စနစ် hard link ကာကွယ်မှုကို ပိတ်ရန် လိုအပ်သည် (sysctl fs.protected_hardlinks များကို 0 သို့ သတ်မှတ်ခြင်း)။ ပြဿနာသည် snap-update-ns နှင့် snap-discard-ns helper ပရိုဂရမ်များ root အဖြစ်လည်ပတ်နေသော executable files များ၏တည်နေရာကို မှားယွင်းစွာအတည်ပြုခြင်းကြောင့် ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ ဤဖိုင်များဆီသို့ လမ်းကြောင်းကို sc_open_snapd_tool() function တွင် တွက်ချက်ထားသည်၊ ၎င်းသည် သင်၏ directory တွင် snap-confine လုပ်ရန်နှင့် snap-confine လုပ်ရန် ခက်ခဲသောလင့်ခ်တစ်ခုကို ဖန်တီးနိုင်စေမည့် ၎င်း၏ကိုယ်ပိုင်လမ်းကြောင်းကို /proc/self/exe မှ အခြေခံ၍ တွက်ချက်ထားပါသည်။ update-ns နှင့် snap- utilities များကို ဤ directory တွင် discard-ns။ hard link မှတဆင့် run ပြီးနောက်၊ snap-confine with root rights with snap-update-ns နှင့် snap-discard-ns ဖိုင်များကို တိုက်ခိုက်သူမှအစားထိုးထားသော လက်ရှိလမ်းညွှန်မှ စတင်ပါမည်။

ဒုတိယအားနည်းချက်မှာ ပြိုင်ဆိုင်မှုအခြေအနေကြောင့်ဖြစ်ပြီး မူရင်း Ubuntu Desktop ဖွဲ့စည်းမှုပုံစံတွင် အသုံးချနိုင်သည်။ အသုံးချမှုအား Ubuntu Server တွင် အောင်မြင်စွာလုပ်ဆောင်နိုင်ရန်၊ ထည့်သွင်းသည့်အခါတွင် "Featured Server Snaps" ကဏ္ဍမှ ပက်ကေ့ဂျ်များထဲမှ တစ်ခုကို ရွေးချယ်ရပါမည်။ snap package အတွက် mount point namespace ကို ပြင်ဆင်မှုအတွင်း ခေါ်သော setup_private_mount() လုပ်ဆောင်ချက်တွင် ပြိုင်ပွဲအခြေအနေသည် ထင်ရှားပါသည်။ ဤလုပ်ဆောင်ချက်သည် “/tmp/snap.$SNAP_NAME/tmp” ယာယီလမ်းညွှန်တစ်ခု ဖန်တီးပေးသည် သို့မဟုတ် ၎င်းတွင် snap package အတွက် ချိတ်ဆက်ရန် ရှိပြီးသားတစ်ခုကို အသုံးပြုပါသည်။

ယာယီလမ်းညွှန်၏အမည်ကို ခန့်မှန်းနိုင်သောကြောင့်၊ တိုက်ခိုက်သူသည် ပိုင်ရှင်ကိုစစ်ဆေးပြီးနောက်တွင် ၎င်း၏အကြောင်းအရာများကို သင်္ကေတလင့်ခ်ဖြင့် အစားထိုးနိုင်သော်လည်း mount စနစ်ခေါ်ဆိုမှုကို မခေါ်ဆိုမီ။ ဥပမာအားဖြင့်၊ သင်သည် /tmp/snap.lxd/tmp ကို /tmp/snap.lxd directory တွင် symlink တစ်ခုဖန်တီးနိုင်သည်၊ ၎င်းသည် mount to call() သည် symlink ကိုလိုက်နာပြီး directory ကို mount လုပ်နိုင်သည်။ snap namespace။ အလားတူနည်းဖြင့်၊ /var/lib တွင် သင့်အကြောင်းအရာများကို တပ်ဆင်နိုင်ပြီး /var/lib/snapd/mount/snap.snap-store.user-fstab ကို အစားထိုးခြင်းဖြင့်၊ သင်၏ /etc directory ၏ mounting ကို namespace တွင် စုစည်းပါ။ /etc/ld.so.preload ကိုအစားထိုးခြင်းဖြင့် သင်၏ဒစ်ဂျစ်တိုက်ကို root လုပ်ပိုင်ခွင့်ဖြင့် တင်ခြင်းအား စုစည်းရန် snap package

snap-confine utility သည် လုံခြုံသော ပရိုဂရမ်းမင်းနည်းပညာများကို အသုံးပြု၍ Go တွင် ရေးသားထားသောကြောင့်၊ exploit ဖန်တီးခြင်းမှာ အသေးအဖွဲမဟုတ်သည့် အလုပ်တစ်ခုဖြစ်လာကြောင်း မှတ်သားထားပြီး၊ AppArmor ပရိုဖိုင်များကို အခြေခံ၍ ကာကွယ်ခြင်း၊ seccomp ယန္တရားအပေါ်အခြေခံ၍ စနစ်ခေါ်ဆိုမှုများကို စစ်ထုတ်ခြင်းနှင့် အသုံးပြုခြင်းများ အထီးကျန်မှုအတွက် mount namespace သို့သော်၊ သုတေသီများသည် စနစ်တွင် root လုပ်ပိုင်ခွင့်များရရှိရန် အလုပ်လုပ်သော exploit ကို ပြင်ဆင်နိုင်ခဲ့သည်။ အသုံးပြုသူများသည် ပေးထားသောအပ်ဒိတ်များကို ထည့်သွင်းပြီးနောက် ရက်သတ္တပတ်အနည်းငယ်အတွင်း exploit ကုဒ်ကို ထုတ်ဝေပါမည်။

source: opennet.ru

မှတ်ချက် Add