Shai hulud - npm packages များ - ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှု

Shai-Hulud: npm Packages Worm အကြောင်း ရှင်းလင်းချက်

မာတိကာ

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

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

TL; DR

၂၀၂၅ ခုနှစ်၊ စက်တင်ဘာလ ၁၄ ရက်နေ့တွင် သုတေသီများက ဖော်ထုတ်တွေ့ရှိခဲ့သည်မှာ Shai Huludအတွင်းမှာ ပုန်းအောင်းနေတဲ့ ကိုယ်တိုင်ပုံတူပွားနိုင်တဲ့ တီကောင်တစ်ကောင် npm အထုပ်များပုံမှန် မှီခိုမှု အပ်ဒိတ်ကို အပြည့်အဝ စကေးအဖြစ် ပြောင်းလဲခြင်း ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှု. ပထမဆုံးတွေ့ရှိခဲ့သည် @ctrl/tinycolor Daniel dos Santos Pereira ရေးသားတဲ့ package တစ်ခုဖြစ်တဲ့ Shai-Hulud ဟာ လျှို့ဝှက်ချက်တွေကို စုဆောင်းပြီး GitHub repos နဲ့ workflows တွေကနေတစ်ဆင့် ထုတ်ယူကာ ခိုးယူထားတဲ့ အထောက်အထားတွေကို အသုံးပြုပြီး registry မှာ ပြန်လည်ထုတ်ဝေပါတယ်။ ရက်အနည်းငယ်အတွင်းမှာပဲ ကူးစက်ခံရတဲ့ package အရေအတွက်ဟာ ဒါဇင်ပေါင်းများစွာကနေ ရာပေါင်းများစွာအထိ မြင့်တက်လာခဲ့ပြီး အတည်ပြုခဲ့ပါတယ်။ ရှာဟုလပ်ဒ် ၎င်းသည် နောက်ထပ် trojan တစ်ခုမျှသာ မဟုတ်ဘဲ npm ဂေဟစနစ်တွင် အလိုအလျောက် ပျံ့နှံ့ရန် ဒီဇိုင်းထုတ်ထားသော worm တစ်ခုဖြစ်သည်။

သက်ရောက်မှု: public npm package များကို install လုပ်သည့် မည်သည့် developer သို့မဟုတ် CI runner မဆို အန္တရာယ်ရှိသည်။

ချက်ချင်းလုပ်ဆောင်မှုများ - သိရှိထားသော ဗားရှင်းများကို ပိတ်ဆို့ပါ၊ lockfile-only installs သို့ ပြောင်းပါ၊ npm နှင့် GitHub တိုကင်များကို လှည့်ပါ၊ workflows များကို audit လုပ်ပါ၊ နှင့် Indicators of Compromise (IoCs) များကို စောင့်ကြည့်ပါ။

ဘာဖြစ်တာလဲ?

အဆိုပါ npm package များတွင် Shai-Hulud ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှု မကြာသေးမီက မှတ်ဉာဏ်ထဲမှာ အရှုပ်ထွေးဆုံး ဖြစ်ရပ်တွေထဲက တစ်ခုပါ။ သီးခြား ထရိုဂျန်တွေနဲ့ မတူဘဲ၊ ဒီ worm ရောနှောပြီး အထောက်အထားခိုးယူမှု၊ အလိုအလျောက် ထုတ်ယူမှုနှင့် ကိုယ်တိုင်ပုံတူပွားခြင်းထို့ကြောင့် ကူးစက်မှုအချိန်ဇယားသည် ရက်သတ္တပတ်များမှ နာရီပိုင်းအတွင်းသို့ လျော့ကျသွားခဲ့သည်။

DevOps အဖွဲ့များအတွက် သင်ခန်းစာမှာ ရှင်းပါသည်- install တိုင်းသည် code ကို execute လုပ်နိုင်ပါက dependency update တိုင်းသည် ချိုးဖောက်မှုတစ်ခု ဖြစ်နိုင်သည့် အချက်ဖြစ်သည်။

ဖြစ်နိုင်ချေရှိသော ကနဦး Vector နှင့် ပစ်မှတ်ထားသော အထောက်အထားများ

အစောပိုင်း ခွဲခြမ်းစိတ်ဖြာမှု တိုက်ခိုက်မှု စတင်ဖွယ်ရှိကြောင်း ညွှန်ပြနေသည် အခိုးခံရသောအထောက်အထားများဥပမာအားဖြင့်၊ npm ကို လှည့်စားသည့် phishing campaign များ login သို့မဟုတ် MFA prompts များသည် developer tokens များကို ဖမ်းယူထားနိုင်သည်။ တိုက်ခိုက်သူများသည် ပထမဆုံးခြေကုပ်ယူနိုင်ပြီးနောက် worm သည် npm packages များထဲသို့ ၎င်းကိုယ်တိုင်ထည့်သွင်းခြင်းဖြင့် ပျံ့နှံ့သွားပြီး အောက်ပါတို့မှ လျှို့ဝှက်ချက်များကို ခိုးယူခဲ့သည်-

  • npm ပြင်ဆင်မှုဖိုင်များ ကဲ့သို့ .npmrc၊ မကြာခဏ ထုတ်ဝေသည့် တိုကင်များ ပါဝင်သည်။
  • ပတ်ဝန်းကျင်ပြောင်းလဲမှုများ နှင့် GitHub PAT များဖြင့် config များ CI/CD လျှို့ဝှက်ချက်များ။
  • Cloud metadata endpoint များ (AWS၊ GCP၊ Azure) သည် ဘေးတိုက်ရွေ့လျားမှုအတွက် ရေတိုအထောက်အထားများကို ရရှိစေပါသည်။

