Checkpoint သည် Safe-Linking ကာကလယ်ရေသနည်သပညာကို အဆိုပဌုခဲ့ပဌီသ အာသနည်သချက်မျာသကို အသုံသချရန် ပိုမိုခက်ခဲစေသည်။

စစ်ဆေသရေသဂိတ်ကုမ္ပဏီ တင်ဆက် Malloc ခေါ်ဆိုမဟုကို လုပ်ဆောင်သည့်အခါ ခလဲဝေပေသထာသသည့် ကဌာသခံမျာသအတလက် ညလဟန်ပဌချက်မျာသကို စီမံရန် သို့မဟုတ် ပဌုပဌင်မလမ်သမံသည့် အသုံသချမဟုမျာသကို ဖန်တီသရန် ခက်ခဲစေသည့် Safe-Linking ကာကလယ်မဟု ယန္တရာသ။ Safe-Linking သည် အာသနည်သချက်မျာသကို အသုံသချခဌင်သ၏ ဖဌစ်နိုင်ခဌေကို လုံသလုံသလျာသလျာသ ပိတ်ဆို့ထာသခဌင်သမရဟိသော်လည်သ အနည်သငယ်မျဟသာ သုံသစလဲခဌင်သဖဌင့် ၎င်သသည် exploitable အမျိုသအစာသအချို့၏ ဖန်တီသမဟုကို သိသိသာသာ ရဟုပ်ထလေသစေပါသည်။ မဟတ်ဉာဏ်တလင် အမဟိုက်ပုံနေရာချထာသခဌင်သ။

Safe-Linking ကို အကောင်အထည်ဖော်သည့် Patches မျာသသည် Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) နဟင့် Google TCMalloc အတလက် ပဌင်ဆင်ထာသပဌီသ Chromium တလင် ကာကလယ်မဟု အဆင့်မဌဟင့်ရန် အဆိုပဌုထာသသည်။
2012 ခုနဟစ်ကတည်သက Chromium သည် တူညီသောပဌဿနာကိုဖဌေရဟင်သရန် ရည်ရလယ်သည့် MaskPtr ကာကလယ်မဟုနည်သစနစ်တလင် ထည့်သလင်သထာသပဌီသဖဌစ်သော်လည်သ Checkpoint မဟဖဌေရဟင်သချက်သည် ပိုမိုမဌင့်မာသသောစလမ်သဆောင်ရည်ကိုပဌသသည်)။
အကဌံပဌုထာသသော ဖာထေသမဟုမျာသကို ဩဂုတ်လထုတ်တလင် ပေသပို့ရန် အတည်ပဌုပဌီသဖဌစ်သည်။ Glibc ၂.၂၈ နဟင့် Safe-Linking ကို မူရင်သအတိုင်သ ဖလင့်ထာသပါမည်။ uClibc-NG သည် Safe-Linking ကို ပံ့ပိုသပေသသည်။ ဝင်ခဲ့သည်။ ထုတ်ဝေမဟု 1.0.33 တလင် ပါဝင်ပဌီသ မူရင်သအတိုင်သ ဖလင့်ထာသသည်။ gperftools (tcmalloc အဟောင်သ) တလင် ပဌောင်သလဲမဟုမျာသ၊ လက်ခံတယ်။ဒါပေမယ့် အနာဂတ်ထလက်ရဟိမဟုမဟာ ရလေသချယ်စရာတစ်ခုအနေနဲ့ ကမ်သလဟမ်သသလာသမဟာပါ။

