အဝေးထိန်းနှင့် စက်တွင်း အမြစ်ဝင်ရောက်ခွင့်ကို ခွင့်ပြုသည့် OpenSMTPD ရှိ အားနည်းချက်များ

Qualys ကုမ္ပဏီ ထုတ်ဖော်ခဲ့သည်။ မေးလ်ဆာဗာရှိ အခြားသော အဝေးထိန်းစနစ်ဆိုင်ရာ အားနည်းချက် (CVE-2020-8794) OpenSMTPDOpenBSD ပရောဂျက်မှ ဖန်တီးသည်။ ဇန်န၀ါရီလကုန်တွင် ဖော်ထုတ်ခဲ့သည့်အတိုင်းပင် အားနည်းချက်ပြဿနာအသစ်သည် root အသုံးပြုသူအခွင့်အရေးဖြင့် ဆာဗာတစ်ခုပေါ်တွင် မတရား shell အမိန့်များကို အဝေးမှလုပ်ဆောင်နိုင်စေသည်။ အားနည်းချက် ဖယ်ထုတ်ထားသည်။ ကိစ္စ OpenSMTPD 6.6.4p1.

ပြဿနာသည် အဝေးမှမေးလ်ဆာဗာသို့ စာပို့သည့်ကုဒ်တွင် အမှားအယွင်းတစ်ခုကြောင့် (အဝင်ချိတ်ဆက်မှုများကို ကိုင်တွယ်သည့်ကုဒ်တွင်မဟုတ်ပါ)။ တိုက်ခိုက်မှုသည် client side နှင့် server side တွင် နှစ်မျိုးလုံး ဖြစ်နိုင်သည်။ ကလိုင်းယင့်ဘက်တွင်၊ OpenSMTPD ၏ ပုံသေဖွဲ့စည်းပုံပုံစံတွင် တိုက်ခိုက်ခြင်းဖြစ်နိုင်သည်၊ ၎င်းတွင် OpenSMTPD သည် အတွင်းကွန်ရက်အင်တာဖေ့စ် (localhost) တွင်သာ တောင်းဆိုမှုများကို လက်ခံပြီး ပြင်ပဆာဗာများသို့ စာတိုပေးပို့သည်။ အားနည်းချက်ကို အသုံးချရန်၊ စာတစ်စောင်ပေးပို့စဉ်တွင်၊ OpenSMTPD သည် တိုက်ခိုက်သူမှ ထိန်းချုပ်ထားသော မေးလ်ဆာဗာတစ်ခုဖြင့် session တစ်ခုကို ထူထောင်သည်၊ သို့မဟုတ် တိုက်ခိုက်သူသည် client ချိတ်ဆက်မှုသို့ သပ်နိုင်သည် (MITM သို့မဟုတ် DNS သို့မဟုတ် BGP မှတစ်ဆင့် တိုက်ခိုက်မှုအတွင်း ပြန်ညွှန်းနိုင်သည် )

ဆာဗာဘက်ခြမ်းတိုက်ခိုက်မှုအတွက်၊ OpenSMTPD သည် အခြားမေးလ်ဆာဗာများထံမှ ပြင်ပကွန်ရက်တောင်းဆိုမှုများကို လက်ခံရရှိရန် သို့မဟုတ် သင့်အား မတရားသောအီးမေးလ်တစ်ခုထံ တောင်းဆိုချက်တစ်ခုပေးပို့ရန် ခွင့်ပြုသည့် ပြင်ပဝန်ဆောင်မှုများ (ဥပမာ၊ ဝဘ်ဆိုက်များရှိ လိပ်စာအတည်ပြုမှုပုံစံများ) ကို ဆောင်ရွက်ပေးရန် စီစဉ်သတ်မှတ်ထားရပါမည်။ ဥပမာအားဖြင့်၊ တိုက်ခိုက်သူတစ်ဦးသည် OpenSMTPD ဆာဗာသို့ ချိတ်ဆက်နိုင်ပြီး မှားယွင်းသောစာတစ်စောင် (နဂိုမရှိသောအသုံးပြုသူထံသို့) ပေးပို့နိုင်ပြီး ၎င်းသည် တိုက်ခိုက်သူ၏ဆာဗာသို့ အမှားကုဒ်ဖြင့် စာတစ်စောင်ပေးပို့ခြင်းအား တုံ့ပြန်မှုဖြစ်ပေါ်စေမည်ဖြစ်သည်။ တိုက်ခိုက်သူ၏ဆာဗာသို့ အသိပေးချက်တစ်ခုပေးပို့ရန် OpenSMTPD ချိတ်ဆက်သည့်အခါ တိုက်ခိုက်သူသည် အားနည်းချက်ကို အသုံးချနိုင်သည်။ တိုက်ခိုက်မှုအတွင်း ထည့်သွင်းထားသော shell command များကို OpenSMTPD ပြန်လည်စတင်သည့်အခါ root လုပ်ပိုင်ခွင့်ဖြင့် လုပ်ဆောင်ထားသော ဖိုင်တစ်ခုတွင် ထည့်သွင်းထားသောကြောင့် တိုက်ခိုက်သူသည် တိုက်ခိုက်မှုပြီးမြောက်ရန် OpenSMTPD ကို ပြန်လည်စတင်ရန် သို့မဟုတ် စတင်ရန် စောင့်ဆိုင်းရမည်ဖြစ်ပါသည်။