ထို့ကြောင့် အထောက်အထားခိုးယူမှုသည် launchpad ဖြစ်လာခဲ့သည်။ တရားဝင် npm တိုကင်များနှင့် GitHub လျှို့ဝှက်ချက်များဖြင့် Shai-Hulud သည် အပိုလူအားစိုက်ထုတ်စရာမလိုဘဲ package များနှင့် repositories များစွာတွင် ကိုယ်တိုင်ပုံတူပွားနိုင်သည်။

Shai-Hulud ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှု၏ အုပ်ချုပ်ရေးဆိုင်ရာသက်ရောက်မှု

Shai-Hulud သည် ယနေ့တိုင် တက်ကြွနေဆဲဖြစ်သည်။ ဤ worm သည် သက်ရောက်မှုအချိန်ဇယားကို မြန်ဆန်စေသည်။ တစ်ချိန်က trojan တစ်ခုဖြင့် ရက်သတ္တပတ်များစွာ ကြာခဲ့ရသည့်အရာသည် ယခုအခါ နာရီပိုင်းအတွင်း ပေါ်ပေါက်လာသည်။ ရလဒ်အနေဖြင့် ပျံ့နှံ့မှုသည် ပိုမိုမြန်ဆန်ပြီး ထိန်းချုပ်ရန် ပိုမိုခက်ခဲပါသည်။ ၎င်းသည် အောက်ပါတို့ဖြင့် တိုးတက်သည်-

  • npm publish tokens များနှင့် GitHub လျှို့ဝှက်ချက်များကို ခိုးယူခြင်း။
  • ၎င်းကိုယ်တိုင်ကို အခြား npm package များထဲသို့ ပြန်လည်ထုတ်ဝေခြင်း။
  • တည်တံ့ခိုင်မြဲစေရန်အတွက် အန္တရာယ်ရှိသော GitHub Actions workflow များကို ထည့်သွင်းခြင်း။

ဘယ်သူတွေ ထိခိုက်ခံရလဲ-

အများသုံး npm package များကို install လုပ်သည့် မည်သည့်အဖွဲ့မဆို ပေါက်ကြားနိုင်ပါသည်။ ထို့အပြင်၊ cache လုပ်ထားသော npm သို့မဟုတ် GitHub token များပါရှိသော developer များသည် အန္တရာယ်များပါသည်။ broad-scoped secret များကို အသုံးပြုသည့် CI runner များသည်လည်း အားနည်းချက်ရှိပါသည်။

စီးပွားရေးအန္တရာယ်

စီးပွားရေးသက်ရောက်မှုသည် အလျင်အမြန်ကြီးထွားလာသည်။ ခိုးယူခံရသော တိုကင်များသည် အကောင့်သိမ်းပိုက်ခြင်း၊ ပက်ကေ့ဂျ်ခိုးယူခြင်းနှင့် cloud အလွဲသုံးစားမှုပင် ဖြစ်စေနိုင်သည်။ ထို့အပြင် GitHub workflows များတွင် တည်တံ့နေခြင်းကြောင့် ၎င်းကို ရှင်းလင်းရန် ပိုမိုခက်ခဲစေသည်။ ထို့ကြောင့်အဖွဲ့များသည် Shai-Hulud ကို ပိတ်ထားသောဖြစ်ရပ်တစ်ခုအဖြစ် မဟုတ်ဘဲ ဆက်လက်ဖြစ်ပွားနေသောဖြစ်ရပ်တစ်ခုအဖြစ် သဘောထားရမည်။

Shai-Hulud Supply Chain Attack က npm Packages တွေမှာ ဘယ်လိုအလုပ်လုပ်သလဲ။

တိုက်ခိုက်သူ၏ ရည်ရွယ်ချက်နှင့် ရည်ရွယ်ချက်

ဒီ campaign က အောက်ပါအချက်သုံးချက်အတွက် အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ထားပါတယ်-

  • ပထမရည်မှန်းချက်ကတော့ အထောက်အထားများကို ကျယ်ကျယ်ပြန့်ပြန့် ခိုးယူခြင်း developer laptop များနှင့် CI runner များမှ။ ၎င်းတွင် npm publish token များ၊ GitHub token များနှင့် cloud credentials များ ပါဝင်သည်။ အမှန်စင်စစ်၊ TruffleHog ကို run ခြင်းနှင့် cloud metadata endpoint များကို query လုပ်ခြင်းကဲ့သို့သော စနစ်တကျ secret harvesting ကို analysis များစွာက အတည်ပြုပါသည်။
  • ဒုတိယရည်မှန်းချက်ကတော့ အလိုအလျောက်ပျံ့နှံ့သွားသည် ထိန်းချုပ်ခံထားရသော ထိန်းသိမ်းသူများ၏ ထုတ်ဝေခွင့်များကို အလွဲသုံးစားပြုခြင်းဖြင့်။ ရလဒ်အနေဖြင့်၊ အခြား package များ၏ ကူးစက်ခံရသော ဗားရှင်းအသစ်များသည် နောက်ထပ်လူသားအားထုတ်မှုမပါဘဲ ပေါ်လာသောကြောင့် ခြေကုပ်တစ်ခုသည် ခြေကုပ်များစွာအဖြစ်သို့ လျင်မြန်စွာ ကျယ်ပြန့်သွားသည်။
  • တတိယရည်မှန်းချက်ကတော့ ယုံကြည်စိတ်ချစွာ တည်တံ့ပြီး စစ်ထုတ်နိုင်သည် GitHub အခြေခံအဆောက်အအုံမှတစ်ဆင့်။ တိုက်ခိုက်သူများသည် double base64 ပါသည့် “Shai-Hulud” အမည်ရှိ public repo တစ်ခုကို ဖန်တီးကြသည်။ data.jsonထို့အပြင် ၎င်းတို့သည် စီးရီးလိုက်လုပ်ဆောင်သည့် workflow တစ်ခုကို စိုက်ထူသည် ${{ toJSON(secrets) }} ပြီးတော့ static webhook မှာ တင်ပါတယ်။

