Chromium ရှိ လုံခြုံရေးပြဿနာများ၏ 70% သည် မှတ်ဉာဏ်ချို့ယွင်းမှုများကြောင့်ဖြစ်သည်။

Chromium ပရောဂျက်၏ တီထွင်သူများ ခွဲခြမ်းစိတ်ဖြာ 912 ခုနှစ်ကတည်းက Chrome ၏ တည်ငြိမ်သောထွက်ရှိမှုများတွင် တွေ့ရှိရသော အန္တရာယ်များပြီး အရေးပါသော အားနည်းချက် 2015 ခုရှိပြီး ၎င်းတို့ထဲမှ 70% သည် memory insecurity (C/C++ ကုဒ်တွင် pointers များနှင့် အလုပ်လုပ်သောအခါ အမှားအယွင်းများ) ကြောင့်ဟု ကောက်ချက်ချခဲ့သည်။ ဤပြဿနာများထဲမှ တစ်ဝက် (36.1%) သည် ၎င်းနှင့်ဆက်စပ်နေသော မမ်မိုရီကို လွှတ်ပေးပြီးနောက် ကြားခံသို့ဝင်ရောက်မှုများကြောင့် ဖြစ်ရသည် (အသုံးပြုပြီးနောက် အခမဲ့)။

Chromium ရှိ လုံခြုံရေးပြဿနာများ၏ 70% သည် မှတ်ဉာဏ်ချို့ယွင်းမှုများကြောင့်ဖြစ်သည်။

Chromium ကို ဒီဇိုင်းဆွဲသောအခါတွင် ၎င်းသည် အစတွင်ဖြစ်သည်။ ချထားသည်။ကုဒ်တွင် အမှားအယွင်းများ ပေါ်လာနိုင်သောကြောင့် အားနည်းချက်များ၏ အကျိုးဆက်များကို ကန့်သတ်ရန် sandbox isolation ကို အသုံးပြုခြင်းအပေါ် ကြီးကြီးမားမား အလေးပေးဆောင်ရွက်ခဲ့ပါသည်။ လောလောဆယ်တွင်၊ ဤနည်းပညာကို အသုံးပြုရန် အလားအလာများသည် ၎င်းတို့၏ စွမ်းဆောင်ရည် ကန့်သတ်ချက်သို့ ရောက်ရှိသွားပြီဖြစ်ပြီး အရင်းအမြစ် သုံးစွဲမှု၏ ရှုထောင့်မှ လုပ်ငန်းစဉ်များ ထပ်မံခွဲထွက်ခြင်းသည် လက်တွေ့မကျပါ။

Codebase ၏ လုံခြုံရေးကို ထိန်းသိမ်းရန် Google ကလည်း "နှစ်ခုစည်းမျဉ်း“ထည့်သွင်းထားသည့်ကုဒ်သည် အခြေအနေ သုံးခုအနက် နှစ်ခုထက် မပိုစေရပါ။ တရားဝင်မထားသော ထည့်သွင်းမှုဒေတာဖြင့် လုပ်ဆောင်ခြင်း၊ မလုံခြုံသော ပရိုဂရမ်းမင်းဘာသာစကား (C/C++) ကို အသုံးပြု၍ မြင့်မားသောအခွင့်အရေးများဖြင့် လုပ်ဆောင်ခြင်း။ ဤစည်းမျဉ်းသည် ပြင်ပဒေတာကို လုပ်ဆောင်ခြင်းအတွက် ကုဒ်အား အနည်းဆုံးအခွင့်အရေးများ (အထီးကျန်) သို့ လျှော့ချရမည် သို့မဟုတ် လုံခြုံသော ပရိုဂရမ်းမင်းဘာသာစကားဖြင့် ရေးသားရမည်ဟု ဆိုလိုသည်။

