SWAPGS - CPU မှန်းဆလုပ်ဆောင်မှု ယန္တရားတွင် အားနည်းချက်အသစ်

Bitdefender မှသုတေသီများ ဖော်ထုတ်ခဲ့သည်။ အားနည်းချက်အသစ် (CVE-2019-1125) ပြဿနာဖြစ်စေသည့် ပရိုဆက်ဆာညွှန်ကြားချက်၏အမည်နှင့် ကိုက်ညီသော SWAPGS ဟု အမည်ပေးထားသည့် ခေတ်မီ CPU များ၏ မှန်းဆညွှန်ကြားချက်လုပ်ဆောင်မှု ယန္တရားတွင်၊ အားနည်းချက် ဒါဟာခွင့်ပြု အခွင့်ထူးမခံရသေးသော တိုက်ခိုက်သူအား kernel မန်မိုရီဧရိယာများ၏ အကြောင်းအရာများကို ဆုံးဖြတ်ရန် သို့မဟုတ် virtual machines များလည်ပတ်ခြင်းကို ခွင့်ပြုပါ။ ပြဿနာ အတည်ပြုခဲ့သည် Intel ပရိုဆက်ဆာ (x86_64) နှင့် တစ်စိတ်တစ်ပိုင်း အကျိုးသက်ရောက်သည်။ ပင်မတိုက်ခိုက်မှု vector မပေါ်သည့် AMD ပရိုဆက်ဆာများ။ Spectre နှင့် Meltdown အားနည်းချက်များကို တန်ပြန်ရန် ယခင်က လုပ်ဆောင်ခဲ့သည့် နည်းလမ်းများသည် Intel ပရိုဆက်ဆာများကို အသုံးပြုသည့်အခါ SWAPGS တိုက်ခိုက်မှုကို မကာကွယ်နိုင်သော်လည်း ပြုပြင်မှုများကို Linux၊ ChromeOS၊ Android နှင့် Windows အတွက် အဆိုပြုထားပြီးဖြစ်သည်။

အားနည်းချက်သည် Spectre v1 အတန်းအစားတွင်ရှိပြီး ညွှန်ကြားချက်များကို မှန်းဆလုပ်ဆောင်ပြီးနောက် ကျန်ရှိနေသော ပရိုဆက်ဆာ cache မှ အချက်အလက်များကို ပြန်လည်ရယူသည့် အယူအဆအပေါ် အခြေခံထားသည်။ စွမ်းဆောင်ရည်တိုးတက်စေရန်၊ ခေတ်မီ CPU များ၏ ဌာနခွဲခန့်မှန်းယူနစ်များသည် ကွပ်မျက်ခံရနိုင်ခြေအရှိဆုံး ညွှန်ကြားချက်အချို့ကို ကြိုတင်လုပ်ဆောင်မှုကို အသုံးပြုသော်လည်း ၎င်းတို့၏လုပ်ဆောင်မှုကို ဆုံးဖြတ်သည့်အချက်များအားလုံး၏တွက်ချက်မှုကို မစောင့်ဆိုင်းဘဲ (ဥပမာ၊ ဌာနခွဲအခြေအနေများ သို့မဟုတ် ဝင်ရောက်ခွင့်ကန့်သတ်ချက်များမရှိသည့်အခါ၊ မတွက်ချက်ရသေးပါ။) ခန့်မှန်းချက်ကို အတည်မပြုပါက၊ ပရိုဆက်ဆာသည် မှန်းဆလုပ်ဆောင်မှု၏ရလဒ်ကို ဖယ်ပစ်မည်ဖြစ်သော်လည်း ၎င်းသည် ပရိုဆက်ဆာကက်ရှ်တွင် ရှိနေစဉ်အတွင်း လုပ်ဆောင်ခဲ့သောဒေတာများကို ဘေးထွက်ချန်နယ်များမှတစ်ဆင့် ကက်ရှ်၏အကြောင်းအရာများကို ဆုံးဖြတ်ရန်အတွက် နည်းလမ်းများအသုံးပြု၍ ပြန်လည်ရယူနိုင်သည်၊ ဝင်ရောက်မှုဆိုင်ရာပြောင်းလဲမှုကို ပိုင်းခြားစိတ်ဖြာခြင်း ကက်ရှ်လုပ်ပြီး ကက်ရှ်မထားတဲ့ ဒေတာတွေကို သိမ်းဖို့ အချိန်ပါပဲ။