ဖြစ်နိုင်ခြေရှိသော အကျိုးအမြတ်တွင် မှတ်ပုံတင်ခြင်းများနှင့် source code များကို ရေရှည်ဝင်ရောက်ခွင့်၊ cloud အကောင့်များထဲသို့ မြန်ဆန်သော ဘေးတိုက်ရွှေ့ပြောင်းမှုနှင့် ထောက်ပံ့ရေးကွင်းဆက်ကို လက်နက်အဖြစ် ထပ်မံအသုံးပြုရန် ရွေးချယ်ခွင့်တို့ ပါဝင်သည်။ အများပြည်သူဆိုင်ရာ အစီရင်ခံစာများအရ ပုဂ္ဂလိက repos များကို အများပြည်သူသို့ ပြောင်းလဲခဲ့သည်ကို ပြသထားသည် "- ရွှေ့ပြောင်းခြင်း" ဒေတာထိတွေ့မှုနှင့် အရှိန်အဟုန်ကို မြှင့်တင်ပေးသည့် နောက်ဆက်

Shai-Hulud Payload အတွင်းပိုင်း bundle.js npm အထုပ်များတွင်

Shai-Hulud သင်္ဘောများသည် ကြီးမားပြီး၊ Webpack-bundle ဖြင့် ပြုလုပ်ထားပြီး အလွန်သေးငယ်အောင် ပြုလုပ်ထားသည် JavaScript ဖိုင် (bundle.js, ၃–၃.၇ MB ခန့်) တစ်ခုမှ လုပ်ဆောင်သည် တပ်ဆင်ပါ။ ချိတ်ဆွဲပါ မြတ်စွာဘုရား။ ထို့ကြောင့်, ထည့်သွင်းမှုတိုင်းသည် payload ကို အလိုအလျောက် လှုံ့ဆော်ပေးသည်။ ဤဒီဇိုင်းသည် identifier များကို ဖုံးကွယ်ထားပြီး၊ control flow ကို ချုံ့ကာ၊ installation လုပ်နေစဉ်အတွင်း လုပ်ဆောင်သည့် artifact တစ်ခုတည်းထဲသို့ logic အားလုံးကို တွန်းပို့သည်။ ခွဲခြမ်းစိတ်ဖြာသူများသည် Webpack bundling၊ ပုံမှန်မဟုတ်သော ဖိုင်အရွယ်အစားနှင့် install လုပ်ချိန် လုပ်ဆောင်မှုကို အဆက်မပြတ် အတည်ပြုကြသည်။

နမူနာများတွင် သင်တွေ့မြင်ရမည့် မှုန်ဝါးဝါးဖြစ်စေခြင်းနှင့် ခွဲခြမ်းစိတ်ဖြာမှုကို ဆန့်ကျင်သည့် လက္ခဏာများ-

  • အသေးစားပြုလုပ်ထားသော မော်ဂျူးဂရပ် ဂဏန်း module ID များ၊ မှတ်ချက်နည်းပါးခြင်းနှင့် ပြားချပ်သော control flow တို့ဖြင့်။ ထို့အပြင်, ဤဖွဲ့စည်းပုံသည် ကိုယ်တိုင်ပြန်လည်သုံးသပ်ခြင်းကို အလွန်ခက်ခဲစေသည်။
  • ကြိုးဝှက်ခြင်း base64 layer များနှင့် construction helper များမှတစ်ဆင့်။ ဥပမာအားဖြင့်, exfiltration လုပ်ရိုးလုပ်စဉ်များတဝိုက်တွင် ထပ်ခါတလဲလဲ base64 encoding နှင့် decoding များ ပေါ်လာလေ့ရှိသည်။
  • ဒိုင်းနမစ် ပေးပို့မှု ဖြတ်. အကဲဖြတ်-style ပုံစံများနှင့် function bodies များကို ထုတ်လုပ်ပေးသောကြောင့် ကုဒ်သည် runtime တွင် အပြုအမူကို ပြောင်းလဲနိုင်စေပါသည်။
  • OS စစ်ထုတ်ခြင်း အထူးသဖြင့် CI runner များနှင့် developer laptop များတွင် Linux နှင့် macOS လုပ်ဆောင်မှုကို ပိုမိုနှစ်သက်ရန်။

လုပ်ဆောင်ချက်ရှုထောင့်မှကြည့်လျှင် အစုအဝေးသည် မော်ဂျူလာဖြစ်သည်။ Writeup များတွင် OS ရှာဖွေတွေ့ရှိမှု၊ filesystem နှင့် git secret scan များ၊ cloud SDK access၊ GitHub API လုပ်ဆောင်ချက်များနှင့် maintainer ပိုင်ဆိုင်သော အခြား package များကို တည်းဖြတ်သည့် propagation engine အတွက် module များကို ဖော်ပြထားသည်။ အမှန်မှာ၊ StepSecurity နှင့် ReversingLabs နှစ်ခုစလုံးသည် malicious hook ဖြင့် package များကို အလိုအလျောက် update လုပ်သည့် function တစ်ခုကို မီးမောင်းထိုးပြထားသည်။

Shai-Hulud မှာ Install-Time Execution: npm Packages တွေက Worm ကို ဘယ်လို Trigger လုပ်သလဲ

