package-lock.json - package lock json - npm typosquatting

Package-Lock.json Typo: သင့် Build ကို မည်သို့ Hijack လုပ်နိုင်သည်

မာတိကာ

မဖြစ်မနေဖတ်သင့်သောပို့စ်များ

စိတ်ဝင်စားဖွယ်ကောင်းသော နောက်ဆုံးပို့စ်များ

Package-Lock.JSON က ဆော့ဖ်ဝဲရေးသားသူတွေအတွက် ဘာကြောင့် အရေးကြီးတာလဲ။

Node.js ပရောဂျက်များတွင် package-lock.json သည် package.json ၏ တွဲဖက်ဖိုင်တစ်ခုမျှသာမဟုတ်ပါ။ ၎င်းသည် ထည့်သွင်းထားသော dependency တိုင်း၏ ဗားရှင်းအတိအကျကို lock လုပ်ထားပြီး nested များအပါအဝင်ဖြစ်သည်။ ဤဖိုင်သည် environment များတွင် ပြန်လည်ထုတ်လုပ်နိုင်မှုကို သေချာစေပြီး package ဗားရှင်းအသစ်များထုတ်ဝေသောအခါ မမျှော်လင့်ထားသော ပြောင်းလဲမှုများကို ကာကွယ်ပေးသည်။ ၎င်းမရှိပါက developer များသည် dependency tree များပြောင်းလဲခြင်းကြောင့် dev၊ test နှင့် production အဆင့်များတွင် ကွဲပြားသော အပြုအမူများကို အန္တရာယ်ဖြစ်စေနိုင်ပြီး lockfile ထဲသို့ အမှားများဝင်လာပါက npm typosquatting ပြုလုပ်ရန် တံခါးဖွင့်ပေးလိမ့်မည်။


package-lock.json ကို မှန်ကန်စွာအသုံးပြုသောအခါ၊ သင့်အဖွဲ့ရှိ လူတိုင်းနှင့် သင့် CI/CD pipeline တပ်ဆင်သည် ကုဒ်က အတူတူပါပဲ။ ဒါပေမယ့် ဒီဖိုင်ထဲက တိတ်ဆိတ်တဲ့ စာလုံးပေါင်းအမှားတစ်ခုကြောင့် သင့်အက်ပ်ကို ထောင်ချောက်ထဲ တန်းပြန်ညွှန်းသွားနိုင်ပါတယ်။

Typos တွေက NPM Typosquatting တိုက်ခိုက်မှုတွေကို ဘယ်လိုဖြစ်စေသလဲ။

တရားဝင် package တစ်ခုလို့ ပြောရအောင် မြတ်စွာဘုရား စာလုံးပေါင်းမှန်ကန်စွာဖော်ပြထားပါသည်၊ ဥပမာ lodash။ ဒါပေမယ့် မှားယွင်းစွာ ရိုက်ထားတဲ့ မှတ်တမ်းတစ်ခု package-lock.json, ကဲ့သို့ လိုဒါစ်သည် သင်၏ dependency tree ထဲသို့ ခိုးဝင်နိုင်ဆဲဖြစ်သည်၊ အထူးသဖြင့် တစ်စုံတစ်ယောက်က ၎င်းကို ကိုယ်တိုင်တည်းဖြတ်ထားပါက သို့မဟုတ် ချို့ယွင်းသော tool တစ်ခုက ရေးသားထားပါက။

တိုက်ခိုက်သူများသည် npm typosquatting ဟုခေါ်သော နည်းပညာဖြင့် ဤစာလုံးပေါင်းအမှားများကို အသုံးချကြသည်။ ၎င်းတို့သည် ရေပန်းစားသော အမည်များနှင့်ဆင်တူသော (ဥပမာ- တုံ့ပြန်-ဒိုးမ်, အမြန်ဖော်ပြသည်, angular). သင့်ရဲ့ package lock JSON မှာ အဲဒီလို typo ပါရင် npm က attacker ရဲ့ package ကို မေးခွန်းမထုတ်ဘဲ install လုပ်ပါတယ်၊ ဘာလို့လဲဆိုတော့ သင်က ရှင်းရှင်းလင်းလင်း ပြောထားလို့ပါ။