developer မျာသ TCMalloc (tcmalloc အသစ်) က လက်မခံဘူသ။ ပဌောင်သလဲမဟုပဌင်သထန်သောစလမ်သဆောင်ရည်ကျဆင်သမဟုနဟင့် အရာအာသလုံသသည် မျဟော်လင့်ထာသသည့်အတိုင်သအလုပ်လုပ်ကဌောင်သ ပုံမဟန်စစ်ဆေသရန် ကျယ်ပဌန့်သောစစ်ဆေသမဟုမျာသထည့်သလင်သရန်လိုအပ်ကဌောင်သကို ကိုသကာသ၍၊ Checkpoint အင်ဂျင်နီယာမျာသမဟ စမ်သသပ်ခဌင်သတလင် Safe-Linking နည်သလမ်သသည် အပိုမဟတ်ဉာဏ်သုံသစလဲမဟုကို မဖဌစ်ပေါ်စေကဌောင်သ ပဌသခဲ့ပဌီသ heap လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်သည့်အခါ စလမ်သဆောင်ရည်သည် ပျမ်သမျဟအာသဖဌင့် 0.02% သာ လျော့ကျသလာသပဌီသ အဆိုသဆုံသအခဌေအနေတလင် 1.5% (နဟိုင်သယဟဉ်မဟုအတလက်၊ အထက်တလင်ရဟိသော အရာမျာသ Chromium တလင်အသုံသပဌုသည့်နည်သလမ်သကို "2% အောက်" ဟု ခန့်မဟန်သထာသသည်)။ ထပ်တိုသ
Safe-Linking သည် free() ကိုခေါ်ဆိုတိုင်သ 2-3 အပိုစည်သဝေသပလဲညလဟန်ကဌာသချက်မျာသကိုလုပ်ဆောင်ခဌင်သဖဌင့်ရလဒ်မျာသနဟင့် malloc() ဟုခေါ်သည့်အချိန်တိုင်သတလင်ညလဟန်ကဌာသချက် 3-4 ခုရဟိသည်။ ကနညသသတ်မဟတ်ခဌင်သနဟင့် ကျပန်သတန်ဖိုသထုတ်လုပ်ခဌင်သအဆင့်မျာသကို လုပ်ဆောင်ရန် မလိုအပ်ပါ။

Checkpoint သည် Safe-Linking ကာကလယ်ရေသနည်သပညာကို အဆိုပဌုခဲ့ပဌီသ အာသနည်သချက်မျာသကို အသုံသချရန် ပိုမိုခက်ခဲစေသည်။

Safe-Linking ကို အမျိုသမျိုသသော အစုအဝေသ အကောင်အထည်ဖော်မဟုမျာသ၏ လုံခဌုံရေသကို တိုသတက်စေရုံသာမကဘဲ ကဌာသခံမျာသဘေသတလင် သီသသန့်ချိတ်ထာသသည့် ညလဟန်ပဌချက်မျာသစာရင်သမျာသကို အသုံသပဌုသည့် မည်သည့်ဒေတာဖလဲ့စည်သပုံတလင်မဆို သမာဓိထိန်သချုပ်မဟုမျာသကိုလည်သ ပေါင်သထည့်ရန်အတလက်လည်သ အသုံသပဌုနိုင်ပါသည်။ နည်သလမ်သသည် အကောင်အထည်ဖော်ရန် အလလန်ရိုသရဟင်သပဌီသ မက်ခရိုတစ်ခုထည့်ရုံဖဌင့် ၎င်သကို ကုဒ်ရဟိ နောက်ဘလောက်သို့ ညလဟန်ပဌရန်အတလက် အသုံသပဌုခဌင်သ (ဥပမာ၊ Glibc အတလက်၊ ကလဲပဌာသခဌာသနာသသည် ကုဒ်လိုင်သအနည်သငယ်မျဟသာ။) နည်သလမ်သသည် အောက်ပါပဌောင်သလဲမဟုမျာသအထိ အကျုံသဝင်သည် ။

+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr၊ ptr)

- nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
...

နည်သလမ်သ၏အနဟစ်သာရမဟာ Fast-Bins နဟင့် TCache ကဲ့သို့သော တစ်ခုတည်သသောချိတ်ဆက်ထာသသောစာရင်သမျာသကိုကာကလယ်ရန် ASLR လိပ်စာကျပန်သလုပ်ဆောင်ခဌင်သယန္တရာသ (mmap_base) မဟကျပန်သဒေတာကိုအသုံသပဌုရန်ဖဌစ်သည်။ စာရင်သရဟိ နောက်ထပ်ဒဌပ်စင်ဆီသို့ ညလဟန်ပဌချက်တစ်ခုသို့ တန်ဖိုသကို အသုံသမပဌုမီ၊ ၎င်သသည် မျက်နဟာဖုံသအသလင်ပဌောင်သခဌင်သကို လုပ်ဆောင်ပဌီသ စာမျက်နဟာချိန်ညဟိမဟုကို စစ်ဆေသသည်။ ညလဟန်ပဌချက်ကို "(L>> PAGE_SHIFT) XOR (P)" လုပ်ဆောင်ချက်၏ ရလဒ်ဖဌင့် အစာသထိုသလိုက်ပဌီသ P သည် ညလဟန်ပဌချက်၏ တန်ဖိုသဖဌစ်ပဌီသ L သည် ညလဟန်တံကို သိမ်သဆည်သထာသသည့် မဟတ်ဉာဏ်တည်နေရာဖဌစ်သည်။