တိုက်ခိုက်မှုစတင်ချိန်မှာ ထည့်သွင်းပြီးနောက် node ကို လုပ်ဆောင်သည် bundle.js. ဤအချိန်တွင် script သည် memory အတွင်းရှိ အလုပ်လုပ်နေသော အခြေအနေကို initialize လုပ်ပြီး unpack လုပ်ကာ worm ၏ အပြည့်အဝ လုပ်ဆောင်ချက်အတွက် အဆင့်ကို သတ်မှတ်ပေးပါသည်။

ရှာဖွေတွေ့ရှိမှုနှင့် ရိတ်သိမ်းခြင်း

  • payload သည် process.env ကို dumps လုပ်ပြီး high-entropy secrets များနှင့် token prefixes များအတွက် local files များကို scan ဖတ်သည်။ ထို့အပြင်၊ ၎င်းသည် TruffleHog ကို run ခြင်းဖြင့် coverage ကို တိုးချဲ့သည်။
  • ၎င်းသည် ရေတိုအထောက်အထားများကို စုဆောင်းရန် cloud metadata endpoint များကို မေးမြန်းသည်။ ဥပမာအားဖြင့်, ဖုန်းခေါ်ဆိုရန် 169.254.169.254 AWS မှာ ဒါမှမဟုတ် metadata.google.internal GCP ပေါ်တွင် ကူးစက်ခံထားရသော host များတွင် မကြာခဏ ပေါ်လာလေ့ရှိသည်။
  • အကျိုးဆက် တွေ့ရှိထားသော မည်သည့်အထောက်အထားမဆို npm package အသစ်များကို ထုတ်ဝေရန် သို့မဟုတ် GitHub workflow များကို push လုပ်ရန် ချက်ချင်းအသုံးပြုနိုင်သည်။

Exfiltration

  • worm က GitHub repo အသစ်တစ်ခုကို ဖန်တီးပါတယ်လို့ အမည်ပေးထားပါတယ်။ Shai Hulud ပြီးတော့ double base64-encoded ကိုရေးပါတယ် data.json ပလက်ဖောင်းအသေးစိတ်အချက်အလက်များ၊ ပတ်ဝန်းကျင် dump များနှင့် လျှို့ဝှက်ချက်များပါရှိသည်။ မြင်တွေ့ရသည့်အတိုင်း၊ ဤဆူညံသောအပြုအမူကို ခုခံကာကွယ်သူများသည် ဘယ်မှာကြည့်ရမည်ကို သိပါက အလွယ်တကူ သိရှိနိုင်သည်။
  • ၎င်းသည် GitHub Actions workflow တစ်ခုကိုလည်း တည်ဆောက်ထားပြီး၊ မကြာခဏဆိုသလို branch တစ်ခုတွင် shai-hulud, စီးရီးလိုက် ${{ toJSON(secrets) }} ပြီးတော့ ဒေတာကို static webhook တစ်ခုဆီ တင်ပါတယ်။ ထို့အပြင်၊ ဒီ workflow ဟာ တစ်စုံတစ်ယောက်က တက်ကြွစွာ ဖယ်ရှားတဲ့အထိ ဆက်လက်တည်ရှိနေပါတယ်။

ဝါဒဖြန့်

  • ရှာဖွေတွေ့ရှိထားသော npm token တိုင်းနှင့်အတူ၊ payload သည် compromised maintainer ပိုင်ဆိုင်သော package အားလုံးကို စာရင်းပြုစုသည်။ ထို့နောက်၊ ၎င်းသည် tarball တစ်ခုချင်းစီကို ရယူပြီး bundle.js နှင့် postinstall entry တစ်ခုကို ထိုးသွင်းကာ package ကို ပြန်လည်ထုတ်ဝေသည်။
  • ရလဒ်အနေဖြင့်၊ ကူးစက်ခံရသော အထုပ်များစွာသည် နာရီပိုင်းအတွင်း ပေါ်လာနိုင်ပြီး ဂေဟစနစ်တစ်လျှောက် ပေါက်ကွဲမှုအချင်းဝက်ကို မြှောက်နိုင်သည်။

တည်တံ့မှုနှင့် ထိတွေ့မှု

  • worm သည် malicious workflows များကို အသက်ရှင်နေစေပြီး၊ များစွာသောကိစ္စများတွင် private repos များကို public သို့ ပြောင်းပေးသည်။ "- ရွှေ့ပြောင်းခြင်း" နောက်ဆက်။ အားလုံးပေါင်းလိုက်လျှင် ၎င်းသည် တိုက်ခိုက်သူအား ခြေကုပ်ယူထားနိုင်စေပြီး အချက်အလက်ယိုစိမ့်မှုကို အများဆုံးဖြစ်စေကြောင်း သေချာစေသည်။

သော့ချက်ရှာဖွေခြင်းမှတ်စု
ဒီလို ထူးထူးခြားခြား အသုံးပြုမှု ${{ toJSON(secrets) }} Actions workflows များတွင် ရှားပါးသည်။ ထိုကွောငျ့, အဖွဲ့များသည် ၎င်းကို အမဲလိုက်နေစဉ်အတွင်း အချက်ပြမှုမြင့်မားသော အညွှန်းကိန်းတစ်ခုအဖြစ် သဘောထားသင့်သည်။

သင်ရှာဖွေသင့်သော သန့်ရှင်းသပ်ရပ်သော workflow pattern

ဒီလို ထူးထူးခြားခြား အသုံးပြုမှု သို့ JSON (လျှို့ဝှက်ချက်များ) ဤဖြစ်ရပ်တွင် Actions သည် မြင့်မားသောအချက်ပြမှုညွှန်ပြချက်တစ်ခုဖြစ်သည်။

