Zen+ နှင့် Zen 2 microarchitectures များကို အခြေခံ၍ AMD ပရိုဆက်ဆာများတွင် Meltdown အတန်းအစား အားနည်းချက်ကို ရှာဖွေတွေ့ရှိခဲ့သည်

Technical University of Dresden မှ သုတေသီအဖွဲ့တစ်ဖွဲ့သည် Meltdown class attack ကိုခွင့်ပြုသည့် Zen+ နှင့် Zen 2020 microarchitectures တို့ကိုအခြေခံ၍ AMD ပရိုဆက်ဆာများတွင် အားနည်းချက်တစ်ခု (CVE-12965-2) ကို ရှာဖွေတွေ့ရှိခဲ့သည်။ AMD Zen+ နှင့် Zen 2 ပရိုဆက်ဆာများသည် Meltdown အားနည်းချက်ကို ခံနိုင်ရည်မရှိဟု ကနဦးယူဆခဲ့သော်လည်း သုတေသီများသည် non-canonical virtual addressesများကို အသုံးပြုသည့်အခါ ကာကွယ်ထားသော memory ဧရိယာများသို့ မှန်းဆနိုင်စေမည့် အင်္ဂါရပ်တစ်ခုကို ရှာဖွေတွေ့ရှိခဲ့သည်။

AMD64 ဗိသုကာသည် virtual address ၏ပထမ 48 bits ကိုသာအသုံးပြုပြီး ကျန် 16 bits ကိုလျစ်လျူရှုသည်။ bit 48 မှ 63 သည် bit 47 ၏တန်ဖိုးကို အမြဲကူးယူရမည်ဟု သတ်မှတ်ထားသည် (ဆိုင်းဘုတ်ဘစ်တိုးချဲ့မှု)။ ဤအခြေအနေအား ချိုးဖောက်ပြီး အထက်ဘစ်များ၏ မတရားတန်ဖိုးများရှိသော လိပ်စာတစ်ခုကို ဝင်ရောက်ရန် ကြိုးပမ်းပါက ပရိုဆက်ဆာသည် ခြွင်းချက်တစ်ခုထုတ်ပေးသည်။ အပေါ်ဘစ်များကို ထပ်ခါတလဲလဲ ဖြည့်သွင်းခြင်းဖြင့် ရရှိနိုင်သောလိပ်စာနေရာကို အကွက်နှစ်ကွက်အဖြစ် ပိုင်းခြားစေသည် - အောက်တစ်ခု (0 မှ 00007FFFFFFFFFFFF)၊ အထက်ဘစ်များကို 800000000000 ဟုသတ်မှတ်ထားကာ အထက်တစ်ခု (FFFF1 မှ FFFFFFFFFFFFFFFF)၊ အထက်ဘစ်များအားလုံးကို XNUMX ဟုသတ်မှတ်ထားသည်။

သတ်မှတ်ထားသော ဘလောက်များအတွင်း ကျရောက်နေသော လိပ်စာများကို Canonical ဟုခေါ်ပြီး အထက်ဘစ်များ၏ မတရားသော အကြောင်းအရာများဖြင့် မှားယွင်းနေသော လိပ်စာများကို non-canonical ဟုခေါ်သည်။ Canonical လိပ်စာများ၏ အောက်ပိုင်းအကွာအဝေးကို လုပ်ငန်းစဉ်ဒေတာအတွက် ပုံမှန်အားဖြင့် ခွဲဝေပေးထားပြီး အထက်အကွာအဝေးကို kernel ဒေတာအတွက် အသုံးပြုသည် (အသုံးပြုသူနေရာလွတ်မှ ဤလိပ်စာများသို့ဝင်ရောက်ခွင့်ကို အခွင့်ထူးခြားနားမှုအဆင့်တွင် ပိတ်ဆို့ထားသည်)။

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

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

AMD Zen+ နှင့် Zen 2 ပရိုဆက်ဆာများအပေါ်သက်ရောက်မှုရှိသောအားနည်းချက်အသစ်၏အင်္ဂါရပ်တစ်ခုမှာ CPU များသည်တရားမဝင်မဟုတ်သော Canonical လိပ်စာများကိုအသုံးပြု၍ မမ်မိုရီကိုဝင်ရောက်အသုံးပြုသည့်ခန့်မှန်းချက်ဖတ်ခြင်းနှင့်ရေးခြင်းလုပ်ဆောင်မှုများကိုခွင့်ပြုသည်၊ အထက် 16 ဘစ်များကိုလျစ်လျူရှုခြင်းဖြစ်သည်။ ထို့ကြောင့်၊ မှန်းဆကုဒ်ကို အကောင်အထည်ဖော်နေစဉ်တွင်၊ ပရိုဆက်ဆာသည် အောက်ခြေ 48 bits ကိုသာ အမြဲအသုံးပြုနေပြီး လိပ်စာ၏တရားဝင်မှုကို သီးခြားစီစစ်ဆေးသည်။ Associative ဘာသာပြန်ကြားခံကြားခံ (TLB) တွင် ကျမ်းဂန်မဟုတ်သော virtual လိပ်စာကို ရုပ်ပိုင်းဆိုင်ရာလိပ်စာသို့ ဘာသာပြန်ဆိုသောအခါ၊ လိပ်စာ၏ canonical အစိတ်အပိုင်းတွင် ကိုက်ညီမှုတစ်ခုကို တွေ့ရှိပါက၊ မှန်းဆသည့်ဝန်လုပ်ဆောင်မှုသည် အကြောင်းအရာများကို ထည့်သွင်းခြင်းမရှိဘဲ တန်ဖိုးကို ပြန်ပေးမည်ဖြစ်သည်။ threads များကြား memory sharing ကို ကျော်လွှားနိုင်စေသည့် 16 bits ၏ အထက်ပိုင်း။ နောက်ပိုင်းတွင်၊ လုပ်ဆောင်ချက်အား အကျုံးမဝင်ဟု ယူဆကာ စွန့်ပစ်လိုက်မည်ဖြစ်သော်လည်း မန်မိုရီဝင်ရောက်မှုကို ပြီးမြောက်မည်ဖြစ်ပြီး ဒေတာသည် ကက်ရှ်တွင် ကုန်ဆုံးမည်ဖြစ်သည်။

