အန္တရာယ်ရှိသောဖိုင်ကိုဖွင့်သည့်အခါ ကုဒ်လုပ်ဆောင်မှုကိုဖြစ်ပေါ်စေသည့် Vim ရှိ အားနည်းချက်

စာသားတည်းဖြတ်သူများတွင် Vim и neovim တွေ့တယ်။ အားနည်းချက် (CVE-2019-12735) အထူးဒီဇိုင်းဖိုင်ကိုဖွင့်သည့်အခါ မထင်သလိုကုဒ်ကို လုပ်ဆောင်နိုင်စေသော၊ စီမံဆောင်ရွက်ထားသော ဖိုင်တွင် တည်းဖြတ်မှုရွေးချယ်စရာများကို သင်သတ်မှတ်နိုင်စေသည့် မူရင်းမော်ဒယ်လ်မုဒ် (“:set modeline”) သည် အသက်ဝင်သည့်အခါ ပြဿနာဖြစ်ပေါ်ပါသည်။ ထုတ်ဝေမှုများတွင် အားနည်းချက်ကို ပြင်ဆင်ထားသည်။
Vim 8.1.1365 и Neovim 0.3.6.

ကန့်သတ်အရေအတွက်ကိုသာ modeline မှတစ်ဆင့် ထည့်သွင်းနိုင်သည်။ ဖော်ပြချက်တစ်ခုကို ရွေးချယ်မှုတန်ဖိုးအဖြစ် သတ်မှတ်ထားပါက၊ ၎င်းကို အရိုးရှင်းဆုံး ဘေးကင်းသော လုပ်ဆောင်မှုများကိုသာ ခွင့်ပြုသည့် sandbox မုဒ်တွင် လုပ်ဆောင်သည်။ ဤကိစ္စတွင်၊ မှန်ကန်သောအမိန့်တော်တွင် သင်သည် “!” ပြုပြင်မွမ်းမံမှုကို အသုံးပြုနိုင်သည့် “:source” အမိန့် ပါဝင်သည်။ သတ်မှတ်ထားသော ဖိုင်မှ မတရားသော ညွှန်ကြားချက်များကို လုပ်ဆောင်ရန်။ ထို့ကြောင့်၊ ကုဒ်ကိုလုပ်ဆောင်ရန်၊ "set foldexpr=execute('\:source! some_file'):" ကဲ့သို့ တည်ဆောက်မှုပုံစံကို modeline line တွင် ညွှန်ပြရန် လုံလောက်ပါသည်။ Neovim တွင်၊ execute ခေါ်ဆိုခြင်းကို တားမြစ်ထားသော်လည်း assert_fails အစား အသုံးပြုနိုင်မည်ဖြစ်သည်။

ဥပမာအားဖြင့်၊ “uname -a” command ကို run ရန်၊ ပထမဆုံး သို့မဟုတ် နောက်ဆုံးစာကြောင်းပြောထားသည့် Vim သို့မဟုတ် Neovim တွင် ဖိုင်တစ်ခုကို ဖွင့်ပါ။

:!uname -a||» vi:fen:fdm=expr:fde=asssert_fails("အရင်းအမြစ်\!\ \%"):fdl=0:fdt=”

ကုမ္ပဏီ "အရင်းအမြစ်! %" သည် လက်ရှိဖိုင်မှ ညွှန်ကြားချက်များကို ဖတ်ပြီး ":!uname -a" နှင့်အညီ လုပ်ဆောင်ပါမည်။ Cat utility မှ ပေးထားသည့် လိုင်းတစ်ခုကို အထွက်မှ ဖျောက်ရန် Escape sequences ကို သုံးနိုင်သည်။ ဥပမာအားဖြင့်၊ ဤ၌ exploit နမူနာပုံစံ vim တွင် ဖိုင်တစ်ခုကိုဖွင့်သောအခါ၊ သားကောင်၏စနစ်သို့ shell access ဖြင့် ကွန်ရက်ချိတ်ဆက်မှုကို ဖန်တီးထားသော်လည်း cat utility ကို အသုံးပြု၍ terminal သို့ output လုပ်သောအခါတွင် ဤဖိုင်သည် သံသယဖြစ်စရာဖြစ်လာမည်မဟုတ်ပါ။

":set modeline?" အမိန့်ဖြင့် မော်ဒယ်လ်မုဒ်၏ လုပ်ဆောင်ချက်ကို စစ်ဆေးနိုင်သည်။ ၎င်းကိုပိတ်ရန်၊ သင်သည် vimrc သို့ "set nomodeline" လိုင်းကိုထည့်နိုင်သည်။ ဖြန့်ဖြူးမှုတွင် ပြဿနာကို ဖြေရှင်းသည်။ RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu ကို, Arch Linux ကို и ALT. အားနည်းချက်သည် ပြုပြင်မွမ်းမံထားဆဲဖြစ်သည်။ debian (Debian modeline တွင် မူရင်းအတိုင်း ပိတ်ထားသောကြောင့် အားနည်းချက်သည် ပုံသေအခြေအနေတွင် မပေါ်ပါ)။

source: opennet.ru

မှတ်ချက် Add