ကုဒ်အခြေခံ၏ လုံခြုံရေးကို ပိုမိုမြှင့်တင်ရန်၊ ကုဒ်အခြေခံတွင် မှတ်ဉာဏ်အမှားအယွင်းများ မပေါ်စေရန်အတွက် ပရောဂျက်တစ်ခုကို စတင်လိုက်ပါသည်။ Memory ၏ လုံခြုံစွာလည်ပတ်မှုအတွက် လုပ်ဆောင်ချက်များ နှင့် C++ စာကြည့်တိုက်များကို ဖန်တီးခြင်းနှင့် ဟာ့ဒ်ဝဲ ကာကွယ်ရေး ယန္တရားများကို အသုံးပြု၍ အမှိုက်စုဆောင်းသူ၏ နယ်ပယ်ကို ချဲ့ထွင်ခြင်းနှင့် အမှိုက်စုဆောင်းသူ၏ နယ်ပယ်ကို ချဲ့ထွင်ခြင်း MTE (Memory Tagging Extension) နှင့် မမ်မိုရီဖြင့် လုံခြုံစွာ အလုပ်လုပ်ကြောင်း သေချာစေသော ဘာသာစကားများဖြင့် ရေးသားထားသော အစိတ်အပိုင်းများ (Java၊ Kotlin၊ JavaScript၊ Rust၊ Swift)။

နယ်ပယ်နှစ်ခုတွင် အာရုံစိုက်လုပ်ဆောင်နိုင်မည်ဟု မျှော်လင့်ပါသည်။

  • စွမ်းဆောင်ရည်အပေါ် အပျက်သဘောဆောင်သော သက်ရောက်မှုများ မပါဝင်သည့် C++ ဖွံ့ဖြိုးတိုးတက်ရေး လုပ်ငန်းစဉ်တွင် သိသာထင်ရှားသော ပြောင်းလဲမှု (နောက်ထပ် ကန့်သတ်စစ်ဆေးမှုများနှင့် အမှိုက်များ စုဆောင်းခြင်း)။ အကြမ်းညွှန်းများအစား အမျိုးအစားကို အသုံးပြုရန် အဆိုပြုထားသည်။ MiraclePtrစွမ်းဆောင်ရည်၊ မှတ်ဉာဏ်သုံးစွဲမှုနှင့် တည်ငြိမ်မှုအပေါ် သိသာထင်ရှားသော အပျက်သဘောဆောင်သော အကျိုးသက်ရောက်မှုမရှိဘဲ လုံခြုံရေးခြိမ်းခြောက်မှုမဖြစ်စေသော ပျက်ကျမှုများအတွက် အသုံးချနိုင်သော အသုံးချမှု-ပြီးနောက်-အခမဲ့ အမှားများကို လျှော့ချနိုင်စေပါသည်။
  • compile time တွင် memory safety checks များလုပ်ဆောင်ရန် ဒီဇိုင်းထုတ်ထားသော ဘာသာစကားများကို အသုံးပြုခြင်းသည် (ကုဒ်လုပ်ဆောင်နေစဉ်အတွင်း ယင်းစစ်ဆေးမှုများတွင် ပါ၀င်သော စွမ်းဆောင်ရည်အပေါ် အပျက်သဘောဆောင်သော သက်ရောက်မှုများကို ဖယ်ရှားပေးမည်ဖြစ်ပြီး၊ သို့သော် ဘာသာစကားအသစ်တစ်ခုတွင် ကုဒ်၏အပြန်အလှန်လုပ်ဆောင်မှုအတွက် အပိုကုန်ကျစရိတ်များကို ဖြစ်ပေါ်စေမည်ဖြစ်သည်။ C++)။

မန်မိုရီ-ဘေးကင်းသောစာကြည့်တိုက်များကို အသုံးပြုခြင်းသည် အရိုးရှင်းဆုံးဖြစ်သော်လည်း ထိရောက်မှုနည်းသောနည်းလမ်းဖြစ်သည်။ Rust ရှိ ကုဒ်ကို ပြန်လည်ရေးသားခြင်းသည် အထိရောက်ဆုံးဖြစ်သော်လည်း အလွန်စျေးကြီးသောနည်းလမ်းအဖြစ် အဆင့်သတ်မှတ်ထားသည်။

Chromium ရှိ လုံခြုံရေးပြဿနာများ၏ 70% သည် မှတ်ဉာဏ်ချို့ယွင်းမှုများကြောင့်ဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add