ချိတ်ဆက်မှုတစ်ခုတည်ဆောက်ပြီးနောက် အဝေးထိန်းဆာဗာမှ ပြန်ပေးသော multiline တုံ့ပြန်မှုကို ခွဲခြမ်းစိတ်ဖြာရန်အတွက် ကုဒ်ရှိ mta_io() လုပ်ဆောင်ချက်တွင် ပြဿနာရှိနေသည် (ဥပမာ၊ "250-ENHANCEDSTATUSCODES" နှင့် "250 HELP")။ OpenSMTPD သည် ပထမစာကြောင်းတွင် ဂဏန်းသုံးလုံးနံပါတ်နှင့် "-" အက္ခရာဖြင့် ပိုင်းခြားထားသော စာသားပါ၀င်ကြောင်း၊ ဒုတိယစာကြောင်းတွင် ဂဏန်းသုံးလုံးနံပါတ်နှင့် နေရာလွတ်တစ်ခုခြားထားသော စာသားပါရှိသည်။ ဂဏန်းသုံးလုံးနံပါတ်ကို ဒုတိယစာကြောင်းရှိ နေရာလွတ်နှင့် စာသားနောက်တွင် မလိုက်ပါက၊ စာသားကို သတ်မှတ်ရန် အသုံးပြုသော ညွှန်ပြချက်ကို '\0' အက္ခရာအောက်ပါ byte သို့ သတ်မှတ်ထားပြီး အဆုံးတွင် ဒေတာကို ကူးယူရန် ကြိုးပမ်းမှု ပြုလုပ်ပါသည်။ လိုင်း၏ကြားခံသို့။

OpenBSD ပရောဂျက်၏ တောင်းဆိုချက်အရ၊ အသုံးပြုသူများ ၎င်းတို့၏စနစ်များကို အပ်ဒိတ်လုပ်ခွင့်ပြုရန် အားနည်းချက်ကို အသုံးချခြင်းဆိုင်ရာ အသေးစိတ်အချက်အလက်များ ထုတ်ပြန်ခြင်းကို ဖေဖော်ဝါရီ ၂၆ ရက်အထိ နှောင့်နှေးခဲ့သည်။ အဆိုပါပြဿနာသည် 26 ခုနှစ် ဒီဇင်ဘာလကတည်းက codebase တွင်ရှိနေခဲ့ပြီးဖြစ်သော်လည်း root အခွင့်ထူးများဖြင့် ကုဒ်မလုပ်ဆောင်မီ ထုတ်ယူခြင်းမှာ 2015 ခုနှစ် မေလကတည်းက ဖြစ်နိုင်သည်။ သုတေသီများသည် OpenBSD 2018၊ OpenBSD 6.6၊ Debian 5.9၊ Debian 10 (စမ်းသပ်ခြင်း) နှင့် Fedora 11 အတွက် OpenSMTPD တည်ဆောက်မှုများတွင် အောင်မြင်စွာ စမ်းသပ်ခဲ့သည့် exploit ၏ ရှေ့ပြေးပုံစံကို သုတေသီများက ပြင်ဆင်ခဲ့သည်။