npm typosquatting သည် သီအိုရီသက်သက်မဟုတ်ပါ။ လက်တွေ့ npm typosquatting တိုက်ခိုက်မှုများသည် သတင်းခေါင်းစဉ်များတွင် ပါဝင်လာခဲ့သည်။ ထိုကဲ့သို့သော ဥပမာတစ်ခုမှာ Coa ပက်ကေ့ချ် ညှိနှိုင်းမှုအဘယ်မှာရှိသနည်း အန္တရာယ်ရှိတဲ့ကုဒ် ယုံကြည်ရသော package ၏ update မှတစ်ဆင့် ပေးပို့ခဲ့သည်။ ကွာခြားချက်မှာ npm typosquatting တွင် developer သည် dependency ကို မှားယွင်းစွာရိုက်ထည့်ခြင်းဖြင့် attacker ကို မတော်တဆဖိတ်ခေါ်မိခြင်းဖြစ်သည်။

တကယ့်အန္တရာယ်များ CI/CD Pipelinepackage lock json အမှားများကြောင့် ဖြစ်ပေါ်လာခြင်း

ခေတ်သစ် CI/CD pipelineကုသမှု package-lock.json အမှန်တရားရဲ့ အရင်းအမြစ်တစ်ခုအနေနဲ့။ တည်ဆောက်မှု သို့မဟုတ် ဖြန့်ကျက်မှုအတွင်းမှာ pipeline ပြေး npm ci or npm installနှစ်ခုစလုံးသည် lockfile မှဖတ်သည်။ စာလုံးပေါင်းအမှားတစ်ခုပါရှိပါက အန္တရာယ်ရှိသော package ကို အလိုအလျောက်ဆွဲယူသည်။ သတိပေးချက်များ မရှိပါ။ တောင်းဆိုမှုများ မရှိပါ။

ဆိုလိုသည်မှာ local development အတွင်း ထည့်သွင်းထားသော typo သည် staging သို့မဟုတ် production အထိ တိတ်တဆိတ်ပျံ့နှံ့သွားနိုင်သည်။ Attacker များသည် credential stealer များ၊ crypto miners များ သို့မဟုတ် post-deployment ကို အသက်ဝင်စေသော backdoor များကို embed လုပ်နိုင်သည်။ ဤအရာအားလုံးသည် security tool များကို trigger မလုပ်ဘဲ ဖြစ်ပွားနိုင်သည်၊ အဘယ်ကြောင့်ဆိုသော် dependency ကို "ကြေငြာ" ထားသောကြောင့်ဖြစ်သည်။ package-lock.json.

ဒါဟာ သာမန်အမှားတစ်ခု မဟုတ်ပါဘူး။ ဒါဟာ ဖြစ်ပေါ်လာဖို့ စောင့်မျှော်နေတဲ့ ထောက်ပံ့ရေးကွင်းဆက် ချိုးဖောက်မှုတစ်ခုဖြစ်ပြီး npm typosquatting က ၎င်းကို တကယ့်ခြိမ်းခြောက်မှုတစ်ခု ဖြစ်စေပါတယ်။

NPM Typosquatting ကို လျော့ပါးစေရန်အတွက် Dependency Typos များကို ရှာဖွေခြင်းနှင့် ကာကွယ်ခြင်း