အဆင့်မြင့်ပြန့်ပွားမှု pseudo-code (ဘေးကင်းသည်၊ ဖော်ပြချက်)

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

ဘာကြောင့် ဒါက package ecosystem ထဲက တီကောင်တစ်ကောင်ဖြစ်ရတာလဲ

worm ဆိုတာ ကိုယ်တိုင်ပျံ့နှံ့တတ်တဲ့ malware တစ်မျိုးဖြစ်ပြီး ကိုယ်တိုင် operator အဆင့်တိုင်းမှာ မလိုအပ်ပါဘူး။ operating system တွေမှာ worm တွေဟာ network vulnerabilities တွေကို အသုံးချပြီး စက်တစ်လုံးကနေ နောက်တစ်လုံးကို ရွှေ့ပြောင်းလေ့ရှိပါတယ်။ ဆန့်ကျင်ဘက်အနေနဲ့ Shai-Hulud ဟာ npm registry အတွင်းမှာ လုပ်ဆောင်ပါတယ်။ သူ့ရဲ့ ထိရောက်တဲ့လမ်းကြောင်းကတော့ အထောက်အထား ပြန်လည်အသုံးပြုခြင်း.

worm သည် ခိုးယူခံရသော npm publish token များကို အခွင့်ကောင်းယူသည်။ တရားဝင် credential များရရှိသည်နှင့် ကူးစက်ခံရသော version များကို တူညီသော maintainer ပိုင်ဆိုင်သော အခြား package များအောက်တွင် ပြန်လည်ထုတ်ဝေသည်။ ထို့နောက်တွင် ထို package များကို မသိနားမလည်သော developer များ သို့မဟုတ် CI runner များမှ install လုပ်ပြီးနောက် cycle သည် ထပ်ခါတလဲလဲ ဖြစ်ပေါ်သည်။

ဤအကြောင်းကြောင့် လုံခြုံရေး උපදිරියට ... အမှောင်ထုShai-Hulud ကို အမျိုးအစားခွဲခြားသည် ကိုယ်တိုင်ပုံတူကူးသော တီကောင် ရိုးရိုး trojan တစ်ခု သို့မဟုတ် typosquatting ဖြစ်ရပ်တစ်ခုထက်။ ကွာခြားချက်က အရေးကြီးပါတယ်- trojan တစ်ခုဟာ ပုံမှန်အားဖြင့် host တစ်ခုကို ထိခိုက်စေပေမယ့် worm ကတော့ ဂေဟစနစ်တစ်ခုလုံးမှာ ၎င်းရဲ့သက်ရောက်မှုကို အလိုအလျောက် တိုးမြှင့်ပေးပါတယ်။

"ဘယ်လိုအလုပ်လုပ်လဲ" လှည့်ကွက်စာရွက်

Shai-Hulud ရဲ့ ဘဝစက်ဝန်းကို အကျဉ်းချုပ်ရရင် အားနည်းချက်တစ်ခုရှိပါတယ်။cis၎င်း၏ အဓိကအဆင့်များ၏ ခွဲခြမ်းစိတ်ဖြာချက်-

  • ပါဝင်တဲ့ အထုပ်တစ်ထုပ် တပ်ဆင်ပါ။ တပ်ဆင်ထားပြီးဖြစ်ပြီး bundle.js လုပ်ဆောင်သည်။
  • payload သည် ပတ်ဝန်းကျင် variable များကို dump လုပ်ပြီး၊ ဖိုင်များကို scan ဖတ်ကာ git history ကို run သည်။ ထရပ်ဖယ်ဟော့ဂ်နှင့် cloud metadata ဝန်ဆောင်မှုများကို မေးမြန်းသည်။ ထို့ကြောင့် တွေ့ရှိသော မည်သည့်လျှို့ဝှက်ချက်မဆို ချက်ချင်းအသုံးဝင်လာပါသည်။
  • Exfiltration ဟာ နည်းလမ်းနှစ်ခုနဲ့ ဖြစ်ပေါ်ပါတယ်- ပထမတစ်ခုကတော့ public repo တစ်ခု ဖန်တီးခြင်းပါ။ Shai Hulud double base64-encoded ဖြင့် data.jsonဒုတိယအနေနဲ့ GitHub Actions workflow တစ်ခုကို တည်ဆောက်ခြင်းအားဖြင့် ${{ toJSON(secrets) }} ဝဘ်ဟွတ်ခ်သို့။
  • ခိုးယူခံရသော npm token များကို အသုံးပြုခြင်းဖြင့်၊ worm သည် ထိန်းချုပ်ခံထားရသော maintainer ပိုင်ဆိုင်သော အခြား package အားလုံးကို တူညီသော malicious hook ဖြင့် ပြန်လည်ထုတ်ဝေသည်။ ဤနည်းအားဖြင့် ကူးစက်မှုသည် လျင်မြန်စွာ များပြားလာသည်။
  • နောက်ဆုံးတွင်၊ တိုက်ခိုက်သူသည် လျှို့ဝှက်ချက်များ၊ ဖြန့်ဝေရန် အထုပ်များ ပိုမိုကိုင်ဆောင်ထားပြီး ဇွဲ GitHub အကောင့်များနှင့် repositories များအတွင်း။

ဒီလိုတိုက်ခိုက်မှုမျိုးကို လက်တွေ့ကျကျ ဘယ်လိုရှောင်ရှားရမလဲ

