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

Spectre v4 တိုက်ခိုက်မှု (SSB၊ Speculative Store Bypass) ကို ရှောင်ရှားရန် eBPF စနစ်ခွဲကို အသုံးပြုရန် အားနည်းချက်နှစ်ခုကို ဖော်ထုတ်နိုင်ခဲ့သည်။ အခွင့်ထူးမရသော BPF ပရိုဂရမ်ကို အသုံးပြုခြင်းဖြင့် တိုက်ခိုက်သူသည် အချို့သောလုပ်ဆောင်ချက်များ၏ မှန်းဆလုပ်ဆောင်မှုအတွက် အခြေအနေများဖန်တီးနိုင်ပြီး kernel memory ၏ မတရားသောဧရိယာများ၏ အကြောင်းအရာများကို ဆုံးဖြတ်နိုင်သည်။ kernel ရှိ eBPF စနစ်ခွဲများ၏ ထိန်းသိမ်းသူများသည် လက်တွေ့တွင် တိုက်ခိုက်မှုများကို လုပ်ဆောင်နိုင်စွမ်းကို ပြသသည့် ရှေ့ပြေးပုံစံ exploit ကို အသုံးပြုခွင့် ရရှိခဲ့သည်။ ပြဿနာများကို လာမည့် Linux kernel အပ်ဒိတ်တွင် ထည့်သွင်းမည့် patches (1၊ 2) ပုံစံဖြင့် ဖြေရှင်းထားပါသည်။ ဖြန့်ချီရေးကိရိယာများတွင် အပ်ဒိတ်များကို မဖန်တီးရသေးပါ (Debian၊ RHEL၊ SUSE၊ Arch၊ Fedora၊ Ubuntu)။

Spectre 4 တိုက်ခိုက်မှုနည်းလမ်းသည် သွယ်ဝိုက်သောလိပ်စာကိုအသုံးပြု၍ သွယ်ဝိုက်သောလိပ်စာဖြင့်ရေးသားခြင်းနှင့်ဖတ်ခြင်းလုပ်ဆောင်ချက်များကိုလုပ်ဆောင်သည့်အခါ မှန်းဆလုပ်ဆောင်မှုများ၏ရလဒ်ကိုစွန့်ပစ်ပြီးနောက် ပရိုဆက်ဆာကက်ရှ်တွင်သိမ်းဆည်းထားသည့်ဒေတာကိုပြန်လည်ရယူခြင်းအပေါ်အခြေခံသည်။ လုပ်ဆောင်ချက်တစ်ခုသည် ရေးရန်လုပ်ဆောင်ချက်ကို လိုက်နာသောအခါ (ဥပမာ၊ mov [rbx + rcx]၊ 0x0; mov rax၊ [rdx + rsi])၊ အလားတူလုပ်ဆောင်မှုများ လုပ်ဆောင်နေခြင်းကြောင့် read address ၏ offset ကို သိရှိပြီးဖြစ်နိုင်သည် (ဖတ်ရှုခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များသည်၊ ပိုမိုမကြာခဏလုပ်ဆောင်ပြီး reads များကို cache မှလုပ်ဆောင်နိုင်သည်) နှင့် processor သည် write's indirection offset ကို တွက်ချက်ရန် မစောင့်ဆိုင်းဘဲ မရေးမီ read များကို မှန်းဆနိုင်သည်။

အော့ဖ်ဆက်ကို တွက်ချက်ပြီးနောက်၊ စာရေးခြင်းနှင့် စာဖတ်ခြင်းအတွက် မှတ်ဉာဏ်နေရာများ၏ ဆုံမှတ်တစ်ခုကို တွေ့ရှိပါက ပရိုဆက်ဆာသည် ရရှိထားပြီးဖြစ်သော မှန်းဆထားသော ဖတ်ရှုခြင်းရလဒ်ကို ရိုးရိုးရှင်းရှင်း စွန့်ပစ်ပြီး ဤလုပ်ဆောင်ချက်ကို ထပ်လုပ်ပါမည်။ ဤအင်္ဂါရပ်သည် စတိုးဆိုင်လည်ပတ်မှု မပြီးပြတ်သေးချိန်တွင် အချို့လိပ်စာတွင် တန်ဖိုးဟောင်းတစ်ခုကို ဝင်ရောက်ကြည့်ရှုရန် ဤအင်္ဂါရပ်ကို ခွင့်ပြုသည်။ မအောင်မြင်သော မှန်းဆသည့် လုပ်ဆောင်ချက်ကို စွန့်ပစ်ပြီးနောက်၊ ၎င်း၏ လုပ်ဆောင်မှု သဲလွန်စများသည် ကက်ရှ်တွင် ကျန်ရှိနေသည်၊ ထို့နောက် ကက်ရှ်၏ အကြောင်းအရာများကို ဆုံးဖြတ်ရန် နည်းလမ်းများထဲမှ တစ်ခုကို ကက်ရှ်လုပ်ထားသည့် ဒေတာအသုံးပြုခွင့်အချိန်နှင့် ကက်ရှ်မထားသည့် ကက်ရှ်မထားသည့် ဒေတာပြောင်းလဲမှုများကို ခွဲခြမ်းစိတ်ဖြာမှုအပေါ် အခြေခံ၍ ၎င်းကို ပြန်လည်ရယူရန် အသုံးပြုနိုင်သည်။