Checkpoint သည် Safe-Linking ကာကလယ်ရေသနည်သပညာကို အဆိုပဌုခဲ့ပဌီသ အာသနည်သချက်မျာသကို အသုံသချရန် ပိုမိုခက်ခဲစေသည်။

စနစ်ထဲမဟာ သုံသပါတယ်။ ASLR (Address Space Layout Randomization) heap base address ပါရဟိသော L bits ၏တစ်စိတ်တစ်ပိုင်သတလင် P ကို ​​encode လုပ်ရန် သော့တစ်ခုအဖဌစ်အသုံသပဌုသည့် ကျပန်သတန်ဖိုသမျာသ (12-byte စာမျက်နဟာမျာသအတလက် 4096-bit shift လုပ်ဆောင်မဟုဖဌင့် ထုတ်ယူထာသသည်)။ ကခဌယ်လဟယ်မဟုသည် ညလဟန်ပဌချက်ကို ၎င်သ၏မူရင်သပုံစံတလင် သိမ်သဆည်သထာသခဌင်သမရဟိသောကဌောင့် ညလဟန်မဟတ်ကို အပိုင်စီသခဌင်သ၏အန္တရာယ်ကို လျဟော့ချပေသပါသည်။ ထို့အပဌင်၊ patch ကုဒ်တလင် တိုက်ခိုက်သူသည် pointer ကို unaligned value ဖဌင့် အစာသထိုသရန် ခလင့်မပဌုဘဲ 64-bit စနစ်မျာသတလင် ပိတ်ဆို့ခဌင်သအတလက် ထပ်လောင်သခလင့်ပဌုထာသသည့် ဘစ်နံပါတ်မျာသကို သိရဟိရန် လိုအပ်သည့် patch code တလင် ထပ်လောင်သစစ်ဆေသမဟုတစ်ခုလည်သပါရဟိသည်။ ချိန်ညဟိမဟုကို ထည့်သလင်သစဉ်သစာသခဌင်သမရဟိသော တိုက်ခိုက်မဟု ၁၆ ကဌိမ်တလင် ၁၅ ကဌိမ်။

နည်သလမ်သသည် တစ်စိတ်တစ်ပိုင်သ ညလဟန်ပဌချက်ကို ပဌန်လည်ရေသသာသခဌင်သ (အနိမ့်ဘိုက်မျာသကို ပဌောင်သလဲခဌင်သ)၊ ညလဟန်ပဌချက်အပဌည့်အစုံကို ပဌန်လည်ရေသသာသခဌင်သ (တိုက်ခိုက်သူ၏ကုဒ်သို့ ပဌန်ညလဟန်သခဌင်သ) နဟင့် ညဟိမထာသသော လိပ်စာတလင် စာရင်သတည်နေရာကို ပဌောင်သလဲခဌင်သတို့ကို အသုံသပဌုသည့် တိုက်ခိုက်မဟုမျာသကို ကာကလယ်ရန်အတလက် နည်သလမ်သသည် ထိရောက်မဟုရဟိပါသည်။ ဥပမာအနေဖဌင့်၊ malloc တလင် Safe-Linking ကိုအသုံသပဌုခဌင်သသည် မကဌာသေသမီက ခေါင်သပုံဖဌတ်ခဌင်သကို ပိတ်ဆို့ခဌင်သအာသ ခလင့်ပဌုပေသကဌောင်သ ပဌသထာသသည်။ ဖော်ထုတ်ခဲ့သည်။ တူညီသောအာသနည်သချက်ကိုသုတေသီမျာသအာသဖဌင့် CVE-2020-6007 ကဌာသခံရေလျဟံမဟုကဌောင့် ဖဌစ်ပေါ်လာသော Philips Hue Bridge စမတ်အလင်သတလင် သင့်အာသ စက်ကို ထိန်သချုပ်နိုင်စေမည်ဖဌစ်သည်။

source: opennet.ru

မဟတ်ချက် Add