စာလုံးပေါင်းအမှားများ package-lock.json သင်တက်ကြွစွာရှာဖွေခြင်းမရှိပါက မမြင်နိုင်ပါ။ စတင်နည်းမှာ အောက်ပါအတိုင်းဖြစ်သည်။

  • Static Analysis: အချို့သော tool များသည် ဤပြဿနာများကို မဖမ်းမိသော်လည်း၊ dedicated dependency scanner များက ဖမ်းမိနိုင်ပါသည်။ npm typosquatting pattern များကို scan လုပ်သည့် tool များကို ပေါင်းစပ်ပြီး သင့် package-lock.json မကိုက်ညီမှုများအတွက်။
  • လင်းတင်း လော့ချ်ဖိုင်များ: အတည်ပြုရန်အတွက် စိတ်ကြိုက် linting စည်းမျဉ်းများ သို့မဟုတ် plugin များကို အသုံးပြုပါ။ package-lock.json သိရှိထားသော ဘေးကင်းသောစာရင်းများနှင့် နှိုင်းယှဉ်၍ ထည့်သွင်းမှုများ။
  • ကုဒ်သုံးသပ်ချက်များ: Peer reviews တွေက အရေးကြီးပါတယ်။ Lockfile diffs တွေက ဆူညံပေမယ့် သင့်အဖွဲ့ကို code လိုပဲ review လုပ်ဖို့ သင်ပေးပါ။
  • အလိုအလျောက်စစ်ဆေးမှုများ: တည်ဆောက်သည် pre-commit hooks သို့မဟုတ် အတည်မပြုရသေးသော သို့မဟုတ် သံသယဖြစ်ဖွယ် entry များကို ငြင်းပယ်ရန် CI jobs များ package-lock.json.

GitHub Actions ကို အသုံးပြုတဲ့ လက်တွေ့ကျတဲ့ ဥပမာတစ်ခု ဒီမှာပါ။

ဒါက bulletproof မဟုတ်ပေမယ့် npm typosquatting ကိုညွှန်ပြနိုင်တဲ့ ထူးဆန်းတဲ့ package name တွေကို flag လုပ်ပါတယ်။

NPM Typosquatting နှင့် Supply Chain တိုက်ခိုက်မှုများမှ Node.js ပရောဂျက်များကို လုံခြုံစေခြင်း

သင့်ရဲ့ Node.js အက်ပ်ကို လော့ချပြီး တိုက်ခိုက်မှုတွေကို ကာကွယ်ဖို့ package-lock.json:

  • တင်းကျပ်သော ဗားရှင်း ပင်ထိုးခြင်းဗားရှင်းအပိုင်းအခြားများကို ရှောင်ပါ (^, ~) တွင် မြတ်စွာဘုရား။ မမျှော်လင့်ထားသော အပ်ဒိတ်များနှင့် ရွေ့လျားမှုများကို လျှော့ချရန်အတွက် dependencies အားလုံးကို တိကျသောဗားရှင်းများသို့ လော့ခ်ချပါ။
  • လက်မှတ်အတည်ပြုခြင်းpackage တွေရဲ့ စစ်မှန်မှုနဲ့ မူလအစကို အတည်ပြုဖို့ Sigstore နဲ့ npm ရဲ့ provenance features လိုမျိုး tools တွေကို အသုံးပြုပါ။
  • မပြောင်းလဲနိုင်သော တည်ဆောက်မှုများ: အမြဲသုံးပါ။ npm ci အတည်ပြုထားသောနှင့်အတူ package-lock.json ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင် ဖိုင်ကို။ ဘယ်တော့မှ အားမကိုးပါနဲ့ npm install ဖြန့်ကျက်မှုများအတွင်း၊ ၎င်းသည် မစစ်ဆေးရသေးသော ပြောင်းလဲမှုများကို ဖြစ်ပေါ်စေနိုင်သောကြောင့်။
  • စဉ်ဆက်မပြတ်စောင့်ကြည့်: အောက်ပါအချိန်များတွင် သင့်အား သတိပေးသည့် စောင့်ကြည့်ရေးဖြေရှင်းချက်များကို အသုံးပြုပါ-
    • သင့်တွင် ပက်ကေ့ဂျ်အသစ်များ ပေါ်လာသည် package-lock.json
    • ရှိပြီးသား ပက်ကေ့ဂျ်များ မမျှော်လင့်ဘဲ ပြောင်းလဲသွားမည်
    • သံသယဖြစ်ဖွယ်ပုံစံများ (ဥပမာ၊ ပက်ကေ့ဂျ်အမည်များကဲ့သို့သော) အမြန်ဖော်ပြသည်, တုံ့ပြန်-ဒိုးမ်, angular) တွေ့ရှိရပါတယ်
  • မှီခိုမှုစစ်ဆေးရေးကိရိယာများ: ကဲ့သို့သော အလိုအလျောက်ကိရိယာများကို ပေါင်းစပ်ပါ npm စာရင်းစစ်, သရဲဒါမှမဟုတ် ဆိုက်ဂျီနီ မင်းရဲ့ CI ထဲကို pipeline အားနည်းချက်များနှင့် စာရိုက်အမှားအယွင်း အညွှန်းကိန်းများကို စကင်ဖတ်ရန်။
  • Lockfile Hygiene: ဆက်ဆံပါ။ package-lock.json ကုဒ်အဖြစ်။ ၎င်းကို ပြန်လည်သုံးသပ်နေစဉ် pull requestsအထူးသဖြင့် dependencies များကို အပ်ဒိတ်လုပ်သည့်အခါ သို့မဟုတ် ထည့်သွင်းသည့်အခါ။
  • automated Pre-Commit စစ်ဆေးမှုများ: ကိုအသုံးပြုခြင်း pre-commit hooks သင့်ရဲ့ lockfile ဟာ version control မရောက်ခင်မှာ validate လုပ်ဖို့။

