Chrome ရှိ Spectre အားနည်းချက်များကို အသုံးချရန် နည်းလမ်းအသစ်

အမေရိကန်၊ သြစတြေးလျနှင့် အစ္စရေး တက္ကသိုလ်များမှ သုတေသီအဖွဲ့တစ်ဖွဲ့သည် Chromium အင်ဂျင်ကို အခြေခံသည့် ဘရောက်ဆာများတွင် Spectre-class အားနည်းချက်များကို အသုံးချရန် ဘေးထွက်ချန်နယ် တိုက်ခိုက်မှု နည်းပညာအသစ်ကို အဆိုပြုခဲ့သည်။ Spook.js ဟုအမည်ပေးထားသည့် တိုက်ခိုက်မှုသည် JavaScript ကုဒ်ကိုဖွင့်ပြီး လက်ရှိလုပ်ငန်းစဉ်၏ လိပ်စာနေရာတစ်ခုလုံး၏ အကြောင်းအရာများကို ဖတ်ခြင်းဖြင့် ဆိုက်အထီးကျန်ယန္တရားကို ကျော်လွှားနိုင်စေမည်ဖြစ်သည်။ အခြားတဘ်များတွင် လည်ပတ်နေသည့် စာမျက်နှာများမှ ဒေတာကို ဝင်ရောက်ကြည့်ရှုသော်လည်း တူညီသောလုပ်ငန်းစဉ်တွင် လုပ်ဆောင်သည်။

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

နည်းလမ်းကိုအသုံးပြုရန် အခြားရွေးချယ်စရာမှာ တိုက်ခိုက်သူမှ ထိန်းချုပ်ထားသော အပိုပရိုဂရမ်ကို ထည့်သွင်းသည့်အခါတွင် အခြားသော အပိုပရိုဂရမ်များမှ ဒေတာများကို ထုတ်ယူရန် ခွင့်ပြုသည့် ဘရောက်ဆာ add-ons များကို တိုက်ခိုက်ခြင်း ဖြစ်သည်။ ဥပမာအနေဖြင့်၊ အန္တရာယ်ရှိသော အပိုပရိုဂရမ်တစ်ခုကို ထည့်သွင်းခြင်းဖြင့် သင်သည် LastPass စကားဝှက်မန်နေဂျာမှ လျှို့ဝှက်အချက်အလက်များကို ထုတ်ယူနိုင်ပုံကို ပြသထားသည်။

သုတေသီများသည် CPUIntel i89-7K နှင့် i6700-7U ပါသည့်စနစ်များတွင် Chrome 7600 တွင်အလုပ်လုပ်သော exploit ၏ရှေ့ပြေးပုံစံကို ထုတ်ဝေခဲ့သည်။ exploit ဖန်တီးသောအခါတွင်၊ Google မှထုတ်ဝေသော JavaScript ကုဒ်၏ရှေ့ပြေးပုံစံများကို Spectre-class တိုက်ခိုက်မှုများကိုလုပ်ဆောင်ရန်အသုံးပြုခဲ့သည်။ သုတေသီများသည် Intel နှင့် Apple M1 ပရိုဆက်ဆာများကို အခြေခံသည့် စနစ်များအတွက် အလုပ်လုပ်သော exploits များကို ပြင်ဆင်နိုင်ခဲ့ပြီး memory reading ကို တစ်စက္ကန့်လျှင် 500 bytes နှုန်းဖြင့် တိကျမှု 96% ဖြင့် စုစည်းနိုင်စေကြောင်း မှတ်သားရပါသည်။ နည်းလမ်းသည် AMD ပရိုဆက်ဆာများနှင့်လည်း သက်ဆိုင်သည်ဟု ယူဆရသော်လည်း အပြည့်အဝ functional exploit ကို ပြင်ဆင်ရန် မဖြစ်နိုင်ပါ။

တိုက်ခိုက်မှုသည် Google Chrome၊ Microsoft Edge နှင့် Brave အပါအဝင် Chromium အင်ဂျင်ကို အခြေခံသည့် မည်သည့်ဘရောက်ဆာများနှင့်မဆို သက်ဆိုင်ပါသည်။ အဆိုပါနည်းလမ်းကို Firefox နှင့် လိုက်လျောညီထွေဖြစ်အောင် လုပ်ဆောင်နိုင်သည်ဟု သုတေသီများက ယုံကြည်သော်လည်း Firefox အင်ဂျင်သည် Chrome နှင့် အလွန်ကွာခြားသောကြောင့် ယင်းကဲ့သို့ exploit ဖန်တီးခြင်းဆိုင်ရာ အလုပ်သည် အနာဂတ်အတွက် ကျန်ရစ်ခဲ့သည်။