OpenSMTPD တွင်လည်း ဖော်ထုတ်ခဲ့သည်။ ဒေသခံအသုံးပြုသူတစ်ဦးသည် စနစ်ရှိ မည်သည့်ဖိုင်၏ပထမစာကြောင်းကိုမဆို ဖတ်နိုင်စေမည့် အခြားအားနည်းချက် (CVE-2020-8793)။ ဥပမာအားဖြင့်၊ သင်သည် အသုံးပြုသူ၏ စကားဝှက် hash ပါရှိသော /etc/master.passwd ၏ ပထမစာကြောင်းကို ဖတ်နိုင်သည်။ ဤဖိုင်သည် /var/spool/smtpd/ directory ကဲ့သို့ တူညီသော ဖိုင်စနစ်တွင် တည်ရှိပါက အားနည်းချက်သည် အခြားအသုံးပြုသူတစ်ဦး ပိုင်ဆိုင်သည့် ဖိုင်တစ်ခု၏ အကြောင်းအရာတစ်ခုလုံးကို ဖတ်နိုင်စေမည်ဖြစ်သည်။ /proc/sys/fs/protected_hardlinks ၏တန်ဖိုးကို 1 ဟုသတ်မှတ်ထားသည့် Linux ဖြန့်ဝေမှုများစွာတွင် ပြဿနာကို အသုံးချ၍မရပါ။

ပြဿနာသည် မပြည့်စုံခြင်း၏ အကျိုးဆက်ဖြစ်သည်။ ပြဿနာများ2015 ခုနှစ်တွင် Qualys မှပြုလုပ်သောစာရင်းစစ်အတွင်းအသံသွင်းခဲ့သည်။ တိုက်ခိုက်သူသည် “PATH=” variable ကို သတ်မှတ်ခြင်းဖြင့် “_smtpq” အုပ်စု၏ အခွင့်အရေးများဖြင့် ၎င်း၏ကုဒ်ကို အကောင်အထည်ဖော်နိုင်မည်ဖြစ်သည်။ နှင့် လက်ရှိလမ်းညွှန်တွင် makemap ဟုခေါ်သော ဇာတ်ညွှန်းတစ်ခုကို ထားရှိပါ (smtpctl utility သည် လမ်းကြောင်းကို အတိအကျမသတ်မှတ်ဘဲ makemap ကို လုပ်ဆောင်သည်)။ "_smtpq" အဖွဲ့သို့ ဝင်ရောက်ခွင့်ရရှိခြင်းဖြင့်၊ ထို့နောက် တိုက်ခိုက်သူသည် ပြိုင်ပွဲအခြေအနေ (အော့ဖ်လိုင်းလမ်းညွှန်တွင် ဖိုင်ကြီးတစ်ခုကို ဖန်တီးပြီး SIGSTOP အချက်ပြမှုတစ်ခု ပေးပို့နိုင်သည်) နှင့် လုပ်ဆောင်ခြင်းမပြီးမီ၊ အော့ဖ်လိုင်းလမ်းညွှန်တွင် ဖိုင်ကို ခဲဖြင့် အစားထိုးပါ။ symlink သည် အကြောင်းအရာများကို ဖတ်ရန် လိုအပ်သည့် ပစ်မှတ်ဖိုင်ကို ညွှန်ပြသည်။

Fedora 31 တွင် အားနည်းချက်သည် သင့်အား smtpctl လုပ်ငန်းစဉ်တွင် setgid smtpq အလံအစား setgid root flag နှင့်တပ်ဆင်ထားသောကြောင့် root group ၏အခွင့်ထူးများကိုချက်ချင်းရရှိနိုင်သည်ကို သတိပြုမိပါသည်။ အမြစ်အဖွဲ့သို့ ဝင်ရောက်ခွင့်ရခြင်းဖြင့်၊ သင်သည် /var/lib/sss/mc/passwd ၏ အကြောင်းအရာများကို ထပ်ရေးနိုင်ပြီး စနစ်သို့ အပြည့်အဝ အမြစ်ဝင်ရောက်ခွင့်ကို ရရှိနိုင်သည်။

source: opennet.ru

မှတ်ချက် Add