တိုက်ခိုက်မှုအသစ်၏ ထူးခြားချက်မှာ ထိန်းချုပ်မှုမှ သုံးစွဲသူနေရာမှ OS kernel သို့ ဖြတ်သန်းသည့်အခါ GS မှတ်ပုံတင်ခြင်းတန်ဖိုးကို အစားထိုးရန်အတွက် လည်ပတ်မှုစနစ်များတွင် အသုံးပြုသည့် SWAPGS ညွှန်ကြားချက်၏ မှန်းဆလုပ်ဆောင်မှုအတွင်း ပေါက်ကြားမှုတစ်ခုအသုံးပြုခြင်းဖြစ်သည် (GS အသုံးပြုသူနေရာလွတ်တွင်အသုံးပြုသည့်တန်ဖိုးကို kernel တွင်လုပ်ဆောင်နေစဉ်အသုံးပြုသည့်တန်ဖိုးနှင့်အစားထိုးသည်။ Linux kernel တွင်၊ GS သည် kernel ဒေတာကိုရယူရန်အသုံးပြုသည့် per_cpu pointer တစ်ခုကို သိမ်းဆည်းထားပြီး အသုံးပြုသူ space သည် pointers များကို TLS (Thread Local Storage) သို့ သိမ်းဆည်းပါသည်။

kernel နေရာကို ထပ်မံဝင်ရောက်သည့်အခါ SWAPGS ညွှန်ကြားချက်ကို နှစ်ကြိမ်ခေါ်ဆိုခြင်းမှ ရှောင်ရှားရန် သို့မဟုတ် GS မှတ်ပုံတင်ခြင်းပြောင်းလဲမှု မလိုအပ်သော ကုဒ်ကို လုပ်ဆောင်သည့်အခါ၊ စစ်ဆေးချက်တစ်ခုနှင့် အခြေအနေဆိုင်ရာဌာနခွဲတစ်ခုကို ညွှန်ကြားချက်မတိုင်မီ လုပ်ဆောင်မည်ဖြစ်သည်။ မှန်းဆချက်လုပ်ဆောင်မှုအင်ဂျင်သည် စစ်ဆေးမှုရလဒ်ကိုမစောင့်ဘဲ SWAPGS ညွှန်ကြားချက်ဖြင့် ကုဒ်ကိုလုပ်ဆောင်ရန် တက်ကြွစွာလုပ်ဆောင်နေပြီး ရွေးချယ်ထားသောဌာနခွဲကို အတည်မပြုပါက ရလဒ်ကို စွန့်ပစ်ပါ။ ထို့ကြောင့် SWAPGS ဆောင်ရွက်မှုတွင် မပါဝင်သည့် အကိုင်းအခက်တစ်ခုကို မှန်းဆရွေးချယ်လိုက်သောအခါတွင်၊ သို့သော် မှန်းဆလုပ်ဆောင်မှုအတွင်း GS မှတ်ပုံတင်ခြင်းတန်ဖိုးကို SWAPGS ညွှန်ကြားချက်ဖြင့် ပြောင်းလဲမည်ဖြစ်ပြီး CPU ကက်ရှ်တွင်အဆုံးသတ်သည့် မှီခိုမှတ်ဉာဏ်လုပ်ဆောင်မှုများတွင် အသုံးပြုသွားမည်ဖြစ်သည်။

သုတေသီများသည် exploit ရှေ့ပြေးပုံစံများကို ပြင်ဆင်ထားသည့်အတွက် တိုက်ခိုက်မှုအခြေအနေနှစ်ခုကို အဆိုပြုခဲ့သည်။ ပထမအခြေအနေမှာ SWAPGS ညွှန်ကြားချက်ကို မှန်းဆကာ လုပ်ဆောင်ခြင်းမပြုသည့် အခြေအနေအပေါ် အခြေခံထားပြီး ၎င်းကို အကောင်အထည်ဖော်ရာတွင် အမှန်တကယ်အသုံးပြုသော်လည်း၊ ဒုတိယမှာ SWAPGS ညွှန်ကြားချက်ကို အမှန်တကယ်လုပ်ဆောင်ခြင်းမပြုသင့်သော်လည်း မှန်းဆထားသည့်အတိုင်း လုပ်ဆောင်သည့်အခါ ဆန့်ကျင်ဘက်ဖြစ်သည်။ အခြေအနေတစ်ခုစီအတွက်၊ အသုံးချခြင်းအတွက် ရွေးချယ်စရာနှစ်ခုရှိသည်- တိုက်ခိုက်သူသည် kernel ဧရိယာရှိ သီးခြားလိပ်စာတစ်ခုတွင် တန်ဖိုးကို ဆုံးဖြတ်နိုင်ပြီး တိုက်ခိုက်သူသည် kernel ရှိ ကျပန်းလိပ်စာများတွင် သီးခြားတန်ဖိုးတစ်ခုကို ရှာဖွေနိုင်သည်။ တိုက်ခိုက်မှုတစ်ခုကို လုပ်ဆောင်ခြင်းသည် အချိန်ကြာမြင့်ပြီး ပေါက်ကြားမှုကို အပြီးသတ်ရန် နာရီများစွာ လိုအပ်ပါသည်။

ဗွီဒီယိုဖွင့်ပါ

Linux kernel တွင် ပြဿနာတစ်ခုရှိသည်။ ဖယ်ထုတ်ထားသည်။ အခြား Spectre v1 အတန်းအစား အားနည်းချက်များကို ပြုပြင်ခြင်းနှင့် ဆင်တူသော SWAPGS ညွှန်ကြားချက် (မှန်းဆလုပ်ဆောင်မှုကို ပိတ်ဆို့ခြင်း) ကို ခေါ်ဆိုခြင်း၏ ယုတ္တိကို ပြောင်းလဲခြင်းဖြင့်။ ထပ်လောင်းကာကွယ်မှုသည် ပုံမှန်အလုပ်များလုပ်ဆောင်မှုအပေါ် အနည်းငယ်သာသက်ရောက်မှုရှိမည်ဟု မျှော်လင့်ပါသည်။ ဥပမာအားဖြင့် အပလီကေးရှင်းမှ လေးလံသောစနစ်ခေါ်ဆိုမှု သို့မဟုတ် မကြာခဏ NMIs မျိုးဆက်များနှင့် အနှောင့်အယှက်များကြားရှိသည့်အခါတွင် အသုံးပြုသူနှင့် kernel space အကြား တုံ့ပြန်မှုအဆင့်တွင် latency ဖြစ်ပေါ်သည်။

ပြုပြင်မှုသည် လက်ခံသူစနစ်နှင့် ဧည့်သည်ပတ်ဝန်းကျင်နှစ်ခုလုံးတွင် kernel အပ်ဒိတ်ကို ထည့်သွင်းရန် လိုအပ်ပြီး ၎င်းနောက်တွင် စနစ်ပြန်လည်စတင်သည်။ Linux တွင် ကာကွယ်မှုကို ပိတ်ရန်၊ SWAPGS အားနည်းချက်ကို ပိတ်ဆို့ရန် အစီအမံများကို ပိတ်ထားသည့် "nospectre_v1" option ကို အသုံးပြုနိုင်ပါသည်။ ပြုပြင်မှုအဖြစ်ရရှိနိုင်သည်။ ဖာထေးခြင်း။ ထုတ်ဝေမှုများတွင်ပါရှိပြီးဖြစ်သည့် Linux kernel အတွက် 4.19.65, 5.2.74.14.137၊ 4.9.188 နှင့် 4.4.188။ Linux ဖြန့်ဝေမှုများအတွက် အပ်ဒိတ်များ မထုတ်ပြန်သေးပါ (debian, RHEL, Fedora, Arch Linux ကို, SUSE/openSUSE, Ubuntu ကို) Windows တွင် ပြဿနာကို တိတ်တဆိတ် ဖြေရှင်းခဲ့သည်။ ဇူလိုင်လ update. Google ကုမ္ပဏီ ပြင်ဆင် ChromeOS နှင့် ပေးပို့ထားသော kernel 4.19 အတွက် ပြင်ဆင်ခြင်း။ အန်းဒရွိုက်.

Bitdefender မှသုတေသီများ၏အဆိုအရ Intel သည်ယမန်နှစ်သြဂုတ်လတွင်ပြဿနာကိုအကြောင်းကြားခဲ့သည်။ Microsoft၊ Google နှင့် Linux kernel တို့မှ developer များသည် fix ၏ ပေါင်းစပ်ဖန်တီးမှုတွင် ပါဝင်ခဲ့သော ပြဿနာကို ပရိုဂရမ်ဖြင့် ဖြေရှင်းရန် ဆုံးဖြတ်ခဲ့သည်။ အဟောင်းများဖြစ်သော Intel ပရိုဆက်ဆာများ၊ pre-Ivy Bridge သည် exploit တွင်အသုံးပြုသည့် WrgSBASE ညွှန်ကြားချက်အတွက် ပံ့ပိုးမှုမရှိခြင်းကြောင့် တိုက်ခိုက်ရန် ပိုမိုခက်ခဲပါသည်။ ARM၊ POWER၊ SPARC၊ MIPS နှင့် RISC-V စနစ်များသည် SWAPGS ညွှန်ကြားချက်ကို မပံ့ပိုးသောကြောင့် ပြဿနာကြောင့် ထိခိုက်မှုမရှိပါ။

အဆိုပါပြဿနာသည် Intel ပရိုဆက်ဆာများ၏ပိုင်ရှင်များကိုအဓိကအားဖြင့်အကျိုးသက်ရောက်သည် -
AMD စနစ်များတွင်၊ ကျပန်းမမ်မိုရီဧရိယာများရှိ သီးခြားတန်ဖိုးများကိုရှာဖွေရန် အသုံးပြုနိုင်သည့် GS မှတ်ပုံတင်ခြင်း၏ အခြေခံတန်ဖိုးကို မှန်းဆလုပ်ဆောင်ခြင်းအတွက် ကန့်သတ်ထားသည့် ဒုတိယတိုက်ခိုက်မှုဇာတ်လမ်းကိုသာ ပြန်လည်ထုတ်လုပ်နိုင်ခဲ့သည်။ ဤတိုက်ခိုက်မှုရွေးချယ်မှုကို ပိတ်ဆို့ရန် လုံလောက်စွာ Spectre v1 ကို လက်ရှိကာကွယ်မှုနည်းလမ်းများ။

source: opennet.ru

မှတ်ချက် Add