Meltdown တိုက်ခိုက်မှုများကို ခွင့်ပြုသည့် AMD ပရိုဆက်ဆာများတွင် အခြားသော အားနည်းချက်ကို ဖော်ထုတ်ထားသည်။

Technical University of Graz (Austria) နှင့် Helmholtz Center for Information Security (CISPA) မှ သုတေသီအဖွဲ့တစ်ဖွဲ့သည် Meltdown-class ကိုလုပ်ဆောင်နိုင်စေသည့် AMD ပရိုဆက်ဆာများအားလုံးတွင် အားနည်းချက်တစ်ခု (CVE-2021-26318) အကြောင်း အချက်အလက်ကို ထုတ်ဖော်ခဲ့သည်။ side-channel တိုက်ခိုက်မှုများ (အစပိုင်းတွင် AMD ပရိုဆက်ဆာများသည် Meltdown အားနည်းချက်ကြောင့် ထိခိုက်မှုမရှိဟု ယူဆခဲ့သည်)။ လက်တွေ့အသုံးအနှုန်းအရ၊ တိုက်ခိုက်မှုကို ကာနယ်အတွင်းရှိ အားနည်းချက်များကို အသုံးချနေချိန်တွင် KASLR အကာအကွယ်ကို ကျော်ဖြတ်ရန်၊ kernel အတွင်းရှိ လုပ်ဆောင်ချက်ကို စောင့်ကြည့်ရန်၊ သို့မဟုတ် kernel memory အတွင်းရှိ လိပ်စာများအကြောင်း အချက်အလက်များကို ရယူရန် တိုက်ခိုက်မှုကို အသုံးပြုနိုင်သည်။

ဩဂုတ်လတွင်တွေ့ရှိခဲ့သော အလားတူတိုက်ခိုက်မှုကဲ့သို့ အားနည်းချက်သည် လက်တွေ့အခြေအနေတွင် အသုံးနည်းသောကြောင့်၊ လုပ်ငန်းစဉ်၏လက်ရှိနယ်နိမိတ်များဖြင့် ကန့်သတ်ထားပြီး အချို့သောပါဝင်မှုများလိုအပ်သောကြောင့် AMD သည် ပြဿနာကိုပိတ်ဆို့ရန် အထူးအစီအမံများပြုလုပ်ရန် မသင့်လျော်ဟုယူဆပါသည်။ kernel ရှိ ညွှန်ကြားချက်များ (ဂက်ဂျက်များ) ၏ အဆင်သင့်လုပ်ထားသော အတွဲများ။ တိုက်ခိုက်မှုကို သရုပ်ပြရန်၊ သုတေသီများသည် ၎င်းတို့၏ကိုယ်ပိုင် kernel module ကို အတုထည့်ထားသော ဂက်ဂျက်တစ်ခုဖြင့် တင်ခဲ့သည်။ လက်တွေ့အခြေအနေတွင်၊ တိုက်ခိုက်သူများသည် လိုအပ်သော sequence များကို အစားထိုးရန်အတွက် eBPF စနစ်ခွဲရှိ အားနည်းချက်များကို ပုံမှန်ပြသလေ့ရှိသည်။

ဤတိုက်ခိုက်မှုအမျိုးအစားသစ်ကို ကာကွယ်ရန်၊ AMD သည် LFENCE ညွှန်ကြားချက်များကို အသုံးပြုခြင်းကဲ့သို့သော Meltdown တိုက်ခိုက်မှုများကို တားဆီးရန် လုံခြုံသော ကုဒ်ရေးနည်းများကို အသုံးပြုရန် အကြံပြုထားသည်။ ပြဿနာကိုဖော်ထုတ်ခဲ့သောသုတေသီများသည် ယခင်က Intel ပရိုဆက်ဆာများအတွက်သာအသုံးပြုခဲ့သည့် တင်းကျပ်သောမှတ်ဉာဏ်စာမျက်နှာဇယားအထီးကျန် (KPTI) ကိုဖွင့်ရန် အကြံပြုထားသည်။

စမ်းသပ်မှုအတွင်း၊ သုတေသီများသည် kernel မှအချက်အလက်များကို တစ်စက္ကန့်လျှင် 52 bytes အမြန်နှုန်းဖြင့် အသုံးပြုသူနေရာရှိ လုပ်ငန်းစဉ်တစ်ခုသို့ ပေါက်ကြားနိုင်ခဲ့ပြီး လုပ်ဆောင်ချက်ကိုလုပ်ဆောင်သည့် kernel တွင် gadget တစ်ခုရှိနေခြင်းကြောင့် “if (offset < data_len) tmp = LUT[data[offset] *4096];" မှန်းဆလုပ်ဆောင်နေစဉ်အတွင်း ကက်ရှ်တွင်အဆုံးသတ်သည့် ဘေးထွက်ချန်နယ်များမှတစ်ဆင့် အချက်အလက်ရယူရန်အတွက် နည်းလမ်းများစွာကို အဆိုပြုထားသည်။ ပထမနည်းလမ်းမှာ ပရိုဆက်ဆာ ညွှန်ကြားချက် "PREFETCH" (Prefetch+Time) ၏ လုပ်ဆောင်ချိန်အတွင်း သွေဖည်မှုများကို ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် ဒုတိယနည်းလမ်းမှာ "PREFETCH" (Prefetch+Power) ကို လုပ်ဆောင်သည့်အခါ စွမ်းအင်သုံးစွဲမှု ပြောင်းလဲခြင်းအပေါ် အခြေခံသည်။

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

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

source: opennet.ru

မှတ်ချက် Add