ပထမဆုံး အားနည်းချက် (CVE-2021-35477) သည် BPF ပရိုဂရမ် အတည်ပြုခြင်း ယန္တရားတွင် ချို့ယွင်းချက်ကြောင့် ဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ Spectre 4 တိုက်ခိုက်မှုကို ကာကွယ်ရန်၊ ယခင်လုပ်ဆောင်မှု၏ ခြေရာခံများကို ဖယ်ရှားရန် null တန်ဖိုးကို သိမ်းဆည်းသည့် မမ်မိုရီတွင် ပြဿနာရှိနိုင်သော စတိုးဆိုင်များအပြီးတွင် နောက်ထပ် ညွှန်ကြားချက်တစ်ခု ထပ်လောင်းသည်။ write null လုပ်ဆောင်ချက်သည် အလွန်လျင်မြန်ပြီး BPF stack frame သို့ ညွှန်ပြချက်တစ်ခုပေါ်တွင်သာ မူတည်သောကြောင့် ၎င်းသည် မှန်းဆလုပ်ဆောင်မှုကို ပိတ်ဆို့ရန် မျှော်လင့်ထားသည်။ သို့သော် အမှန်တကယ်တွင်၊ ကြိုတင်ခန့်မှန်းထားသောစတိုးဆိုင်မလည်ပတ်မီတွင် မှန်းဆထားသော ကွပ်မျက်မှုကို ဦးတည်စေသည့် ညွှန်ကြားချက်တစ်ခုသည် ကြိုတင်ပြင်ဆင်ထားသောစတိုးဆိုင်မလည်ပတ်မီတွင် ကွပ်မျက်ရန် စီမံထားသည့်အခြေအနေများကို ဖန်တီးနိုင်ခဲ့ခြင်းဖြစ်ပေသည်။

ဒုတိယအားနည်းချက် (CVE-2021-3455) သည် BPF စိစစ်ရေးမှူးက အန္တရာယ်ဖြစ်နိုင်ချေရှိသော မမ်မိုရီသိမ်းဆည်းခြင်းလုပ်ငန်းဆောင်တာများကို ဖော်ထုတ်သောအခါ၊ ၎င်းသည် အကာအကွယ်မရှိသော ပထမဆုံးရေးသားသည့်လုပ်ဆောင်ချက်ကို BPF stack ၏ မလုပ်ဆောင်ရသေးသည့်နေရာများတွင် ထည့်သွင်းစဉ်းစားခြင်းမရှိခြင်းကြောင့်ဖြစ်သည်။ ဤအင်္ဂါရပ်သည် စတိုးဆိုင်ညွှန်ကြားချက်ကို မလုပ်ဆောင်မီ မစတင်မီ မမ်မိုရီဧရိယာအပေါ် မူတည်၍ မှန်းဆဖတ်ရှုသည့် လုပ်ဆောင်ချက်ကို လုပ်ဆောင်နိုင်ခြေကို ဖြစ်ပေါ်စေသည်။ BPF စတက်အတွက် မှတ်ဉာဏ်အသစ်ကို ခွဲဝေချထားပေးသည့်မှတ်ဉာဏ်တွင် ရှိပြီးသားအကြောင်းအရာများကို စစ်ဆေးခြင်းမပြုဘဲ ခွဲဝေချထားပေးသည်၊ ထို့နောက် BPF စတက်အတွက် ခွဲဝေချထားပေးမည့် မန်မိုရီဒေသ၏ အကြောင်းအရာများကို ကိုင်တွယ်ရန် BPF ပရိုဂရမ်မလည်ပတ်မီ နည်းလမ်းတစ်ခုရှိသည်။

source: opennet.ru

မှတ်ချက် Add