Shai-Hulud က နှိုးစက်တစ်ခုပါပဲ။ တိုကင်တွေကို ခိုးယူပြီး ပြန်လည်ထုတ်ဝေတဲ့ worm ဟာ အနာဂတ်မှာ အန္တရာယ်မဟုတ်ပါဘူး၊ live မှာ ရှိနေပါတယ်။ npm package များ ဂေဟစနစ် ယနေ့။ ဤအမျိုးအစားကို ကာကွယ်ရန် ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှုအဖွဲ့များသည် ပရိုဂရမ်ရေးသားနိုင်သော၊ အလိုအလျောက်လုပ်ဆောင်နိုင်သော နှင့် တိုက်ရိုက်အကောင်အထည်ဖော်နိုင်သော ထိန်းချုပ်မှုများ လိုအပ်သည် CI/CD pipelines. ၎င်းတို့သည် သင်အကောင်အထည်ဖော်နိုင်သည့် ကာကွယ်ရေးနည်းလမ်းများဖြစ်သည်။ ဆိုက်ဂျီနီ.

တံခါးဝမှာ မကောင်းတဲ့ ပစ္စည်းတွေ ရပ်လိုက်ပါ

developer တွေ ဒါမှမဟုတ် CI အလုပ်တွေဆီ မရောက်ခင် npm package တွေနဲ့ tarball တွေကို scan ဖတ်သင့်ပါတယ်။ အရွယ်အစားကြီးတယ်။ bundle.js ဖိုင်များ၊ သံသယဖြစ်ဖွယ် ထည့်သွင်းမှုပြီးနောက် hooksနှင့် ရှုပ်ထွေးစေသော အမှတ်အသားများအားလုံးသည် အစောပိုင်း သတိပေးလက္ခဏာများအဖြစ် ဆောင်ရွက်ပါသည်။ ထို့အပြင်၊ အအေးခံကာလများနှင့် pinned ဗားရှင်းများကို ပြဋ္ဌာန်းခြင်းသည် pipelines သည် အသစ်စက်စက်၊ စစ်ဆေးခြင်းမပြုရသေးသော ထုတ်လွှတ်မှုများကို အလိုအလျောက် သုံးစွဲခြင်းမှ ကာကွယ်ပေးသည်။

ခိုင်မာစေ CI/CD ပုံမှန်အားဖြင့်

Guardrails in CI/CD မရှိမဖြစ်လိုအပ်ပါသည်။ ၎င်းတို့သည် script အသစ်များ သို့မဟုတ် binaries များကို မိတ်ဆက်ပေးသည့် merge များ သို့မဟုတ် install များကို ငြင်းပယ်ပါသည်။ တစ်ချိန်တည်းမှာပင်၊ လျှို့ဝှက်ချက်များကို serialize လုပ်သည့် သို့မဟုတ် ပြင်ပ post များကို ကြိုးစားသည့် workflow များကို ပိတ်ဆို့ပါသည်။ အဖွဲ့များသည် lockfile-only install များကိုလည်း လိုအပ်သင့်သည် (npm ci) အားလုံးတွင် pipelinedependency set များသည် ပြန်လည်ထုတ်လုပ်နိုင်ပြီး လုံခြုံနေမည်ဖြစ်သည်။

တိုကင်ပေါက်ကွဲမှု အချင်းဝက်ကို လျှော့ချပါ

လျှို့ဝှက်ချက်များသည် တစ်ခုတည်းသော ကျရှုံးမှုအမှတ်များ မဖြစ်သင့်ပါ။ ကုဒ်၊ config များနှင့် pipeline အထွက် ဖော်ထုတ်ခံရသော အထောက်အထားများ။ တိုကင်များကို အတိုင်းအတာကျဉ်းမြောင်းစွာ၊ သက်တမ်းတိုတောင်းသောကြောင့် ခွဲခြားသတ်မှတ်သင့်ပြီး ထိတွေ့မှုကို တွေ့ရှိသည့်အခါ အလိုအလျောက် လှည့်ပတ်သင့်သည်။ သံသယဖြစ်ဖွယ် postinstall ကို လုပ်ဆောင်သော host တွင် အသုံးပြုသည့် မည်သည့်တိုကင်ကိုမဆို စည်းမျဉ်းအရ အန္တရာယ်ရှိသည်ဟု သတ်မှတ်ပါ။

တီကောင်အပြုအမူကို စောစောစီးစီးမြင်ပါ

Anomaly ထောက်လှမ်း အဓိကသော့ချက်ဖြစ်သည်။ ဥပမာအားဖြင့် npm publish events များတွင် ရုတ်တရက် မြင့်တက်လာခြင်း၊ အကြောင်းပြချက်မရှိဘဲ ပေါ်လာသော workflow အသစ်များ သို့မဟုတ် ထူးဆန်းသော encoded ဖိုင်များဖြင့် ပြည့်နေသော public repos အသစ်များသည် worm လှုပ်ရှားမှုကို အချက်ပြနိုင်သည်။ ထို့ကြောင့် အဖွဲ့များသည် သတိပေးချက်များကို လျင်မြန်စွာ ထုတ်ပြန်ပြီး ဤသတိပေးလက္ခဏာများ ပြသသည့် maintainers သို့မဟုတ် runners များကို သီးခြားခွဲထားသင့်သည်။

တည်ဆောက်မှုများကို မပျက်စီးစေဘဲ လျင်မြန်စွာ ပြုပြင်ပါ

