အခြားသူများ၏ terminals များတွင် escape sequence များကို အစားထိုးနိုင်စေသည့် အားနည်းချက်

util-linux ပက်ကေ့ချ်တွင် ပံ့ပိုးပေးထားသည့် wall utility တွင် အားနည်းချက်တစ်ခု (CVE-2024-28085) ကို ဖော်ထုတ်ထားပြီး terminals များသို့ မက်ဆေ့ချ်များ ပေးပို့ရန်အတွက် ရည်ရွယ်ထားပြီး၊ အခြားအသုံးပြုသူများ၏ terminals များကို လှည့်ဖြားခြင်းမှ လွတ်ကင်းသော sequences များမှတဆင့် တိုက်ခိုက်နိုင်မည်ဖြစ်သည်။ ပြဿနာသည် input stream ပေါ်ရှိ escape sequences များကို wall utility မှ block လုပ်ထားသော်လည်း command line arguments များတွင် attacker အား အခြားအသုံးပြုသူများ၏ terminals များမှ escape sequences များမှ လွတ်မြောက်ရန် ခွင့်ပြုခြင်းကြောင့် ပြဿနာဖြစ်ရသည်။

ဥပမာအားဖြင့်၊ 'wall $(printf "\033[33mHI")' ကို လုပ်ဆောင်ခြင်းဖြင့် သင်သည် "HI" ကို အဝါရောင်ဖြင့် ရိုက်နှိပ်နိုင်သည်။ မျက်နှာပြင်ပေါ်ရှိ ညွှန်ပြချက်ကို ရွှေ့ရန်၊ ရှင်းလင်းပြီး အစားထိုးနိုင်စေမည့် လွတ်မြောက်မှု အစီအစဉ်များကို အသုံးပြုခြင်းဖြင့်၊ သင်သည် အခြားအသုံးပြုသူ၏ terminal တွင် sudo စကားဝှက်အချက်ပြခြင်းကို အတုယူနိုင်ပါသည်။ အသုံးပြုသူသည်လှည့်ကွက်ကိုသတိမထားမိဘဲသူ၏စကားဝှက်ကိုထည့်သွင်းပါက၊ စကားဝှက်သည် input မှတ်တမ်းတွင်မရှိသောအမိန့်တစ်ခုအဖြစ်ပေါ်လာလိမ့်မည် (တကယ်တော့အသုံးပြုသူသည် command အစား command line တွင်သူ၏စကားဝှက်ကိုထည့်သွင်းလိမ့်မည်) ။ “\033[3A” // ကာဆာကို စာကြောင်း ၃ ကြောင်းအပေါ်သို့ ရွှေ့ပါ “\3[K” // ယခင်ထွက်ရှိထားသည့် “[sudo] password for a_user:” // ပြထားသော dummy sudo တောင်းဆိုချက် “\033[?033l”/ / ထည့်သွင်းမှုကို ဖျောက်ရန် နောက်ခံအရောင် "\25[033;38;2;48;10m"

ထည့်သွင်းထားသော command ကိုမတွေ့ကြောင်းသတိပေးချက်ထုတ်ပြန်သောအခါ၊ ဖြန့်ဝေမှုများအများအပြားသည် ပျောက်ဆုံးနေသော command ပါရှိသောအထုပ်ကိုဖော်ထုတ်ရန်နှင့်ထည့်သွင်းနိုင်သည်ရှိမရှိအကြောင်းအရိပ်အမြွက်ပေးသည့် /usr/lib/command-not-found handler ကိုလုပ်ဆောင်သည်။ . ပြဿနာမှာ command-not-found handler ကိုစတင်သောအခါတွင်၊ စနစ်ပေါ်ရှိ လုပ်ငန်းစဉ်များကိုကြည့်ရှုသည့်အခါ မြင်နိုင်သည့်အရာ (ဥပမာ၊ uninstalled utility ကို run ရန်ကြိုးစားနေသောအခါတွင်၊ ရှိမနေသော command ကို command line parameter အဖြစ်ပေးပို့သည် “xsnow”၊ “/usr” သည် /lib/command-not-found - xsnow) လုပ်ငန်းစဉ်များစာရင်းတွင် မြင်နိုင်မည်ဖြစ်သည်။ ထို့ကြောင့်၊ တိုက်ခိုက်သူသည် လုပ်ဆောင်နေသည့် လုပ်ငန်းစဉ်များကို စောင့်ကြည့်နိုင်သည် (ဥပမာ၊ ခန့်မှန်းထားသော PID နံပါတ်အတွက် “/proc/$pid/cmdline” ပေါ်ပေါက်မှုကို ပိုင်းခြားစိတ်ဖြာခြင်းဖြင့်) နှင့် အမိန့်ပေးစာလိုင်းတွင် သားကောင်ဝင်ရောက်သည့် စကားဝှက်ကို ဆုံးဖြတ်နိုင်သည်။

သုံးစွဲသူသည် စိတ်ကူးယဉ်သော sudo prompt ကို တုံ့ပြန်ရန်အတွက် စကားဝှက်ကို ထည့်သွင်းရန်အတွက် လှည့်ကွက်တစ်ခုကို အဆိုပြုထားပြီး၊ ဆိုလိုသည်မှာ လုပ်ငန်းစဉ်များစာရင်းရှိ sudo utility ၏ အမှန်တကယ်ထွက်ရှိမှုကို ခြေရာခံရန်၊ ၎င်းကို ပြီးအောင်စောင့်ရန်၊ အဲဒီနောက် ချက်ချင်းဆိုသလို “နံရံ” ကိုဖြတ်ပြီး တိုက်ခိုက်တယ်။ လွတ်မြောက်ခြင်းအစီအစဉ်များကို ကြိုးကိုင်ခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် sudo ကို အတုအယောင် စကားဝှက် ပြန်လည်ထည့်သွင်းမှု အမှာစာဖြင့် အမှန်တကယ် လုပ်ဆောင်ပြီးနောက် မက်ဆေ့ဂျ်ကို အစားထိုးနိုင်သည်။ သားကောင်သည် စကားဝှက်ကိုရိုက်ထည့်ကာ စကားဝှက်ကို ဒုတိယအကြိမ်ရိုက်ထည့်သည့်အခါ “အမိန့်ပေး-မတွေ့” ကိုင်တွယ်ဖြေရှင်းသူ၏ စကားဝှက်ကို ထုတ်ဖော်ပြောဆိုခြင်းတွင် စကားဝှက်ကို ဖော်ထုတ်ပြခြင်းဖြစ်နိုင်သည်။

အောင်မြင်သောတိုက်ခိုက်မှုတစ်ခုသည် Ubuntu၊ Debian နှင့် CentOS/RHEL တွင် ပုံသေသတ်မှတ်ထားသည့် "mesg" မုဒ်ကို "y" အဖြစ် သတ်မှတ်ရန် လိုအပ်သည်။ gnome-terminal ကိုအသုံးပြု၍ ၎င်း၏မူလဖွဲ့စည်းပုံပုံစံတွင် Ubuntu 22.04 တွင် တိုက်ခိုက်မှုကို သရုပ်ပြထားသည်။ Debian တွင်၊ ဖြန့်ဝေမှုတွင် “command-not-found” handler ကို ပုံမှန်အားဖြင့် ဖွင့်မထားသောကြောင့်၊ တိုက်ခိုက်မှုသည် ခက်ခဲမည်ဖြစ်ပြီး၊ wall utility ကို setgid အလံမပါဘဲ ထည့်သွင်းထားသောကြောင့်၊ CentOS/RHEL တွင် တိုက်ခိုက်မှုသည် အလုပ်မလုပ်ပါ။ အခြားသူများ၏ terminals များသို့ဝင်ရောက်ခွင့်မရှိပါ။ windows-terminal ကိုအသုံးပြုသောအခါ၊ ကလစ်ဘုတ်၏အကြောင်းအရာများကိုပြောင်းလဲရန်တိုက်ခိုက်မှုကိုမွမ်းမံနိုင်သည်။

2013 ထုတ်ဝေမှုတွင် wall command line တွင် မက်ဆေ့ချ်တစ်ခု သတ်မှတ်နိုင်မှုကို ထည့်သွင်းပြီးနောက် အားနည်းချက်သည် 2.24 ခုနှစ်ကတည်းက util-linux ပက်ကေ့ဂျ်တွင် ရှိနေခဲ့ပါသည်။ အားနည်းချက်အတွက် ပြင်ဆင်ချက်ကို ယမန်နေ့ထုတ် util-linux 2.40 တွင် ထည့်သွင်းထားသည်။ util-linux 2.39 ထုတ်ဝေမှုတွင် အားနည်းချက်ကို ပြင်ဆင်ရန် ကြိုးစားသောအခါ၊ ထိန်းချုပ်မှုဇာတ်ကောင်များကို locales ဖြင့် အစားထိုးနိုင်စေသည့် နောက်ထပ် အလားတူ အားနည်းချက်ကို ဖော်ထုတ်တွေ့ရှိခဲ့သည်မှာ မှတ်သားဖွယ်ဖြစ်ပါသည်။

source: opennet.ru

မှတ်ချက် Add