Spectre တိုက်ခိုက်မှုများကို ကျော်လွှားကာ အကာအကွယ်ပေးသည့် eBPF စနစ်ခွဲရှိ အားနည်းချက်များ

eBPF စနစ်ခွဲအား Spectre class ချို့ယွင်းချက်များမှ ကာကွယ်မှုကို ကျော်လွှားနိုင်စေရန် ခွင့်ပြုပေးသော Linux kernel (CVE-2021-33624) တွင် အားနည်းချက်တစ်ခုကို ဖော်ထုတ်ထားပြီး၊ အချို့သော လုပ်ငန်းဆောင်ရွက်မှုများကို ခန့်မှန်းတွက်ချက်ခြင်း။ Spectre တိုက်ခိုက်မှုသည် မှန်းဆထားသော ညွှန်ကြားချက်များကို အကောင်အထည်ဖော်ရန် ဦးတည်စေသည့် အခွင့်ထူးခံကုဒ်တွင် သတ်မှတ်ထားသော ညွှန်ကြားချက်များ ဆက်တိုက်ရှိနေရန် လိုအပ်သည်။ လုပ်ဆောင်ချက်အတွက် ပို့လွှတ်သော BPF ပရိုဂရမ်များကို ကြိုးကိုင်ခြင်းဖြင့်၊ ၎င်းသည် eBPF တွင် အလားတူညွှန်ကြားချက်များကို ထုတ်လုပ်နိုင်ပြီး ဘေးထွက်ချန်နယ်များမှတစ်ဆင့် kernel memory နှင့် ရုပ်ပိုင်းဆိုင်ရာမှတ်ဉာဏ်၏ မတရားသောနေရာများကို ပေါက်ကြားနိုင်သည်။

အားနည်းချက်သည် BPF ပရိုဂရမ်များတွင် အမှားအယွင်းများနှင့် လက်မခံနိုင်သော လုပ်ဆောင်ချက်များကို ရှာဖွေရန် အသုံးပြုသည့် Verifier ရှိ ချို့ယွင်းချက်များကြောင့် ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ Verifier သည် ဖြစ်နိုင်ချေရှိသော ကုဒ်လုပ်ဆောင်မှုလမ်းကြောင်းများကို ရေတွက်သော်လည်း၊ instruction set ဗိသုကာ၏ သဘောတရားအမြင်အရ လက်မခံနိုင်သော အကိုင်းအခက်ရွေးချယ်မှုများကို ကျော်သွားပါသည်။ BPF ပရိုဂရမ်ကို လုပ်ဆောင်သည့်အခါ၊ အတည်ပြုသူမှ ထည့်သွင်းစဉ်းစားခြင်းမရှိသော အကိုင်းအခက်ရွေးချယ်မှုများကို ပရိုဆက်ဆာမှ မှားယွင်းစွာ ခန့်မှန်းနိုင်ပြီး မှန်းဆမုဒ်တွင် လုပ်ဆောင်နိုင်သည်။ ဥပမာအားဖြင့်၊ "load" လုပ်ဆောင်ချက်ကို ပိုင်းခြားစိတ်ဖြာသည့်အခါ၊ verifier သည် ညွှန်ကြားချက်သည် သတ်မှတ်ထားသော ဘောင်အတွင်း၌ တန်ဖိုးအမြဲရှိနေသော လိပ်စာတစ်ခုနှင့် မှတ်ပုံတင်တစ်ခုကို အသုံးပြုမည်ဟု မျှော်လင့်ထားသော်လည်း တိုက်ခိုက်သူသည် ပရိုဆက်ဆာနှင့် မှန်းဆလုပ်ဆောင်ရန် ကြိုးစားမည့် အခြေအနေများကို ဖန်တီးနိုင်သည်။ စိစစ်ရေး အခြေအနေများနှင့် မကိုက်ညီသော လိပ်စာ။

kernel 4.15 ထွက်ရှိပြီးကတည်းက ပြဿနာပေါ်လာပြီး ဖာထေးမှုပုံစံ (1၊ 2၊ 3၊ 4) ဖြင့် ဖြေရှင်းထားပါသည်။ အားနည်းချက်သည် ဖြန့်ဝေမှုများတွင် မပြုပြင်ရသေးပါ (Debian၊ RHEL၊ Ubuntu၊ Fedora၊ SUSE၊ Arch)။

ထို့အပြင် Spectre အားနည်းချက်များကို ကာကွယ်ရန် ကိရိယာများ၏ စွမ်းဆောင်ရည်သက်ရောက်မှုအကြောင်း မှတ်သားထားနိုင်သည်။ မှတ်စုသည် Firefox တွင် ပြန်လုပ်ရခက်သော အမှားများကို အမှားရှာရန် တစ်ချိန်က Mozilla တွင် ဖန်တီးခဲ့သည့် rr (Record and Replay) အမှားရှာပြင်ခြင်း၏ ရလဒ်များကို အကျဉ်းချုပ်ဖော်ပြပါသည်။ လမ်းညွှန်များ တည်ရှိမှုကို စစ်ဆေးရန် အသုံးပြုသည့် စနစ်ခေါ်ဆိုမှုများကို သိမ်းဆည်းခြင်းသည် စမ်းသပ်ပရောဂျက်အတွက် "rr ရင်းမြစ်များ" လုပ်ဆောင်ချက်ကို 3 မိနစ် 19 စက္ကန့်မှ 36 စက္ကန့်သို့ လျှော့ချခဲ့သည်။

Spectre အကာအကွယ်ကို ပိတ်ပြီးနောက် စွမ်းဆောင်ရည် ပြောင်းလဲလာပုံကို ပိုမိုကောင်းမွန်အောင် ဖန်တီးရေးသားသူမှ ဆုံးဖြတ်ခဲ့သည်။ “mitigations=off” parameter ဖြင့် system ကို တင်ပြီးနောက်၊ optimization မပါဘဲ “rr ရင်းမြစ်များ” ၏ လုပ်ဆောင်ချိန်သည် 2 မိနစ် 5 စက္ကန့် (1.6 ဆ ပိုမြန်သည်) နှင့် optimization ဖြင့် 33 စက္ကန့် (9% ပိုမြန်သည်)။ စိတ်ဝင်စားစရာမှာ၊ Spectre အကာအကွယ်ကို ပိတ်ထားခြင်းသည် kernel အဆင့်တွင် ကုဒ်လုပ်ဆောင်ချိန်ကို 1.4 ဆ (2m9s မှ 1m32s) မှ လျှော့ချရုံသာမက အသုံးပြုသူနေရာ (1m9s မှ 0m33s) တွင် ထိရောက်မှုလျော့ချထားသော CPU cache လုပ်ဆောင်မှုနှင့် TLB ကြောင့်ဟု ယူဆရပါသည် Spectre Protection ကိုဖွင့်ထားသောအခါ ပြန်လည်သတ်မှတ်ပါ။

source: opennet.ru

မှတ်ချက် Add