မြန်နှုန်းနှင့် ဘေးကင်းရေးသည် အတူတကွ လက်တွဲသွားရမည်။ အလိုအလျောက် pull requests အားနည်းချက်ရှိသော npm package များကို စစ်ဆေးပြီးသော ဗားရှင်းများဖြင့် အစားထိုးနိုင်သည်။ ထို့အပြင်၊ ရောက်ရှိနိုင်မှု နှင့် အသုံးချနိုင်စွမ်း ခွဲခြမ်းစိတ်ဖြာမှုက အဆင့်မြှင့်တင်မှုများကို အနည်းဆုံးနှင့် တည်ငြိမ်စွာရှိနေစေရန် သေချာစေသည်။ နောက်ဆုံးတွင်၊ ထိတွေ့မှုအတည်ပြုပြီးသည်နှင့် တိုက်ခိုက်မှုကို ပိုမိုပျံ့နှံ့ခြင်းမှ ကာကွယ်ရန် သန့်ရှင်းသောပုံများမှ ထိခိုက်ခံရသော CI runner များကို ပြန်လည်တည်ဆောက်သည်။

အလျှော့အတင်းအညွှန်းများ (IoCs)

Shai-Hulud ကို ခွဲခြမ်းစိတ်ဖြာတဲ့အခါ အဖွဲ့တွေက နှစ်ခုစလုံးကို သတိထားသင့်ပါတယ်။ static IoC များ ဖိုင်များတွင်နှင့် အပြုအမူဆိုင်ရာ IoC များ in pipelines. ဤအချက်ပြမှုများအတူတကွပေါင်းစပ်ခြင်းဖြင့် ရောဂါပိုးများကို စောစောစီးစီးသိရှိနိုင်ပြီး တီကောင်ပိုမိုပျံ့နှံ့မသွားမီ တုံ့ပြန်နိုင်စေပါသည်။

Static IoC များ

အောက်ပါ SHA-256 digests ကိုက်ညီမှုကို တွေ့ရှိရပါသည်။ bundle.js နမူနာများ:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

ထို့အပြင်၊ ဤထပ်တလဲလဲဖြစ်ပေါ်နေသော ပုံစံများကို သတိပြုပါ-

  • A bundle.js package root မှာ။
  • "postinstall": "node bundle.js" ထဲမှာ package.json.
  • အမည်ပေးထားသော သိုလှောင်ရုံများ Shai Hulud.
  • GitHub workflow များပါဝင်သည် ${{ toJSON(secrets) }}.

အပြုအမူဆိုင်ရာ IoC များ

ဖိုင်လက်မှတ်များအပြင်၊ worm လှုပ်ရှားမှုသည် အပြုအမူမှတစ်ဆင့် ၎င်းကိုယ်တိုင် ဖော်ထုတ်ပြသသည်။ ဥပမာအားဖြင့်-

  • ထိန်းသိမ်းသူတစ်ဦးတည်းထံမှ ရုတ်တရက် npm များထုတ်ဝေသည်။
  • ပြင်ပ endpoint များသို့ data များကို တွန်းပို့သည့် workflow အသစ်များ။
  • CI runner များထံမှ outbound POST တောင်းဆိုမှုများကို လှုံ့ဆော်ပေးပါသည်။
  • မကြာသေးမီက encoded blobs များဖြင့် public repos များကို ဖန်တီးခဲ့သည်။

အမြန်ရှာဖွေမှုများ

နိဂုံးချုပ်- Shai-Hulud မှ သင်ခန်းစာများ

အဆိုပါ Shai-Hulud ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှု npm packages တွေမှာ ဒီနေ့ခေတ် software supply chain ဘယ်လောက်ပျက်စီးလွယ်လဲဆိုတာ ပြသနေပါတယ်။ ဒီ worm ဟာ malicious code တွေကို ထပ်ထည့်ရုံသာမကဘဲ token တွေကို ခိုးယူပြီး data တွေပို့ကာ အလိုအလျောက် ပြန်လည်ထုတ်ဝေခဲ့ပါတယ်။ ဒီအတွက်ကြောင့် တိုက်ခိုက်မှုဟာ ရက်သတ္တပတ်တွေအစား နာရီပိုင်းအတွင်း ပျံ့နှံ့သွားခဲ့ပါတယ်။

developer များနှင့် DevOps အဖွဲ့များအတွက် သင်ခန်းစာများမှာ ရှင်းလင်းပါသည်-

  • ထည့်သွင်းမှုတိုင်းတွင် ကုဒ်များ လည်ပတ်ပါသည်။ သာမန် npm package တစ်ခုတောင် postinstall worm ကို ဝှက်ထားနိုင်ပါတယ်။
  • တိုကင်တိုင်းဟာ တန်ဖိုးမြင့်မားပါတယ်။ တစ်ကြိမ်ခိုးယူခံရပြီးသည်နှင့် malware ကို ပိုမိုဖြန့်ဝေရန် အသုံးပြုနိုင်ပါသည်။
  • တိုင်း pipeline စစ်ဆေးမှုများ လိုအပ်ပါသည်။ မပါဘဲ guardrails dependencies များ၊ workflows များနှင့် secrets များတွင်၊ ညှိနှိုင်းမှုတစ်ခုတည်းသည် ထုတ်လုပ်မှုအပေါ် လျင်မြန်စွာ ထိခိုက်နိုင်သည်။

ထို့ကြောင့် Shai-Hulud ကဲ့သို့သော တိုက်ခိုက်မှုများကို ရပ်တန့်ရန်အတွက် အလိုအလျောက်လုပ်ဆောင်နိုင်ပြီး အကောင်အထည်ဖော်ရန်လွယ်ကူသော ထိန်းချုပ်မှုများ လိုအပ်ပါသည်။ အဖွဲ့များသည် install မလုပ်မီ npm package များကို scan ဖတ်သင့်ပြီး၊ lockfile build များကို အသုံးပြုသင့်ပြီး၊ ထူးဆန်းသော publishing activity များကို ရှာဖွေသင့်ပြီး၊ token များကို တိုကင်သက်တမ်းတိုတိုထားသင့်ပါသည်။ ဤအဆင့်များသည် ရွေးချယ်နိုင်သော အဆင့်များ မဟုတ်တော့ပါ။ ယင်းအစား၊ ၎င်းတို့သည် ခေတ်သစ်တွင် ခံနိုင်ရည်ရှိမှု၏ အခြေခံအုတ်မြစ်များဖြစ်သည်။ pipelines.