စမ်းသပ်မှုအတွင်း FLUSH+RELOAD ကက်ရှ်၏ အကြောင်းအရာများကို ဆုံးဖြတ်သည့်နည်းပညာကို အသုံးပြု၍ သုတေသီများသည် လျှို့ဝှက်ဒေတာလွှဲပြောင်းမှုအတွက် ချန်နယ်တစ်ခုကို တစ်စက္ကန့်လျှင် 125 bytes နှုန်းဖြင့် စုစည်းနိုင်ခဲ့သည်။ AMD ချစ်ပ်များအပြင်၊ ပြဿနာသည် ဂန္ထဝင် Meltdown အားနည်းချက်ကို ခံရနိုင်သည့် Intel ပရိုဆက်ဆာအားလုံးကိုလည်း သက်ရောက်မှုရှိသည်။ LFENCE ညွှန်ကြားချက်များကို အသုံးပြုခြင်းကဲ့သို့သော Meltdown တိုက်ခိုက်မှုများကို ပိတ်ဆို့ရန် ကူညီသည့် တူညီသောနည်းစနစ်များကို ဤတိုက်ခိုက်မှုအမျိုးအစားသစ်မှ ကာကွယ်ရန် အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်၊ Intel ပရိုဆက်ဆာတွင် Meltdown မှ ဟာ့ဒ်ဝဲကာကွယ်မှု ပါ၀င်သည် သို့မဟုတ် စနစ်တွင် ဆော့ဖ်ဝဲကာကွယ်ရေးကို ဖွင့်ထားပါက၊ ထိုသို့သောဖွဲ့စည်းပုံများသည် တိုက်ခိုက်မှုမျိုးကွဲအသစ်အတွက် ထိခိုက်နိုင်မည်မဟုတ်ပေ။

တစ်ချိန်တည်းမှာပင်၊ Intel ပရိုဆက်ဆာများနှင့် နှိုင်းယှဉ်ပါက AMD ပရိုဆက်ဆာများ၏ ဗိသုကာလက်ရာများသည် စစ်မှန်သောတိုက်ခိုက်မှုများကို လုပ်ဆောင်နိုင်ခြေကို ကန့်သတ်ထားသော်လည်း ၎င်းတို့၏ ထိရောက်မှုတိုးမြင့်လာစေရန် အခြားသော microarchitectural attacks များနှင့် ပေါင်းစပ်ကာ နည်းလမ်းအသစ်အသုံးပြုခြင်းကို မပါဝင်ကြောင်း သုတေသီများက သတိပြုမိပါသည်။ အထူးသဖြင့်၊ အဆိုပြုထားသော တိုက်ခိုက်မှုသည် kernel နှင့် အခြားသော လုပ်ငန်းစဉ်များ၏ မှတ်ဉာဏ်ဧရိယာများ၏ အကြောင်းအရာများကို ဆုံးဖြတ်ရန် ခွင့်မပြုသော်လည်း တူညီသော virtual memory space တွင် လုပ်ဆောင်နေသည့် ပရိုဂရမ်၏ အခြားသော threads များသို့ ဝင်ရောက်ခွင့်ကို ကန့်သတ်ထားသည်။

အားနည်းချက်မရှိသောပရိုဂရမ်တစ်ခုသည် ၎င်း၏ threads များသို့ဝင်ရောက်ခွင့်ရရှိနိုင်သောကြောင့်၊ လက်တွေ့ကျသောရှုထောင့်မှကြည့်ခြင်းအားဖြင့် အဆိုပါနည်းလမ်းသည် သဲပုံးအထီးကျန်မှုကိုကျော်ဖြတ်ကာ ပြင်ပအဖွဲ့အစည်း၏လုပ်ဆောင်မှုကိုခွင့်ပြုသည့်ပရိုဂရမ်များရှိ အခြားသော thread များ၏လုပ်ဆောင်မှုကို အနှောင့်အယှက်ဖြစ်စေရန်အတွက် စိတ်ဝင်စားဖွယ်ဖြစ်သည် ဝဘ်ဘရောက်ဆာများနှင့် JIT အင်ဂျင်များကဲ့သို့သော ကုဒ်။ သုတေသီများသည် SpiderMonkey JavaScript အင်ဂျင်နှင့် Linux kernel ကို တိုက်ခိုက်ရန် အားနည်းချက်ကို စစ်ဆေးခဲ့သော်လည်း တိုက်ခိုက်မှုကို လုပ်ဆောင်ရန် အသုံးပြုနိုင်သည့် အားနည်းချက်ရှိသော ကုဒ်နံပါတ်များကို ရှာမတွေ့ခဲ့ပါ။ အပလီကေးရှင်းများကို တိုက်ခိုက်ခြင်းအပြင် အခြားသော microarchitectural အားနည်းချက်များကို အသုံးချနေစဉ် ပရိုဆက်ဆာ၏ microarchitectural အစိတ်အပိုင်းများကြား လက်မခံနိုင်သော ဒေတာစီးဆင်းမှုကို တွန်းအားပေးရန်အတွက် နည်းလမ်းကိုလည်း အသုံးပြုနိုင်သည်။

source: opennet.ru

မှတ်ချက် Add