package-lock.json npm typosquatting တိုက်ခိုက်မှုများတွင် တန်ဖိုးမြင့်ပစ်မှတ်တစ်ခုဖြစ်သည်။ typo ကဲ့သို့သော တုံ့ပြန်-ဒိုးမ် or လိုဒါစ် တိုက်ခိုက်သူများအား သင့်တည်ဆောက်မှုထဲသို့ တိုက်ရိုက်လမ်းကြောင်းပေးသည် pipeline။ ဤဖိုင်နှင့်ပတ်သက်သည့် သတိရှိမှုသည် ထောက်ပံ့ရေးကွင်းဆက် တည်တံ့ခိုင်မြဲမှုကို ထိန်းသိမ်းရန်အတွက် မရှိမဖြစ်လိုအပ်ပါသည်။

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

စာရိုက်မှားခြင်း package-lock.json ပေါ့ဆတဲ့ coding သက်သက် မဟုတ်ပါဘူး။ npm typosquatting အတွက် တကယ့်ခြိမ်းခြောက်မှု vector တစ်ခုပါ။ ဒီဖိုင်က gatekeeper တစ်ခုဖြစ်ပြီး အန္တရာယ်ကျရောက်ရင် pipeline လည်းပါပဲ။ ပြင်ဆင်ချက်က ဆွဲဆောင်မှုမရှိပါဘူး- နှေးကွေးအောင်လုပ်ပါ၊ lockfile ကို ပြန်လည်သုံးသပ်ပါ၊ စစ်ဆေးမှုများကို အလိုအလျောက်လုပ်ဆောင်ပါ၊ ပြောင်းလဲမှုများကို စောင့်ကြည့်ပါ။ ဒါပေမယ့် တန်ပါတယ်။

သင့်ရဲ့ကာကွယ်ရေးကို အဆင့်မြှင့်တင်ဖို့အတွက် Xygeni လိုမျိုး tools တွေကို အသုံးပြုဖို့ စဉ်းစားပါ၊ သူတို့က typosquatting ကို ထောက်လှမ်းဖို့၊ စစ်ဆေးဖို့ ဒီဇိုင်းထုတ်ထားပါတယ်။ ပက်ကေ့ချ်သော့ခတ် JSON ဖိုင်များနှင့် သင့်တစ်လျှောက်လုံးတွင် ပက်ကေ့ဂျ်၏ သမာဓိကို ကာကွယ်ပါ CI/CD pipelineopen source ခေတ်မှာ ယုံကြည်မှုကို ရရှိပြီး အတည်ပြုပါတယ်။

sca-tools-software-composition-analysis-tools
သင့်ဆော့ဖ်ဝဲလ်အန္တရာယ်များကို ဦးစားပေးသတ်မှတ်ခြင်း၊ ပြုပြင်ခြင်းနှင့် လုံခြုံစေခြင်း
သင့်ရဲ့ အခမဲ့အကောင့်ကို ရယူလိုက်ပါ။
အကြွေးဝယ်ကဒ်မရှိပါ။

သင့်ရဲ့ Software Development နဲ့ Delivery ကို လုံခြုံအောင်ထားပါ

Xygeni ထုတ်ကုန်အစုံနှင့်အတူ