Xygeni မှာ Shai-Hulud ထောက်ပံ့ရေးကွင်းဆက်တိုက်ခိုက်မှုကို open source ဂေဟစနစ်တစ်ခုလုံးအတွက် သတိပေးချက်တစ်ခုအဖြစ် ကျွန်ုပ်တို့မြင်ပါတယ်။ ရေရှည်တည်တံ့တဲ့ ရှေ့ဆက်နည်းလမ်းကတော့ ကုဒ်၊ npm packages များနှင့် development လုပ်ငန်းစဉ်ထဲသို့ ထောက်ပံ့ရေးကွင်းဆက်လုံခြုံရေးကို တိုက်ရိုက်ယူဆောင်လာရန်ဖြစ်သည်။ pipelineချိတ်ဆက်ပါ။

Shai-Hulud မှာ compromised ဖြစ်တယ်လို့ report လုပ်ထားတဲ့ npm package တွေနဲ့ version တွေရဲ့ စာရင်းအပြည့်အစုံကို အောက်မှာဖော်ပြထားပါတယ်။ သင့်ရဲ့ lockfiles, registry တွေနဲ့ CI တွေကို စစ်ဆေးဖို့ အသုံးပြုပါ။ pipelineထိတွေ့မှုအတွက် s။

အန္တရာယ်ရှိသော ပက်ကေ့ဂျ်များစာရင်း

📦 အားနည်းချက်ရှိသော npm ပက်ကေ့ဂျ်များ၏ အစမ်းကြည့်ရှုခြင်း

package အမည် ဗားရှင်း ထုတ်ဝေသည့်နေ့စွဲ
json-စည်းမျဉ်း-အင်ဂျင်-ရိုးရှင်းအောင်ပြုလုပ်ထားသည်0.2.12025-09-14T17:58:51.203Z
လေယာဉ်မှူး0.8.82025-09-14T18:35:07.600Z
mcp-ဗဟုသုတ-ဂရပ်1.2.12025-09-14T18:35:09.494Z
လေထီး0.3.12025-09-14T18:35:09.521Z
ခုန်ပေါက်0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/အတည်ပြုချက်0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ အားနည်းချက်ရှိသော ပက်ကေ့ဂျ်များစာရင်းအပြည့်အစုံကို ကြည့်ရှုပါ
package အမည် ဗားရှင်း ထုတ်ဝေသည့်နေ့စွဲ
json-စည်းမျဉ်း-အင်ဂျင်-ရိုးရှင်းအောင်ပြုလုပ်ထားသည်0.2.12025-09-14T17:58:51.203Z
လေယာဉ်မှူး0.8.82025-09-14T18:35:07.600Z
mcp-ဗဟုသုတ-ဂရပ်1.2.12025-09-14T18:35:09.494Z
လေထီး0.3.12025-09-14T18:35:09.521Z
ခုန်ပေါက်0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/အတည်ပြုချက်0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
@hestjs/cqrs0.1.62025-09-14T20:45:55.966Z
@hestjs/စကေးလာ0.1.72025-09-14T20:45:56.386Z
ng2-ဖိုင်-အပ်လုဒ်7.0.32025-09-15T02:44:29.555Z
capacitor-အကြောင်းကြားချက်ကိုင်တွယ်သူ0.0.22025-09-15T04:54:48.431Z
capacitor-plugin-vonage1.0.22025-09-15T04:54:48.501Z
capacitor-plugin-healthapp0.0.22025-09-15T04:54:48.704Z
capacitorandroidခွင့်ပြုချက်များ0.0.42025-09-15T04:54:48.753Z
voip-callkit1.0.22025-09-15T04:54:49.223Z
capacitor-plugin-ihealth1.1.82025-09-15T04:55:08.113Z
@art-ws/common2.0.222025-09-15T05:21:15.411Z
@art-ws/config-eslint2.0.42025-09-15T05:21:17.199Z
ngx-ws1.1.52025-09-15T05:21:17.514Z
@အနုပညာ-ws/slf2.0.152025-09-15T05:21:17.524Z
@art-ws/http-server2.0.212025-09-15T05:21:17.745Z
pm2-gelf-json1.0.42025-09-15T05:21:18.413Z
@အနုပညာ-ws/di2.0.282025-09-15T05:21:18.488Z
@art-ws/di-node2.0.132025-09-15T05:21:18.849Z
@art-ws/config-ts2.0.72025-09-15T05:21:19.408Z
@art-ws/db-context2.0.212025-09-15T05:21:19.814Z
@art-ws/openapi0.1.92025-09-15T05:21:19.969Z
@art-ws/ဝဘ်-အက်ပ်1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
sca-tools-software-composition-analysis-tools
သင့်ဆော့ဖ်ဝဲလ်အန္တရာယ်များကို ဦးစားပေးသတ်မှတ်ခြင်း၊ ပြုပြင်ခြင်းနှင့် လုံခြုံစေခြင်း
သင့်ရဲ့ အခမဲ့အကောင့်ကို ရယူလိုက်ပါ။
အကြွေးဝယ်ကဒ်မရှိပါ။

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

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