မှန်းဆထားသော ညွှန်ကြားချက်များကို လုပ်ဆောင်ခြင်းနှင့်ဆက်စပ်သည့် ဘရောက်ဆာအခြေခံတိုက်ခိုက်မှုများကို ကာကွယ်ရန် Chrome သည် လိပ်စာနေရာ ခွဲခွဲခြားခြားကို လုပ်ဆောင်သည် - sandbox သီးခြားခွဲထားခြင်းဖြင့် JavaScript ကို 32-bit pointers များဖြင့်သာ လုပ်ဆောင်နိုင်စေပြီး 4GB အစုအဝေးတွင် ကိုင်တွယ်သူ၏မှတ်ဉာဏ်ကို မျှဝေပေးပါသည်။ လုပ်ငန်းစဉ်လိပ်စာနေရာတစ်ခုလုံးကို ဝင်ရောက်ခွင့်ပေးပြီး 32-bit ကန့်သတ်ချက်ကို ကျော်ဖြတ်ရန်၊ သုတေသီများသည် Type Confusion ဟုခေါ်သော နည်းပညာကို အသုံးပြုကာ JavaScript အင်ဂျင်အား မှားယွင်းသောအမျိုးအစားဖြင့် အရာဝတ္ထုတစ်ခုကို လုပ်ဆောင်ရန် တွန်းအားပေးကာ 64-bit ဖွဲ့စည်းရန် ဖြစ်နိုင်သည်။ 32-bit တန်ဖိုးနှစ်ခု ပေါင်းစပ်မှုအပေါ် အခြေခံသည့် ညွှန်ပြချက်။

တိုက်ခိုက်မှု၏ အနှစ်သာရမှာ JavaScript အင်ဂျင်တွင် အထူးဒီဇိုင်းထုတ်ထားသော အန္တရာယ်ရှိသော အရာဝတ္ထုတစ်ခုကို လုပ်ဆောင်သည့်အခါ၊ array ကိုဝင်ရောက်သည့် ညွှန်ကြားချက်များကို မှန်းဆပြီး လုပ်ဆောင်နိုင်စေမည့် အခြေအနေများကို ဖန်တီးထားခြင်းဖြစ်သည်။ 64-bit pointer ကိုအသုံးပြုသည့် ဧရိယာတွင် တိုက်ခိုက်သူထိန်းချုပ်ထားသော အကွက်များကို ချထားသည့်နည်းလမ်းဖြင့် အရာဝတ္ထုကို ရွေးချယ်သည်။ အန္တရာယ်ရှိသော အရာဝတ္ထုအမျိုးအစားသည် လုပ်ဆောင်နေသည့် ခင်းကျင်းမှုအမျိုးအစားနှင့် မကိုက်ညီသောကြောင့်၊ ပုံမှန်အခြေအနေများတွင် arrays များကို ဝင်ရောက်ကြည့်ရှုရန် အသုံးပြုသည့် ကုဒ်ကို အကောင်းမွန်ဆုံးဖြစ်အောင်ပြုလုပ်သည့် ယန္တရားတစ်ခုအားဖြင့် Chrome တွင် ထိုသို့သောလုပ်ဆောင်ချက်များကို ပိတ်ဆို့ထားပါသည်။ ဤပြဿနာကိုဖြေရှင်းရန်၊ ပရိုဆက်ဆာသည် နောက်ထပ်အကိုင်းအခက်များကို လွဲမှားစွာခန့်မှန်းပါက၊ ဤပြဿနာကိုဖြေရှင်းရန်၊ Type Confusion တိုက်ခိုက်မှုအတွက် ကုဒ်ကို ပုံမှန်အခြေအနေအောက်တွင် activated မဟုတ်သော်လည်း ပရိုဆက်ဆာသည် နောက်ထပ်အကိုင်းအခက်များကို လွဲမှားစွာခန့်မှန်းပါက အခြေအနေအလိုက် “if” ဘလောက်တစ်ခုတွင် ထားရှိထားသည်။

ရလဒ်အနေဖြင့် ပရိုဆက်ဆာသည် ထုတ်လုပ်ထားသော 64-bit ညွှန်ပြချက်ကို မှန်းဆကြည့်ရှုပြီး မအောင်မြင်သော ခန့်မှန်းချက်တစ်ခုကို ဆုံးဖြတ်ပြီးနောက် အခြေအနေကို ပြန်ပြောင်းပေးသည်၊ သို့သော် လုပ်ဆောင်မှု၏ခြေရာများကို မျှဝေထားသော cache တွင် ကျန်ရှိနေပြီး အပြောင်းအလဲများကိုခွဲခြမ်းစိတ်ဖြာသည့် side-channel cache ရှာဖွေရေးနည်းလမ်းများကို အသုံးပြု၍ ပြန်လည်ရယူနိုင်သည်။ ကက်ရှ်နှင့် မသိမ်းဆည်းထားသော ဒေတာများသို့ အချိန်များကို ဝင်ရောက်ကြည့်ရှုပါ။ JavaScript တွင်ရရှိနိုင်သည့် timer ၏မလုံလောက်သောတိကျမှုအခြေအနေများတွင် cache ၏အကြောင်းအရာများကိုခွဲခြမ်းစိတ်ဖြာရန် Google မှအဆိုပြုထားသောနည်းလမ်းကိုအသုံးပြုသည်၊၊ ပရိုဆက်ဆာများတွင်အသုံးပြုသော Tree-PLRU ကက်ရှ်ဖယ်ထုတ်ခြင်းဗျူဟာကိုလှည့်ဖြားပြီးသံသရာအရေအတွက်ကိုတိုးမြှင့်ခြင်းဖြင့်ခွင့်ပြုသည် ကက်ရှ်တွင် တန်ဖိုးရှိနေချိန်နှင့် ပျက်ကွက်သည့်အချိန်နှင့် ကွာခြားချက် သိသိသာသာတိုးလာသည်။

source: opennet.ru

မှတ်ချက် Add