Cloudflare ဆာဗာများတွင် ကုဒ်လုပ်ဆောင်မှုကို ခွင့်ပြုသည့် cdnjs တွင် အားနည်းချက်

CDN ဆာဗာများတွင် မတရားကုဒ်လုပ်ဆောင်မှုကို ခွင့်ပြုပေးသော JavaScript libraries များပေးပို့မှုကို အရှိန်မြှင့်ရန် ဒီဇိုင်းထုတ်ထားသည့် Cloudflare ၏ cdnjs အကြောင်းအရာပေးပို့ခြင်းကွန်ရက်တွင် အရေးကြီးသောအားနည်းချက်ကို ဖော်ထုတ်တွေ့ရှိခဲ့သည်။ အင်တာနက်ပေါ်ရှိဆိုက်အားလုံး၏ 12.7% ခန့်သည် JavaScript libraries များကိုဒေါင်းလုဒ်လုပ်ရန်ဝန်ဆောင်မှုကိုအသုံးပြုကြပြီးအခြေခံအဆောက်အအုံ၏အပေးအယူသည်ဤဆိုဒ်များမှပေးဆောင်သောစာကြည့်တိုက်များကိုအစားထိုးရန်ဖြစ်နိုင်သောကြောင့်ပြဿနာ၏အန္တရာယ်ကိုပိုမိုဆိုးရွားစေသည်။

cdnjs ဝန်ဆောင်မှုသည် Git သို့မဟုတ် NPM သိုလှောင်မှုမှ ပက်ကေ့ဂျ်များကို ဒေါင်းလုဒ်လုပ်ပြီးနောက်၊ ၎င်းသည် မည်သည့်ဆိုက်မဆို Cloudflare အကြောင်းအရာပေးပို့ခြင်းကွန်ရက်ကို အခမဲ့အသုံးပြုခွင့်ပြုပြီးနောက် JavaScript libraries များတင်ခြင်းကို အရှိန်မြှင့်ပေးသည်။ GitHub တွင်လွှင့်တင်ထားသော cdnjs အစိတ်အပိုင်းများ၏ကုဒ်ကိုလေ့လာသောအခါ၊ NPM ပက်ကေ့ခ်ျများကို tgz မော်ကွန်းတိုက်များတွင်ထုပ်ပိုးရန်အတွက် Go ဘာသာစကားရှိ စံ archive/tar module ကို အသုံးပြုထားပြီး၊ လမ်းကြောင်းပုံမှန်ဖြစ်အောင်ပြုလုပ်ခြင်းမရှိဘဲ ဖိုင်များစာရင်းကိုထုတ်လုပ်ပေးသည့်စာရင်းကိုအသုံးပြုကြောင်း ထင်ရှားပါသည်။ Script သည် ပေးထားသောစာရင်းကိုအခြေခံ၍ အကြောင်းအရာများကို ထုပ်ပိုးသောအခါတွင်၊ “../../../../../../../tmp/test” ကဲ့သို့သော ဖိုင်များ၏ မော်ကွန်းတွင် ရှိနေနိုင်သည် ဝင်ရောက်ခွင့်ခွင့်ပြုသလောက်တော့ စနစ်ထဲမှာ မထင်သလို ဖိုင်တွေကို ထပ်ရေးခိုင်းပါတယ်။

တိုက်ခိုက်သူသည် ၎င်း၏စာကြည့်တိုက်ကို cdnjs တွင်ထည့်သွင်းရန်နှင့် NPM သိုလှောင်ရာလမ်းကြောင်းရှိ “../” ဇာတ်ကောင်များပါရှိသော ဖိုင်များပါရှိသော အထူးဒီဇိုင်းပြုလုပ်ထားသော မှတ်တမ်းဖိုင်ကို အပ်လုဒ်လုပ်ရန် အကြံပြုထားသည်။ cdnjs ဆာဗာများတွင်၊ "အလိုအလျောက်အပ်ဒိတ်" လုပ်ဆောင်ချက်ကို အခါအားလျော်စွာ လုပ်ဆောင်ပြီး ကိုင်တွယ်သူသည် အဆိုပြုထားသည့် ဒစ်ဂျစ်တိုက်၏ ဗားရှင်းအသစ်များကို ဒေါင်းလုဒ်လုပ်ကာ အကြောင်းအရာများကို ထုတ်ပိုးသည်။ “../” လမ်းကြောင်းများပါရှိသော ဖိုင်များကို အသုံးပြုခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် ဖိုင်များကို ဝန်ဆောင်မှု scripts များဖြင့် ထပ်ရေးနိုင်ပြီး ထုပ်ပိုးခြင်းအား လုပ်ဆောင်သည့် ဆာဗာတွင် ၎င်းတို့၏ကုဒ်ကို လုပ်ဆောင်နိုင်သည်။

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

ဖိုင်ဖတ်ရှုခြင်းဆိုင်ရာ ယူဆချက်အား စမ်းသပ်ခြင်းဖြင့် HackerOne တွင် ဆုတစ်ခုရရှိရန် cdnjs များကို ဟက်ကာသရုပ်ပြခြင်းဖြင့် စမ်းသပ်မှုများ စတင်ရန် ဆုံးဖြတ်ခဲ့သည်။ /proc/self/maps ဖိုင်ကိုညွှန်ပြပြီး CDN ​​မှတစ်ဆင့် ဝန်ဆောင်မှုပေးသော JavaScript စာကြည့်တိုက်၏ Git သိုလှောင်မှုသို့ သင်္ကေတလင့်ခ် test.js ကို ပေါင်းထည့်ထားသည်။ ဒစ်ဂျစ်တိုက်၏ ဗားရှင်းအသစ်ကို ထုတ်ဝေပြီးနောက်၊ အပ်ဒိတ်ကိုင်တွယ်သူသည် ဤသိုလှောင်မှုကို လုပ်ဆောင်ပြီး သတ်မှတ်ထားသောဖိုင်ကို cdnjs တွင် ထုတ်ဝေခဲ့သည် (test.js ကို သင်္ကေတလင့်ခ်တစ်ခုအဖြစ် ဖန်တီးခဲ့ပြီး ဤဖိုင်ကို တောင်းဆိုသောအခါ၊ /proc/self/maps ၏ အကြောင်းအရာများကို ပြန်ပေးခဲ့သည်။ )

ဖိုင် /proc/self/environ သို့ သင်္ကေတ လင့်ခ်ကို အစားထိုးခြင်းဖြင့် ပေးထားသော ဒေတာတွင် ပတ်ဝန်းကျင် ကိန်းရှင်များ GITHUB_REPO_API_KEY နှင့် WORKERS_KV_API_TOKEN တို့၏ တန်ဖိုးများပါ၀င်ကြောင်း လေ့လာမှုမှ ရေးသားသူ သတိပြုမိပါသည်။ ပထမပြောင်းလဲမှုသည် GitHub ရှိ robocdnjs repository သို့ စာရေးဝင်ရောက်ခွင့်အတွက် API သော့ကို သိမ်းဆည်းထားသည်။ ဒုတိယကိန်းရှင်သည် တိုကင်ကို cdnjs တွင် KV သိုလှောင်မှုသို့ သိမ်းဆည်းထားသည်။ ရရှိထားသော အချက်အလက်ကို အသုံးပြု၍ တိုက်ခိုက်သူသည် cdnjs များကို အပြောင်းအလဲများ ပြုလုပ်နိုင်ပြီး အခြေခံအဆောက်အအုံကို လုံးဝအလျှော့ပေးနိုင်သည်။

source: opennet.ru

မှတ်ချက် Add