TL; DR
npm operator တစ်ခုတည်းသည် TypeScript “utility” package အတုများကို ထုတ်ဝေရန် ခြောက်ပတ်ကြာ အချိန်ယူခဲ့သည်။ ts-form-utils, ts-project-lintနှင့် ts-enum-helper.
package များသည် တရားဝင်ပုံပေါ်သော validation helper ငယ်များကို ဖော်ထုတ်သော်လည်း၊ အစစ်အမှန် payload သည် install လုပ်ခြင်း သို့မဟုတ် ပထမဆုံးလိုအပ်ခြင်းတွင် လုပ်ဆောင်ပြီး host fingerprinting၊ GitHub organization discovery၊ repository cloning နှင့် source-code exfiltration တို့ကို လုပ်ဆောင်သည်။
malware သည် တန်ဖိုးမြင့် GitHub အဖွဲ့အစည်းများစွာ အပါအဝင် ပစ်မှတ်ထားခဲ့သည်။ Shopify repositories များသည် ထို့နောက် ရောက်ရှိနိုင်သော source tree များကို archive လုပ်ပြီး centralized collection endpoint သို့ exfiltrate လုပ်သည်။
compromise workflow ရဲ့ တစ်စိတ်တစ်ပိုင်းအနေနဲ့၊ payload ဟာ commitsa ဖိုင်ကို Google ရဲ့ ကိုယ်ပိုင် coding identity အဖြစ် အယောင်ဆောင်ပြီး victim repositories ထဲကို ပြန်ထည့်ပါတယ်။ google-labs-jules[bot].
ကျွန်ုပ်တို့သည် ကမ်ပိန်းကို ခြေရာခံခဲ့သည် — အမည်ရှိ ဂျူးလ်စ်ဂျက်ကာ — ကုဒ်ဝှက်ထားသော နှင့် sandbox-aware မျိုးကွဲများ အပါအဝင် publisher နယ်ပယ်များစွာနှင့် အနည်းဆုံး payload မျိုးဆက် ငါးခုတွင်။
အသစ်ထွက်ရှိလာတဲ့ ဗားရှင်းဟာ malware-analysis infrastructure ကို ပစ်မှတ်ထားပါတယ်။ ခွဲခြမ်းစိတ်ဖြာမှုပတ်ဝန်းကျင်အတွင်းမှာပဲ activate လုပ်ပါတယ်။ cloud metadata service-account tokens တွေကိုလည်း ခိုးယူပါတယ်။ Kubernetes control planes တွေနဲ့ cloud storage buckets တွေကိုလည်း probe လုပ်ပါတယ်။
payload မျိုးဆက်အားလုံးတွင် မျှဝေထားသော အဓိက IOC သည် collection endpoint ဖြစ်သည် aaronstack[.]com/jules-collect.
ပြင်းထန်မှု- အရေးကြီး။
တိုက်ခိုက်မှု- ၎င်းမည်သို့အလုပ်လုပ်သည်
JulesJacker package တိုင်းသည် template တစ်ခုတည်းကို လိုက်နာသည်။ မြတ်စွာဘုရား MIT လိုင်စင်ရှိပြီး ချိတ်ဆက်ထားသော source repository မပါဝင်သော ကောင်းမွန်သော TypeScript helper တစ်ခုကို ကြော်ငြာသည်။ index.js အမှန်တကယ်အလုပ်လုပ်သော လုပ်ဆောင်ချက်အနည်းငယ် — email regexes၊ enum maps၊ lint rule table များ — ကို တင်ပို့သောကြောင့် package ကို အမှန်တကယ်တင်သွင်းသော developer သည် ယုတ္တိတန်သောအပြုအမူကို မြင်နိုင်သည်။ မကောင်းသောအကြံအစည်သည် အခြားနေရာတွင် ရှိနေသည်- တွင် တပ်ဆင်ပါ။ ချိတ်ဆွဲထားပါ၊ သို့မဟုတ် အောက်ခြေရှိ ဘလောက်တစ်ခုတွင် index.js module လိုအပ်တဲ့အချိန်မှာ execute လုပ်ပါတယ်။
payload များသည် ရှင်းလင်းစွာ နံပါတ်တပ်ထားသော အတွင်းပိုင်းအဆင့်များမှတစ်ဆင့် တိုးတက်ပြောင်းလဲလာခဲ့သည် (အော်ပရေတာသည် ၎င်း၏ကိုယ်ပိုင် telemetry ဖြစ်ရပ်များကို အညွှန်းတပ်သည်)။ sc၄-, sc၄-, sc၄-, စသည်ဖြင့်)၊ ထိုဆင့်ကဲဖြစ်စဉ်ကို ကြည့်ရှုခြင်းသည် လှုပ်ရှားမှုကို နားလည်ရန် အရှင်းလင်းဆုံးနည်းလမ်းဖြစ်သည်။
မျိုးဆက် ၁–၂: ထောက်လှမ်းရေးနှင့် git-config ခိုးယူမှု
အစောဆုံး package တွေက ရိုးရှင်းတဲ့ infostealers တွေပါ။ install လုပ်တဲ့အခါ environment variable တွေ၊ GitHub CLI hosts file နဲ့ global git configuration တွေကို စုဆောင်းခဲ့ပါတယ်။git config –global –list, git အဝေးထိန်း -v), ထို့နောက် bundle ကို collection endpoint သို့ POST လုပ်ခဲ့သည်။ ၎င်းသည် operator ၏ လက်မှတ်ကို တည်ဆောက်ပေးသည်- “TypeScript form validation utilities” cover story၊ single domain သို့ outbound beacon နှင့် consumer data ထက် developer credentials များအပေါ် အကြိုက်။
မျိုးဆက် ၃: hypervisor နှင့် kernel escape probes များ
အလယ်အလတ်ကမ်ပိန်းဗားရှင်းတစ်ခုသည် အခြေခံအဆောက်အအုံတိုက်ခိုက်မှုများသို့ အပြင်းအထန်ပြောင်းလဲခဲ့သည်။ config များကိုခိုးယူမည့်အစား recon harness ကိုစုံစမ်းစစ်ဆေးခဲ့သည်။ AF_VSOCK socket များ၊ virtio MMIO ဒေသများ၊ /dev/memနှင့် kernel hardening flags များ၊ နှင့် virtual machine သို့မဟုတ် container မှ ခွဲထွက်ရန် ကြိုးပမ်းမှုများနှင့် ဆက်စပ်နေသော sysrq-triggered kernel crash များပင် ကြိုးပမ်းခဲ့သည်။ telemetry tags များ (s0-vmm-recon, s1-vmm-vsock-fuzz, s2-vmm-mmio, s3-kernel-probe) ရည်ရွယ်ချက်ကို ရှင်းလင်းစွာ ဖော်ပြခဲ့သည်။ ဤမူကွဲသည် ရှင်းရှင်းလင်းလင်း ရည်ရွယ်ခဲ့သည် cloud-sandbox နှင့် serverless-runner ပတ်ဝန်းကျင်များ — မယုံကြည်ရသော ကုဒ်များကို တည်ဆောက်ပြီး စမ်းသပ်သည့် ယာယီ VM အမျိုးအစား။
မျိုးဆက် ၃ (SC3): cross-repo ရေးသားသည့် worm
ကမ်ပိန်းရဲ့ ဒြပ်ဆွဲအားဗဟိုဟာ ကိုယ်တိုင်ပျံ့နှံ့နိုင်တဲ့ repo သူခိုးတစ်ယောက် ဖြစ်လာခဲ့ပါတယ်။ ထည့်သွင်းလိုက်တဲ့အခါ payload ဟာ အဆင့်ငါးဆင့်ပါ အချိန်သတ်မှတ်ထားတဲ့ အစီအစဉ်တစ်ခုကို လုပ်ဆောင်ပါတယ်-
- ဇာတ်စင် 0 (~100 ms): host ကို လက်ဗွေရာဖြင့် ပေးပို့ခြင်း — hostname၊ user info၊ git identity။
- ဇာတ်စင် 1 (~၃ စက္ကန့်): စစ်ဆေးခြင်းဖြင့် သားကောင်သည် မည်သည့်အဖွဲ့အစည်းတွင် ပါဝင်သည်ကို ဆုံးဖြတ်ပါ git အဝေးထိန်း -vထို့နောက် hardcoded တစ်ခုကို ရှာဖွေပါ ORG_CONFIG ဇယားနှင့် စမ်းသပ် repo ကို ဝင်ရောက်ခွင့် git ls-remote — တိုက်ခိုက်သူထိန်းချုပ်ထားသော SSRF proxy မှတစ်ဆင့် လမ်းကြောင်းပြောင်းထားသည် http://git@192.168.0.1:8080.
- ဇာတ်စင် 2 (~၁၀ စက္ကန့်): git clone ပါ target list ထဲက ရောက်နိုင်တဲ့ repository တိုင်းကို tarball လုပ်ပြီး tree ကို gzip လုပ်ပါ၊ base64-encode လုပ်ပြီး chunk-exfiltrate လုပ်ပါ။
- ဇာတ်စင် 3 (~၄၅ စက္ကန့်): “ဝင်ရောက်ခွင့်အထောက်အထား” — ရေးသားနိုင်သော repo တစ်ခုကို ကူးယူပါ၊ SECURITY-POC.md အမည်ရှိ ဖိုင်တစ်ခုကို drop လုပ်ပါ၊ ထို့နောက် commit author ကို google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> လို့သတ်မှတ်ထားပြီး message ရဲ့အလုပ်ကတော့ dependency cache ကို update လုပ်ပြီး victim ရဲ့ mainline branch ကို push လုပ်ပါ။
hardcoded ပစ်မှတ်စာရင်းသည် ယေဘုယျမဟုတ်ပါ။ ၎င်းတွင် သုံးဆယ်ထက်ပို၍ စာရင်းပြုစုထားသည် Shopify အမည်ဖြင့် သိုလှောင်ရုံများ — Shopify/shopify, Shopify/identity, Shopify/ငွေတောင်းခံလွှာ, Shopify/vault, Shopify/လျှို့ဝှက်ချက်များ, Shopify/အခြေခံအဆောက်အအုံ, Shopify/.githubနှင့် အခြားအရာများစွာ — စမ်းသပ်အဖွဲ့အစည်းတစ်ခုနှင့်အတူ အာရွန်စတက်ခ် ဘားနက်စ်၊ အော်ပရေတာသည် ထိန်းချုပ်ပြီး ရေးသားရန်ပစ်မှတ်အဖြစ် အသုံးပြုပုံရသည်။
မျိုးဆက် ၄ (SC4): ကုဒ်ဝှက်ပြီး ဂိတ်ပိတ်ထားသည်
developer-facing version အသစ်မှာ SC3 worm ရဲ့အပေါ်မှာ evasion layer နှစ်ခုထပ်ထည့်ထားပါတယ်။
ပထမဦးစွာ၊ payload သည် plaintext အဖြစ် မပို့တော့ပါ။ တကယ့်ယုတ္တိဗေဒသည် AES-256-CBC-encrypted blob တွင် ရှိနေသည်။ lib/.perf.datIV ကို ၎င်း၏ ပထမဆုံး ဆယ့်ခြောက်ဘိုက်တွင် သိမ်းဆည်းထားသည်။ loader သည် index.js ဆက်စပ်ထားသော string အပိုင်းအစများမှ decryption key ကို ပြန်လည်တည်ဆောက်ပြီး blob ကို decrypt လုပ်ပြီး ၎င်းကို run သည် လုပ်ဆောင်ချက်အသစ် ()မော်ဂျူးအမည်များကိုပင် static scanners များကို ရှောင်ရှားရန် ခွဲထုတ်ထားသည် — require('crypt' + 'o'), လိုအပ်သည် ('f' + 's').
ဒုတိယအချက်အနေနဲ့၊ ၎င်းသည် host-gated ဖြစ်သည်။ မျိုးကွဲတစ်ခုမှာ decrypt လုပ်ပြီး လည်ပတ်သည့်အခါတွင်သာ os.hostname() တန်းတူ ဒက်ဗ်ဘောက်စ် or ubuntu-fc-uvm (Firecracker microVM မူရင်း) သို့မဟုတ် substring ပါရှိသည် ဒက်ဗ်ဘောက်စ်။နောက်ထပ်တံခါးတစ်ခုရှိနေခြင်းအပေါ် .ဂျူးလ်စ်/ အလုပ်လုပ်သော လမ်းညွှန်-
တစ်နည်းအားဖြင့်ဆိုရသော် SC4 payload ကို သာမန် developer ၏ laptop တွင် ငြိမ်သက်နေစေရန်နှင့် automated AI-agent အတွင်း၌သာ နိုးထလာစေရန် ဒီဇိုင်းထုတ်ထားသည်။ sandbox ပတ်ဝန်းကျင်များ အော်ပရေတာက အမှန်တကယ် ညှိနှိုင်းချင်နေပါတယ်။
ဓာတ်ခွဲခန်းကိုဖွင့်ခြင်း- ခွဲခြမ်းစိတ်ဖြာမှု-အခြေခံအဆောက်အအုံ မူကွဲ
ကမ်ပိန်းထဲမှာ အထူးခြားဆုံး ပက်ကေ့ချ်၊ ts-enum-helperdeveloper တွေ ဒါမှမဟုတ် Shopify ကို လုံးဝတိုက်ခိုက်တာမဟုတ်ပါဘူး။ postinstall.sh ဂိမ်းကို ပေးသည့် ဂိတ်တစ်ခုဖြင့် ပွင့်လာသည်-
malware-analysis platform အတွက် သီးသန့် environment variable တစ်ခုကို သတ်မှတ်မထားမချင်း script က ဘာမှမလုပ်ပါဘူး။ သတ်မှတ်ပြီးတဲ့အခါ payload က ဒီ sandbox လိုမျိုး package တွေကို ဖောက်ခွဲပြီး လေ့လာဖို့ ရှိနေတဲ့ sandbox အတွင်းမှာ လည်ပတ်နေတယ်ဆိုတာ သိပြီး တန်ပြန်တိုက်ခိုက်ပါတယ်။
၎င်းသည် ဦးစွာ GCP ဝန်ဆောင်မှုအကောင့် OAuth တိုကင်ကို instance metadata server မှ ဆွဲထုတ်ပြီး ထုတ်ယူသည်။ ထို့နောက် ထိုတိုကင်ကို အသုံးပြု၍ Kubernetes ထိန်းချုပ်မှုလေယာဉ် တွင်ရောက်ရှိနိုင်သည်။ kubernetes.default.svc:
- ClusterRoleBindings၊ ClusterRoles နှင့် Nodes များကို စာရင်းပြုစုသည်။
- pods၊ secrets နှင့် configmaps များကို စစ်ဆေးသည် kube-စနစ်, ပျက်ကွက်, kube-public, kube-node-leaseနှင့် ခွဲခြမ်းစိတ်ဖြာမှု အမည်နေရာ။
- ခိုးယူခံရသော အထောက်အထားကို အတိအကျ လုပ်ဆောင်ခွင့်ပြုထားသည့်အရာကို မြေပုံဆွဲရန် SelfSubjectAccessReview ခေါ်ဆိုမှုများ ပြဿနာများ။
နောက်ဆုံးတွင် ၎င်းသည် hardcoded GCP project ID မှတည်ဆောက်ထားသော Google Cloud Storage bucket name များကို brute-forces လုပ်သည် (ရှားပါး-လက်မှတ်ထိုးသူ-၄၃၇၆၀၃-p၉) နှင့် ပရောဂျက်နံပါတ်၊ ခန့်မှန်းပေါင်းစပ်မှုများကဲ့သို့သော *-တည်ဆောက်မှုများ, *-ရှေးဟောင်းပစ္စည်းများနှင့်အများအပြား malysis ရှေ့ဆက်များ (malysis ရလဒ်များ, malysis-packages များ, malysis စကင်န်များ). တုံ့ပြန်မှုကုဒ်နှင့် body တိုင်းကို မှတ်တမ်းတင်ပြီး တူညီသောသို့ ပြန်တင်ထားသည်။ ဂျူးလ်စ်-စုဆောင်းမှု အဆုံးမှတ်
ဒါဟာ ကာကွယ်သူတွေရဲ့ ကိုယ်ပိုင်အခြေခံအဆောက်အအုံကို တိုက်ခိုက်ဖို့ သီးသန့်တည်ဆောက်ထားတဲ့ supply-chain payload ရဲ့ ရှားရှားပါးပါးဖြစ်ရပ်ပါ။ payload တွေထဲမှာ အပြုအမူကို ဘောင်ခတ်ထားတဲ့ မှတ်ချက်တွေအဖြစ် ပေါ်လာတဲ့ အပိုင်းအစတွေဖြစ်တဲ့ “Security Research PoC … cross-repo write via overscoped git proxy token” ဟာ runtime target က Shopify monorepo ဖြစ်စေ၊ analysis cluster ရဲ့ metadata server ဖြစ်စေ အတူတူပဲ အကြောင်းပြချက်ပါပဲ။
အချိန်ဇယားနှင့် လုပ်ငန်းနယ်ပယ် ရွှေ့ပြောင်းခြင်း
JulesJacker ဟာ တစ်ချက်တည်းနဲ့ ပြီးသွားတာမျိုး မဟုတ်ပါဘူး။ registry မှာ နာမည်ပြောင်းလိုက်ရုံနဲ့တင် ကျော်လွှားနိုင်တဲ့ ရေရှည်လုပ်ဆောင်မှုတစ်ခုပါ။
| ဘယ်တော့လဲ | အဖြစ်အပျက် |
|---|---|
| ဧပြီလလယ် 2026 | ပထမဆုံး package များသည် မူရင်း publisher နယ်ပယ်အောက်တွင် ပေါ်လာသည်- TS-utility façade၊ environment နှင့် git-config exfiltration။ |
| မေလ 2026 ခုနှစ်အစောပိုင်း | Hypervisor နှင့် kernel-escape reconnaissance variant ကို ထုတ်ဝေလိုက်ပါပြီ။ |
| ၂၀၂၆ ခုနှစ် မေလလယ်မှ နှောင်းပိုင်းအထိ | SC3 cross-repo write worm သည် Shopify-targeted payloads များနှင့်အတူ ပေါ်လာသည်။ google-labs-jules[bot] အယောင်ဆောင်ခြင်း။ SC4 သည် AES-encrypted နှင့် host-gated loaders များကို မိတ်ဆက်ပေးသည်။ |
| မေလနှောင်းပိုင်း 2026 | npm သည် မူရင်း publisher scope ကို ဖယ်ရှားသည်။ package name များသည် security-holding placeholders များကို ဗလာအဖြစ် သတ်မှတ်သည်။ |
| တစ်ပတ်တည်း | အော်ပရေတာသည် ပုံစံတူနီးပါးရှိသော scope သို့ ရွှေ့ပြောင်းပြီး analysis-infrastructure variant အပါအဝင် worm ကို ပြန်လည်ထုတ်ဝေသည်။ |
ရွှေ့ပြောင်းခြင်းကိစ္စဟာ ကာကွယ်သူတွေ ကိုင်တွယ်သင့်တဲ့ အပိုင်းပါ။ ပထမဆုံး scope ကို ဖယ်ရှားလိုက်ရုံနဲ့ campaign ကို အဆုံးသတ်သွားစေတာမျိုး ဒါမှမဟုတ် နှေးကွေးသွားစေတာမျိုးတောင် မရှိပါဘူး။ အော်ပရေတာဟာ မူရင်းနဲ့ နာမည်တစ်ခုတည်း ကွဲပြားတဲ့ parallel scope တစ်ခုကို စီစဉ်ပြီးဖြစ်ပြီး အဲဒီအပတ်အတွင်းမှာပဲ ဆက်လက်ထုတ်ဝေခဲ့ပါတယ်။ ဒီစာကို ရေးသားနေချိန်မှာပဲ၊ scope အသစ်ရဲ့ ts-form-utils များ (ဗားရှင်း ၁.၀.၀ မှ ၁.၁.၀ အထိ)၊ ၎င်း၏ ts-project-lint (၁.၀.၀ နှင့် ၁.၁.၀) နှင့် သီးခြားရပ်တည်နေသော ts-enum-helper (1.0.0) ကို ထည့်သွင်းနိုင်ဆဲဖြစ်သည်။
ညှိနှိုင်းမှု၏ ညွှန်ပြချက်များ
အောက်ဖော်ပြပါ အညွှန်းကိန်းအားလုံးကို ပက်ကေ့ဂျ်ရင်းမြစ်နှင့် တိုက်ဆိုင်စစ်ဆေးပြီးဖြစ်သည်။
| ပုံစံ | အညွှန်းကိန်း | မှတ်စုများ |
|---|---|---|
| ကွန်ရက် (C2) | aaronstack[.]com/jules-collect | မျိုးဆက်တိုင်းတွင် single collection endpoint; JSON telemetry နှင့် base64-gzip repository tarball chunks များကို ရရှိသည်။ |
| ကွန်ရက် (SSRF ပရောက်စီ) | http://git@192.168.0.1:8080 | ပစ်မှတ်အဖွဲ့အစည်း repositories များသို့ရောက်ရှိရန်အသုံးပြုသည့် overscope လုပ်ထားသော git proxy token အတွက် ရှေ့မျက်နှာစာ။ |
| ကွန်ရက် (cloud) | metadata.google.internal/computeMetadata/v1kubernetes.default.svcstorage.googleapis.com/storage/v1/b | token theft နှင့် Kubernetes control-plane reconnaissance အတွက်သာ analysis-infrastructure variant မှ အသုံးပြုသည်။ |
| အထောက်အထား | google-labs-jules[bot]161369871+google-labs-jules[bot]@users.noreply.github.com | အတု commit စာရေးသူ၏ အမှတ်အသားကို သားကောင်၏ အဓိက ဌာနခွဲများထဲသို့ တွန်းပို့လိုက်သည်။ |
| ဖိုင်မှတ်တမ်း | lib/.perf.dat | AES-256-CBC-encrypted payload blob; IV ကို ပထမ 16 bytes တွင် သိမ်းဆည်းထားပြီး key ကို dynamically ပြန်လည်တည်ဆောက်ထားသည် index.js. |
| ဖိုင်မှတ်တမ်း | SECURITY-POC.md | ပြုတ်ကျပြီး commitမက်ဆေ့ချ်နဲ့အတူ သားကောင်သိုလှောင်ရုံတွေထဲကို ပြန်ထည့်လိုက်တယ် chore: update dependency cache. |
| ဖိုင်မှတ်တမ်း | scripts/postinstall.sh | ဂိတ်ချထားသည် $MALYSIS_ANALYSIS_ID; သည် analysis-infrastructure-targeting variant ကို ဖော်ထုတ်ပေးသည်။ |
| အမူအကျင့် | os.hostname() စစ်ဆေးရန် devbox / ubuntu-fc-uvm | payload decryption နှင့် execute မလုပ်မီ Sandbox နှင့် AI-agent environment သည် gating လုပ်သည်။ |
| အမူအကျင့် | .jules/ နှင့် /app/.jules လမ်းညွှန်ဖတ်ရှုမှုများ | AI-agent အလုပ်ခွင်ပတ်ဝန်းကျင်များကို ရှင်းလင်းစွာ ပစ်မှတ်ထားခြင်း။ |
| အမူအကျင့် | sc1-, sc3-, sc4-, s0-vmm-recon | ထောက်လှမ်းခြင်းနှင့် ရှာဖွေခြင်းအတွက် အသုံးဝင်သော အော်ပရေတာ-သတ်မှတ်ထားသော တယ်လီမက်ထရီ အဆင့် အညွှန်းများ။ |
| Cloud ပစ်မှတ် | rare-signer-437603-p9malysis-* ခန့်မှန်းချက်များ | analysis-infrastructure variant တွင် ထည့်သွင်းထားသော hardcoded GCP project identifiers များနှင့် storage-bucket enumeration patterns များ။ |
| ထုပ်ပိုးပုံသဏ္ဍာန် | repository field မပါဝင်သော TS-utility package façade | တသမတ်တည်းရှိသော ကမ်ပိန်းပုံစံ- အန္တရာယ်ရှိသော payloads များထည့်သွင်းထားသော အတု TypeScript utility package များ postinstall hooks သို့မဟုတ် ပူးတွဲပါရှိသော index.js. |




