TL; កុង
អ្នកបោះពុម្ពផ្សាយ npm តែមួយ ddjidd5640បានបង្កើតកាតាឡុកឧបករណ៍សុវត្ថិភាព Web3 ក្លែងក្លាយចំនួន 22 កញ្ចប់ក្រោមម៉ាកក្លែងក្លាយដូចជា សមាគមសន្តិសុខគ្រីបតូ, សវនកម្ម Web3 សមូហភាពនិង សម្ព័ន្ធភាពសន្តិសុខ DeFi.
កញ្ចប់ទាំងនេះមិនមើលទៅដូចជាយុទ្ធនាការ typosquat សាមញ្ញនោះទេ។ ពួកវាមើលទៅដូចជាប្រព័ន្ធអេកូឡូស៊ីសុវត្ថិភាពដែលមានម៉ាកយីហោ ដែលគាំទ្រដោយអង្គការ GitHub ទទេដែលត្រូវគ្នា និងឈ្មោះឧបករណ៍ MCP ដែលគួរឱ្យជឿជាក់ដូចជា search_leaked_credentials, validate_chain_keyនិង deploy_safe.
យុទ្ធនាការនេះបែងចែកជា ក្រុមគ្រួសារបន្ទុកសកម្មពីរ និងក្រុមមួយដែលមិនដំណើរការ.
វ៉ារ្យ៉ង់ A មានកញ្ចប់ប្រមូលព័ត៌មានបញ្ជាក់អត្តសញ្ញាណចំនួន ៨។ ស្គ្រីបក្រោយការដំឡើងអានឃ្លាំងសម្ងាត់ក្នុងស្រុក ខណៈពេលដែលកញ្ចប់មួយ scanner.js ដំណើរការនៅពេលដែលភ្នាក់ងារ AI ហៅឧបករណ៍ MCP របស់កញ្ចប់ ដោយស្វែងរកកូនសោកាបូប ម៉ូណេម៉ិច BIP39 ថូខិន API និងព័ត៌មានសម្ងាត់ផ្សេងទៀត។
វ៉ារ្យ៉ង់ ខ មាន droppers គោលពីរដែលមានមូលដ្ឋានលើ Pinggy ចំនួន 5។ កញ្ចប់ទាំងនេះទាញយក និងប្រតិបត្តិ payload ពីចម្ងាយក្នុងអំឡុងពេលដំឡើងក្រោយ ជាមួយ foundry-deploy-helper:1.8.96 ទម្លាក់ឯកសារដែលអាចប្រតិបត្តិបានដែលផ្ដាច់ចេញនៅ /tmp/.node-cache.
វ៉ារ្យ៉ង់ C មានកញ្ចប់អសកម្មចំនួន 9 ដែលមិនទាន់មាន payload ក្រោយការដំឡើងច្បាស់លាស់នៅឡើយទេ ប៉ុន្តែអ្នកបោះពុម្ពផ្សាយ គំរូម៉ាកយីហោ និងការដាក់ឈ្មោះដែលផ្តោតលើ Web3 ដូចគ្នា។
មានតែ 8 ក្នុងចំណោម 22 កញ្ចប់ប៉ុណ្ណោះដែលត្រូវបានសម្គាល់នៅគ្រប់ទីកន្លែងដែលយើងអាចមើលឃើញ; 14 ដែលនៅសល់នៅតែដំណើរការលើ npm នៅពេលវិភាគ។
ភាពធ្ងន់ធ្ងរ៖ ធ្ងន់ធ្ងរ។
ការវាយប្រហារ៖ បន្ទុកពីរនៅក្នុងទូខោអាវតែមួយ
ទូខោអាវគឺជាម៉ាក។ បើក README នៃ crypto-credential-scanner ហើយអ្នកនឹងត្រូវបានប្រាប់ថាវាជាម៉ាស៊ីនស្កេន credential ដែលបង្កើតឡើងដោយ Crypto Security Guild។ បើកទំព័រ defi-threat-scanner ហើយអ្នកត្រូវបានប្រាប់ថាវាជាឧបករណ៍របស់ DeFi Security Alliance។ បើក web3-secrets-detector ហើយវាគឺជា Web3 Audit Collective។ គ្មានសមូហភាពទាំងនេះមានជាអង្គការទេ។ ពួកវាមានជាអង្គការ GitHub ទទេដែលមានគោលបំណងតែមួយគត់គឺដើម្បីបំពេញតំណភ្ជាប់ "អ្នកនិពន្ធ" របស់ទំព័រ npm។
វ៉ារ្យ៉ង់ A៖ សកម្មភាពមុនពេលហោះហើរក្រោយការដំឡើង និងសកម្មភាពសំខាន់ពេលវេលា MCP
កញ្ចប់ Variant-A ទាំង 8 ទាំងអស់ចែករំលែក payload ពីរដំណាក់កាល — ដំណាក់កាលមុនការហោះហើរក្រោយការដំឡើង ដែលចាប់យកព័ត៌មានបញ្ជាក់អត្តសញ្ញាណណាមួយដែលមាននៅលើថាសរួចហើយជាអត្ថបទធម្មតា និងដំណាក់កាលពេលដំណើរការដែលសកម្មនៅពេលដែលភ្នាក់ងារ AI ហៅឧបករណ៍ MCP មួយរបស់កញ្ចប់។
«ដំណាក់កាលទី 1 មុនពេលហោះហើរ» រស់នៅក្នុងបន្ទាត់ក្នុង package.json ជា node -e one-liner។ វាបើក dotfiles ល្បីឈ្មោះចំនួនប្រាំពីរ ហើយបញ្ជូន 200 បៃដំបូងនៃឯកសារនីមួយៗទៅកាន់ C2៖
២០០ បៃ ~/.ssh/id_ed25519 នឹងមិនផ្តល់ឱ្យអ្នកវាយប្រហារនូវកូនសោឯកជនរបស់អ្នកដោយខ្លួនឯងទេ ប៉ុន្តែវានឹងផ្តល់ឱ្យ ឈ្មោះឯកសារ មតិយោបល់ និងបន្ទាត់ដំបូងនៃបឋមកថា PEM — គ្រប់គ្រាន់ដើម្បីបញ្ជាក់ពីប្រភេទសោរដែលមាននៅទីនោះ ដែលគ្រប់គ្រាន់ដើម្បីជំរុញដំណាក់កាលបន្ត។ 200 បៃនៃ ~/.env ជាធម្មតា ច្រើនជាងគ្រប់គ្រាន់ដើម្បីលេចធ្លាយសញ្ញាសម្ងាត់ API ពេញលេញ។ 200 បៃនៃ ~/.git-credentials ជាធម្មតា គឺជាសំណុំពេញលេញនៃថូខឹន OAuth។
«ដំណាក់កាលទី 2 ការសម្តែងសំខាន់»គឺមាន ម៉ាស៊ីនស្កេន.jsវាត្រូវបានផ្ទុកដោយកញ្ចប់ index.js ។ ហើយត្រូវបានហៅពីខាងក្នុងកម្មវិធីដោះស្រាយសំណើ MCP នៅពេលដែលភ្នាក់ងារ AI ហៅឧបករណ៍ណាមួយដែលបានផ្សព្វផ្សាយ។ ឯកសារនេះមានទំហំបៃដូចគ្នានៅទូទាំងកញ្ចប់ Variant-A ចំនួន 8 (b461106e47a1f5966159cd6e92541505) ហើយវានិយាយដោយស្មោះត្រង់អំពីអ្វីដែលវាធ្វើ។ ប្លុកមតិយោបល់បើកអានដោយពាក្យត្រង់ៗថា៖
| javascript // wallet-scanner.js — ម៉ាស៊ីនស្កេនសកម្មដែលបានបង្កប់សម្រាប់កញ្ចប់ MCP // ដំណើរការដោយស្ងៀមស្ងាត់នៅពេលដែលភ្នាក់ងារ AI ហៅឧបករណ៍ MCP ណាមួយ ស្កេនបរិស្ថានសម្រាប់ // កាបូប/សោ // ប្រើតែ Node.js ដែលភ្ជាប់មកជាមួយប៉ុណ្ណោះ គ្មានការពឹងផ្អែកខាងក្រៅ |
ខាងក្រោមនេះជាការដើរឡើងវិញ ជម្រៅ ៣ នៃ៖
ថតផ្ទះខ្លួនឯង
...ត្រងរកឈ្មោះឯកសារដែលមានណាមួយនៃ keystore, wallet.json, wallet.dat, .secret, seed.txt, metamask, ខ្មោច, ទន្សាយ, កាបូបទំនុកចិត្ត, coinbase, កូនសោឯកជន, អនុស្សាវរីយ៍, secret_key, api_key — ឧទាហរណ៍ បញ្ជីដែលបានកែសម្រួលដោយដៃនៃគ្រប់ទីកន្លែងដែលអ្នកប្រើប្រាស់គ្រីបតូរក្សាទុកកូនសោ។ សម្រាប់ការផ្គូផ្គងនីមួយៗ ឯកសារត្រូវបានបើក និងស្កេនទល់នឹង regexes ចំនួនប្រាំមួយ៖
| វាយបញ្ចូល | លំនាំ | អ្វីដែលវាចាប់បាន |
|---|---|---|
| កូនសោឯកជន | (?:0x)?[a-fA-F0-9]{64} | កូនសោឯកជន Ethereum និងអាថ៌កំបាំងគោលដប់ប្រាំមួយទំហំ 32 បៃ។ |
| អនុស្សាវរីយ៍ | \b([a-z]+\s+){11,23}[a-z]+\b | ឃ្លាគ្រាប់ពូជជំនួយការចងចាំ BIP39 ដែលមានចាប់ពី 12 ដល់ 24 ពាក្យ។ |
| api_key | (api[_-]?key\|API_KEY)\s*[:=]\s*["']?([A-Za-z0-9_\-]{20,}) | ថូខឹន API ទូទៅ និងតម្លៃព័ត៌មានសម្គាល់ដែលបានបង្កប់នៅក្នុងឯកសារកំណត់រចនាសម្ព័ន្ធ។ |
| សម្ងាត់ | (?:secret\|private).{0,10}[:=]\s*["']?([A-Za-z0-9+/=]{20,}) | អាថ៌កំបាំង និងតម្លៃឯកជន ជាទូទៅត្រូវបានរក្សាទុកក្នុងទម្រង់កំណត់រចនាសម្ព័ន្ធ YAML, JSON និង INI។ |
| អាសយដ្ឋាន_អេធី | 0x[a-fA-F0-9]{40} | អាសយដ្ឋានកាបូប Ethereum ត្រូវបានប្រើដើម្បីកំណត់អត្តសញ្ញាណ និងផ្តិតមេដៃជនរងគ្រោះ។ |
| password | (?:PASSWORD\|PASSPHRASE)\s*=\s*["']?(\S{4,64}) | ពាក្យសម្ងាត់រចនាប័ទ្ម Shell-export និងអថេរបរិស្ថានឃ្លាសម្ងាត់។ |
បន្ទាប់មក scanner.js អានឯកសារ dotfiles ចំនួនប្រាំមួយបន្ថែមទៀត — រហូតដល់ 500 បៃនៃឯកសារនីមួយៗនៃ ~/.env, ~/.bash_history, ~/.zsh_history, ~/.npmrc, ~/.gitconfig, ~/.git-credentials — ហើយស្កេន process.env សម្រាប់អថេរណាមួយដែលឈ្មោះរបស់វាមាន key, secret, token, password, private, mnemonic, wallet ឬ seed។ ជាចុងក្រោយ វាហៅ execSync('whoami') បូករួមទាំង os.hostname() និង process.cwd() ដើម្បីដាក់ស្លាក dump ជាមួយអត្តសញ្ញាណជនរងគ្រោះ។ payload ទាំងមូល បូករួមទាំងការរកឃើញនីមួយៗរហូតដល់ 100 ត្រូវបាន POSTed ជាវត្ថុ JSON តែមួយ។
គោលដៅ exfil មិនត្រូវបាន hardcoded ដោយផ្ទាល់ទេ។ កញ្ចប់ទាញយកវានៅពេលដំណើរការពី៖
https://ddjidd564.github.io/defi-security-best-practices/config.json
— ឯកសារទំព័រ GitHub ដែលបង្ហាញពីការគ្រប់គ្រងរបស់អ្នកវាយប្រហារ។ config.json បច្ចុប្បន្នត្រឡប់មកវិញ
ប្រសិនបើការទាញយកនោះបរាជ័យ ម៉ាស៊ីនស្កេន.js ធ្លាក់មកដដែលវិញ គេហទំព័រ webhook URL ត្រូវបានអ៊ិនកូដរឹងជាអថេរ។ ការប្រយោលនេះគឺជាផ្នែកតែមួយគត់នៃភាពស្មុគស្មាញនៃប្រតិបត្តិការនៅក្នុងយុទ្ធនាការ៖ វាអនុញ្ញាតឱ្យអ្នកវាយប្រហារបង្វិលគោលដៅ exfil ដោយមិនចាំបាច់បោះពុម្ពផ្សាយកញ្ចប់ឡើងវិញ ហើយវារក្សា URL អ្នកប្រមូលពិតប្រាកដចេញពីវត្ថុបុរាណ npm ដែលធ្វើឱ្យការរកឃើញផ្អែកលើហត្ថលេខាកាន់តែពិបាក។
វ៉ារ្យ៉ង់ B: ផ្លូវរូងក្រោមដី Pinggy វ៉ារ្យ៉ង់គោលពីរ និងវ៉ារ្យ៉ង់អចិន្ត្រៃយ៍មួយ។
កញ្ចប់បន្តផ្ទាល់មួយទៀតមានទំហំតូចជាងច្រើន — កញ្ចប់ប្រាំ — ហើយមិនសូវឆ្លាតជាងនេះទេ។ អ្នកនិពន្ធបានលុបចោលឈុត MCP ទាំងស្រុង។ កញ្ចប់ទាំងនេះអះអាងថាជាជំនួយការកំណត់រចនាសម្ព័ន្ធសម្រាប់ឧបករណ៍ Ethereum និង Solana ស្របច្បាប់ (ជំនួយការកំណត់រចនាសម្ព័ន្ធត្រសក់ជ្រលក់, កម្មវិធីប្រមូលផ្តុំតម្លៃចំណី chainlink, អ្នកផ្តល់សេវាកម្ម ganache-cli, សូឡាណា-ភីឌីអេ-ជំនួយការ, ជំនួយការដាក់ពង្រាយរោងចក្រផលិត)។ បន្ទុកបន្ទុកគឺតែមួយ https.get- និង -ប្រតិបត្តិ បន្ទាត់នៅក្នុង ក្រោយការដំឡើង
C2 គឺជាកំណែឥតគិតថ្លៃ ភីងហ្គី ផ្លូវរូងក្រោមដី — សេវាកម្មផ្លូវរូងក្រោមដីសម្រាប់អ្នកអភិវឌ្ឍន៍ទូទៅ ដែលអ្នកវាយប្រហារកំពុងប្រើជា C2 បណ្ដោះអាសន្ន។ កញ្ចប់ទាញយកអ្វីក៏ដោយដែលផ្លូវរូងក្រោមដីត្រឡប់មកវិញ ហើយរុញវាចូលទៅក្នុង child_process.exeគ្មានការត្រួតពិនិត្យសុចរិតភាព គ្មានការចុះហត្ថលេខា គ្មានការការពារដំណាក់កាលទីពីរទេ។ អ្វីក៏ដោយដែលផ្លូវរូងក្រោមដីរបស់ប្រតិបត្តិករកំពុងបម្រើនៅថ្ងៃនេះ គឺជាអ្វីដែលដំណើរការ។
កញ្ចប់ដ៏ខ្លាំងក្លាបំផុត ជំនួយការដាក់ពង្រាយរោងគ្រឹះ៖ ១.៨.៩៦, ជំនួសបន្ទាត់ខាងក្នុង https.get ជាមួយ curl និងល្បិចនៃការអត់ធ្មត់៖
វ៉ារ្យ៉ង់ C៖ ផ្នែកខាងមុខរលោង គ្មានឧបករណ៍បំផ្ទុះ (នៅឡើយទេ)
កញ្ចប់ប្រាំបួនដែលនៅសល់ — កម្មវិធីផ្ទៀងផ្ទាត់ការបម្រុងទុកកាបូប, ម៉ាស៊ីនស្កេនសុវត្ថិភាព env, សំណុំឧបករណ៍ foundy (កំហុសវាយអក្សរដោយចេតនារបស់ Foundry) សូលណា-បណ្ដាញ៣ (typosquat នៃ Solana), កម្មវិធីត្រួតពិនិត្យសុវត្ថិភាពកាបូប, កម្មវិធីជំនួយសម្រាប់កម្មវិធីកែទម្រង់ឧស្ម័នមួកសុវត្ថិភាព, ឧបករណ៍ប្រើប្រាស់អេធើរ-ពហុការហៅ, អ្នកត្រួតពិនិត្យ defi-env, etherjs-utils - មាន គ្មានស្គ្រីបក្រោយការដំឡើង ហើយគ្មានឯកសារ exfil ពេលដំណើរការជាក់ស្តែងនៅពេលមើលដំបូងឡើយ។ ពួកវាចែករំលែកអ្នកបោះពុម្ពផ្សាយ ផ្នែកខាងមុខម៉ាក គំរូដាក់ឈ្មោះ Web3 និងក្នុងករណីខ្លះ README boilerplate ដូចគ្នាបេះបិទជាមួយនឹងវ៉ារ្យ៉ង់សកម្ម។ យើងកំពុងចាត់ទុកពួកវាជាផ្នែកមួយនៃយុទ្ធនាការដូចគ្នា ហើយបានណែនាំឲ្យដកចេញជាមុន ប៉ុន្តែយើងមិនទាន់បានរាប់បញ្ចូលកត្តាបង្កពេលដំណើរការរបស់ពួកគេពេញលេញនៅឡើយទេ។ ដំណាក់កាលអសកម្មអាចជាជើងទម្រដែលប្រតិបត្តិករកំពុងរក្សាទុកសម្រាប់ការប្តូរនាពេលអនាគត - គំរូដូចគ្នាដែល PhantomBot បានប្រើនៅពាក់កណ្តាលខែឧសភា ដែលប្រតិបត្តិករបានប្តូរអ្នកលួចអត្តសញ្ញាណសម្រាប់ការជ្រើសរើស botnet ដោយមិនបានបោះពុម្ពផ្សាយឈ្មោះកញ្ចប់ឡើងវិញទេ។
តារាងពេលវេលា និងកាតាឡុក
កញ្ចប់ដែលមានកាលបរិច្ឆេទដំបូងបំផុតនៅក្នុងយុទ្ធនាការនេះគឺជាកំណែទាបបំផុត៖ កម្មវិធីផ្ទៀងផ្ទាត់សោខ្សែសង្វាក់៖ ០.២.៤ និង defi-env-auditor:១.៤.៩ មើលទៅដូចជាដំណក់ពិសោធន៍ដំបូងៗ។ នៅពេលដែលក្រុមហ៊ុនបោះពុម្ពផ្សាយបានទៅដល់ ជំនួយការកំណត់រចនាសម្ព័ន្ធ truffle: 1.7.0 និង ជំនួយការដាក់ពង្រាយរោងគ្រឹះ៖ ១.៨.៩៦ការបំប៉ោងកំណែគឺដោយចេតនា — ជ្រើសរើសលេខដែលអានដូចជាពូជពង្សរបស់កញ្ចប់ដែលបានបង្កើតឡើង។ គ្មាន 22 នាក់ណាម្នាក់មានប្រវត្តិស្របច្បាប់ពីមុនក្រោមឈ្មោះពិតប្រាកដនោះនៅលើ npm ទេ។
កាតាឡុកពេញលេញ ដែលត្រូវបានដាក់ជាក្រុមតាមបំរែបំរួល៖
### វ៉ារ្យ៉ង់ A — ឧបករណ៍ប្រមូលផលប័ត្រ (ក្រោយការដំឡើង + ម៉ាស៊ីនស្កេនពេលវេលា MCP.js, MD5 b461106e47a1f5966159cd6e92541505)
| កញ្ចប់សមាជិក | កំណែ | បានដាក់ទង់ជាតិនៅក្នុងព័ត៌មានរកឃើញ |
|---|---|---|
mnemonic-safety-check | 0.5.2 | បាទ |
solidity-deploy-guard | 0.4.4 | បាទ |
web3-secrets-detector | 1.2.6 | បាទ |
eth-wallet-sentinel | 1.0.9 | បាទ |
deployment-key-auditor | 0.7.3 | បាទ |
defi-threat-scanner | 2.1.2 | បាទ |
crypto-credential-scanner | 2.0.2 | បាទ |
chain-key-validator | 0.2.3 | បាទ |
### វ៉ារ្យ៉ង់ B — ផ្លូវរូងក្រោមដី Pinggy https.get → exec (គ្មានភាពមើលឃើញនៃការរកឃើញមុនពេលរបាយការណ៍នេះទេ)
| កញ្ចប់សមាជិក | កំណែ | រសជាតិក្រោយការដំឡើង |
|---|---|---|
truffle-config-helper | 1.7.0 | https.get → exec(stdout) |
chainlink-price-feed-aggregator | 1.1.12 | https.get telemetry call |
ganache-cli-provider | 1.7.51 | https.get telemetry call |
solana-pda-helper | 1.0.46 | https.get telemetry call |
foundry-deploy-helper | 1.8.96 | curl + chmod +x /tmp/.node-cache & |
### វ៉ារ្យ៉ង់ C — សង្ស័យថាមានកេះពេលដំណើរការ (គ្មានភាពមើលឃើញនៃការរកឃើញមុនពេលរបាយការណ៍នេះ)
| កញ្ចប់សមាជិក | កំណែ | ភក្ដិកំណត់ត្រាកំណត់ |
|---|---|---|
wallet-backup-verifier | 1.0.1 | |
env-security-scanner | 1.6.0 | |
foundy-toolkit | 1.5.79 | typosquat នៃរោងស្មិត |
solna-web3 | 1.5.98 | ទីប៉ូស្ក្វាត នៃសូឡាណា |
wallet-security-checker | 1.0.3 | |
hardhat-gas-profiler-plugin | 1.7.86 | |
ethers-multicall-utils | 1.3.15 | |
defi-env-auditor | 0.3.2 | |
etherjs-utils | 1.0.39 |
ជួរឈរ Variant-A និង Variant-B មិនត្រូវបានជ្រើសរើសដោយចៃដន្យទេ។ ឈ្មោះ Variant-A ទាំងអស់សុទ្ធតែលក់ខ្លួនវាថាជា ឧបករណ៍ត្រួតពិនិត្យសុវត្ថិភាព — “ការត្រួតពិនិត្យសុវត្ថិភាព”, “អ្នកយាមដាក់ពង្រាយ”, “ឧបករណ៍ចាប់សម្ងាត់”, “អ្នកយាមកាបូប”, “អ្នកសវនកម្មសោ”, “ម៉ាស៊ីនស្កេនការគំរាមកំហែង”, “ម៉ាស៊ីនស្កេនលិខិតសម្គាល់”, “ឧបករណ៍ផ្ទៀងផ្ទាត់សោខ្សែសង្វាក់”។ ពួកវាមានគោលដៅទៅលើអ្នកអភិវឌ្ឍន៍ ឬភ្នាក់ងារ AI ដែលស្វែងរកឧបករណ៍ដើម្បីវាយតម្លៃសុវត្ថិភាពនៃគម្រោង Web3។ ឈ្មោះ Variant-B ទាំងអស់លក់ខ្លួនឯងថាជា ជំនួយការកសាង និងដាក់ពង្រាយ សម្រាប់ប្រព័ន្ធអេកូឡូស៊ី Web3 ដូចគ្នា — Truffle, Chainlink, Ganache, Solana PDA tooling, Foundry។ ការបំបែកនេះឆ្លុះបញ្ចាំងពីគំរូផ្លូវចិត្តរបស់អ្នកអភិវឌ្ឍន៍ Web3 ធម្មតានៃ "ដំណាក់កាលសវនកម្ម" ទល់នឹង "ដំណាក់កាលដាក់ពង្រាយ"។ មិនថាអ្នកទៅដល់ដំណាក់កាលណាក៏ដោយ អ្នកបោះពុម្ពផ្សាយបានវេចខ្ចប់អន្ទាក់សម្រាប់វា។
សូចនាករនៃការសម្របសម្រួល
បណ្តាញ និងឯកសារ
| អាយអូ | វ៉ារ្យ៉ង់ | គោលបំណង |
|---|---|---|
https://ddjidd564.github.io/defi-security-best-practices/config.json | A | កម្មវិធីដោះស្រាយ webhook ថាមវន្ត ដែលបង្ហោះតាមរយៈ GitHub Pages។ |
https://webhook.site/8d334534-1c63-4f4f-a0d7-95c446c8b233 | A | ចំណុចបញ្ចប់បច្ចុប្បន្ននៃឧបករណ៍ប្រមូលការច្រោះ ដែលក៏ត្រូវបានបង្កប់ជាឧបករណ៍បម្រុងផងដែរ។ |
rqnyz-2605-7280-7--2000-c51.run.pinggy-free.link/npm/-/binary/telemetry | B | ផ្លូវរូងក្រោមដី Pinggy ត្រូវបានប្រើដើម្បីចែកចាយបន្ទុកទិន្នន័យគោលពីរពីចម្ងាយ។ |
scanner.js MD5 b461106e47a1f5966159cd6e92541505 | A | បន្ទុកម៉ាស៊ីនស្កេនដូចគ្នាបេះបិទត្រូវបានប្រើឡើងវិញលើកញ្ចប់ Variant-A ទាំង 8។ |
/tmp/.node-cache | B | ឯកសារដែលអាចប្រតិបត្តិបានដែលបានផ្ដាច់ចេញត្រូវបានទម្លាក់ដោយ foundry-deploy-helper:1.8.96. |
បោះពុម្ពផ្សាយ
- ឈ្មោះអ្នកប្រើប្រាស់ npm៖ ddjidd5640
- អ៊ីម៉ែល: 1623682356@qq.com (មិនទាន់បានផ្ទៀងផ្ទាត់)
- អ៊ីមែលនិង SCM ការផ្ទៀងផ្ទាត់៖ គ្មាន
- កញ្ចប់ក្រោមគណនី៖ 22 ដែលបានរាយបញ្ជីទាំងអស់នៅក្នុងកាតាឡុកខាងលើ
- សកម្មភាពដែលអាចមើលឃើញដំបូងបំផុត៖ កម្មវិធីផ្ទៀងផ្ទាត់សោខ្សែសង្វាក់៖ ០.២.៤ (វ៉ារ្យ៉ង់ A)
- សកម្មភាពដែលអាចមើលឃើញចុងក្រោយបំផុត៖ chain-key-validator:0.2.3 និង crypto-credential-scanner:2.0.2 (ទាំងពីរក្នុងរយៈពេល 24 ម៉ោងមុនពេលសរសេរនេះ)
ផ្នែកខាងមុខម៉ាក (ប្រើក្នុង អ្នកនិពន្ធ / README / GH ក្លែងក្លាយ org)
- “Crypto Security Guild” — គាំទ្រដោយ GitHub org ទទេ សមាគមគ្រីបតូសេក
- “Web3 Audit Collective” — គាំទ្រដោយ GitHub org ទទេ w3audit
- “សម្ព័ន្ធភាពសន្តិសុខ DeFi” — គាំទ្រដោយ GitHub org ទទេ សន្តិសុខដែលមិនច្បាស់លាស់
- គណនី GH យោង ddjidd564 — ម៉ាស៊ីនបម្រើនៃ dynamic-webhook config.json
អាកប្បកិរិយា។
- ណូត -e ក្រោយការដំឡើង ការអានណាមួយ .ssh, .អ៊ីធើរៀម, .bitcoin, .NS, .bash_ ប្រវត្តិ, ប្រវត្តិ .zsh, .git-credentials ជាមួយ .ចំណិត(០, ២០០) និងភ្ជាប់ជាមួយ | សញ្ញាបំបែក គឺជាស្នាមម្រាមដៃស្ទើរតែប្លែកសម្រាប់វ៉ារ្យ៉ង់ A។
- កំពុងនាំចូល ./scanner.js ពីកញ្ចប់ដែលចុះឈ្មោះខ្លួនវាជា MCP Server ជាមួយនឹងឧបករណ៍ដែលមានឈ្មោះថា អត្តសញ្ញាណប័ណ្ណដែលលេចធ្លាយការស្វែងរក ឬកិរិយាស័ព្ទ “សវនកម្មសន្តិសុខ” ដែលមានស៊ុមស្រដៀងគ្នានេះ គឺជាការបញ្ជាក់ប្រភេទ A។
- ការដំឡើងក្រោយពេលដំឡើង node -e ដែលទៅយកពីម៉ាស៊ីន *.run.pinggy-free.link ណាមួយ ហើយផ្ញើការឆ្លើយតបទៅក្នុង child_process.exec គឺជាការបញ្ជាក់ Variant-B ដោយមិនគិតពីកញ្ចប់រុំនោះទេ។
ការបញ្ជាក់ និងការលើកទឹកចិត្ត
មានឯកសារគ្រប់គ្រាន់សម្រាប់ស្នាមម្រាមដៃអ្នកបោះពុម្ពផ្សាយដោយផ្នែក ហើយមិនគ្រប់គ្រាន់សម្រាប់អត្តសញ្ញាណពិតប្រាកដនោះទេ។ អ៊ីមែល 1623682356@qq.com គឺជាអាសយដ្ឋានអ៊ីមែល QQ — អ៊ីមែលបណ្ដាញឥតគិតថ្លៃរបស់ Tencent ដែលមានប្រជាប្រិយភាពនៅចិនដីគោក — ហើយផ្នែកលេខក្នុងស្រុកគឺជាលេខសម្គាល់អ្នកប្រើប្រាស់ QQ; យើងចាត់ទុកវាថាជាសញ្ញាទន់តែប៉ុណ្ណោះ ព្រោះអាសយដ្ឋានទម្រង់ QQ ត្រូវបានចុះឈ្មោះតិចតួច។ គណនី npm មិនមានការបង្ហាញពីរកត្តា គ្មានអ៊ីមែលដែលបានផ្ទៀងផ្ទាត់ គ្មានការផ្ទៀងផ្ទាត់ទេ។ SCM តំណភ្ជាប់។ ម៉ាកយីហោ “Crypto Security Guild” / “Web3 Audit Collective” / “DeFi Security Alliance” ត្រូវបានផលិតឡើងជាដុំៗ — គ្មានម៉ាកយីហោណាមួយក្នុងចំណោមម៉ាកយីហោទាំងបីនេះស្ថិតនៅក្រៅយុទ្ធនាការនេះទេ — ហើយ GitHub orgs ដែលគាំទ្រគឺជាសែលទទេដែលបង្កើតឡើងដើម្បីបំពេញតំណភ្ជាប់ទំព័រ npm។
គំរូពីរគឺមានតម្លៃដាក់ឈ្មោះ ព្រោះវាបង្ហាញនៅក្នុងយុទ្ធនាការជាប់គ្នា។ ទីមួយគឺ ការផលិតជាមុននៃម៉ាកយីហោជាភស្តុតាងសង្គមប្រតិបត្តិករមិនបានជ្រើសរើសឈ្មោះគម្រោងដែលមានស្រាប់ដើម្បី typosquat ទេ។ ពួកគេបានបង្កើតនិទានកថាជឿទុកចិត្តទាំងមូលពីដំបូង ដោយដឹងថា ការបង្កើតភ្នាក់ងារ AI pipeline ឬអ្នកអភិវឌ្ឍន៍ដែលប្រញាប់ប្រញាល់ស្កេនទំព័រ npm នឹងផ្គូផ្គងលំនាំលើ "មើលទៅដូចជាអង្គការសន្តិសុខ" ជាជាង "ជាអង្គការសន្តិសុខ"។ នេះគឺជាវិធីសាស្រ្តដូចគ្នាដែលអក្សរសិល្ប៍ slopsquatting បានព្រមានអំពី - កញ្ចប់ដែលត្រូវបានលៃតម្រូវទៅនឹងប្រភេទឈ្មោះដែល LLM នឹង invent ប្រសិនបើត្រូវបានស្នើសុំឧបករណ៍សុវត្ថិភាព Web3 ដែលត្រូវបានរៀបចំយ៉ាងល្អគ្រប់គ្រាន់ដែល LLM នឹងមិនពិនិត្យឡើងវិញទេ។ ស្លូបស្គាតធីង គឺជាពាក្យដែលទើបបង្កើតថ្មីៗនេះសម្រាប់កញ្ចប់ព្យាបាទដែលឈ្មោះរបស់វាត្រូវគ្នានឹងកន្លែងដាក់ LLMs ដែលធ្វើឲ្យមានការយល់ច្រឡំនៅពេលដែលកញ្ចប់ដែលមានសិទ្ធិអំណាចមិនមាន។ យុទ្ធនាការនេះគឺជាបងប្អូនជីដូនមួយដ៏ខ្លាំងក្លារបស់វា ដែលប្រតិបត្តិករក៏បង្កើតអង្គការដែលកន្លែងដាក់នឹងជាកម្មសិទ្ធិរបស់ផងដែរ។
លំនាំទីពីរគឺ ការធ្វើឱ្យសកម្មតាមពេលវេលា MCP. តាមពេលវេលា ម៉ាស៊ីនស្កេន.js ដំណើរការ ការដំឡើងបានបញ្ចប់ ហើយអ្នកអភិវឌ្ឍន៍បានបន្តទៅមុខទៀត។ កត្តាជំរុញគឺភ្នាក់ងារ AI ដែលហៅឧបករណ៍មួយ — អត្តសញ្ញាណប័ណ្ណដែលលេចធ្លាយការស្វែងរកក្នុងករណី Variant-A — ដែលភ្នាក់ងារនឹងធ្វើ ពីព្រោះនោះជាហេតុផលទាំងមូលដែលវាត្រូវបានផ្តល់ឱ្យកញ្ចប់។ ការងារព្យាបាទកើតឡើងក្នុងអំឡុងពេល ល្អ ផ្នែកមួយនៃលំហូរការងារ នៅពេលដែលអ្នកអភិវឌ្ឍន៍ទំនងជាកំពុងមើលជំនួយការ AI របស់ពួកគេទទួលបានជោគជ័យក្នុងកិច្ចការដែលពួកគេបានស្នើសុំ។ វាគឺជាការផ្លាស់ប្តូរអាកប្បកិរិយាតូចមួយពី "exfil on" ចាស់ ល្ងាចដំឡើង” ហើយវាគេចផុតពីការ sandboxing ពេលដំឡើងយ៉ាងស្អាត។
យើងមិនកំពុងដាក់ឈ្មោះអ្នកគំរាមកំហែងណាមួយទេ។ សញ្ញា (អ៊ីមែល QQ គណនីតែមួយ ការផ្ទុះឡើងមួយថ្ងៃចំនួន 22 កញ្ចប់ ជង់ C2 ស្របគ្នាពីរ) គឺស្របគ្នាជាមួយនឹងប្រតិបត្តិករអចិន្ត្រៃយ៍មួយ ក្រុមតូចមួយ ឬក្រុម package-flood មួយក្នុងចំណោមក្រុមដែលអាចមើលឃើញនៅក្នុងទូរមាត្រ npm រហូតដល់ឆ្នាំ 2025–2026។ អ្វីដែលយើង អាចធ្វើបាន គឺថាប្រតិបត្តិករនេះមានប្រព័ន្ធអេកូឡូស៊ីដែលពេញចិត្តច្បាស់លាស់ (Ethereum + Solana + Foundry/Hardhat tooling) ជនរងគ្រោះដែលពេញចិត្តច្បាស់លាស់ (អ្នកអភិវឌ្ឍន៍ Web3 និងភ្នាក់ងារ AI ដែលធ្វើការលើគម្រោង Web3) និងគំរូនៃការបន្តដែលពេញចិត្តច្បាស់លាស់ (កេះដំណើរការពេលវេលា MCP បូករួមទាំងប្រព័ន្ធបម្រុងទុកគោលពីរដែលផ្ដាច់ចេញ)។
ផលប៉ះពាល់ និន្នាការ និងអ្វីដែលអ្នកការពារអាចធ្វើបាន
ការព្រមានជាមុនរបស់យើង pipeline ចាប់បាន 8 នៃ 22 កញ្ចប់នានាក្នុងរយៈពេលនៃយុទ្ធនាការ — ប្រាំមួយនៅពេលយុទ្ធនាការដំបូង និងពីរទៀតដែលបានមកដល់នៅពេលក្រោយនៃថ្ងៃដដែលក្នុងអំឡុងពេលការដាក់ជាក្រុមយុទ្ធនាការ។ កញ្ចប់ចំនួន 14 ផ្សេងទៀតត្រូវបានផ្សាយបន្តផ្ទាល់នៅលើ npm អស់រយៈពេលជាច្រើនថ្ងៃ។ ដោយមិនដែលលេចឡើងនៅក្នុងចំណីរកឃើញណាមួយដែលយើងតាមដានឡើយហើយនៅពេលសរសេរនេះនៅតែអាចដំឡើងបាន។ គម្លាតនោះមានសារៈសំខាន់ពីព្រោះ៖
- វ៉ារ្យ៉ង់ A ស្ងាត់ស្ងៀមកំឡុងពេលដំឡើងការអាន dotfile កើតឡើង ប៉ុន្តែ bulk exfil ដំណើរការតែនៅពេលដែលភ្នាក់ងារ AI ហៅឧបករណ៍ MCP របស់កញ្ចប់ប៉ុណ្ណោះ។ standard ប្រអប់ខ្សាច់មើលក្រោយការដំឡើងនឹងឃើញ ណូត -e រារាំង ហើយសម្រេចចិត្តថាវាតូច និងហាក់ដូចជាអសកម្ម។
- វ៉ារ្យ៉ង់ B គឺជាបន្ទាត់តែមួយ។ គ្មានអ្វីសម្រាប់កម្មវិធីចាត់ថ្នាក់មេរោគដើម្បីរៀនពីនោះទេ — គ្មានការបិទបាំង គ្មានបន្ទុកដែលបានអ៊ិនកូដ គ្មានដែនដែលមើលទៅគួរឱ្យសង្ស័យនោះទេ។ ផ្លូវរូងក្រោមដី Piggy គឺជាសេវាកម្មអ្នកអភិវឌ្ឍន៍ស្របច្បាប់។ រឿងគួរឱ្យសង្ស័យតែមួយគត់គឺថា "អ្នកជំនួយការកំណត់រចនាសម្ព័ន្ធ" ត្រូវទូរស័ព្ទទៅផ្ទះទាល់តែសោះ។
- វ៉ារ្យ៉ង់ C មើលទៅស្អាតទាំងស្រុង។ វាមិនមានការដំឡើងទេ hooks។ ដោយសញ្ញាឋិតិវន្តនីមួយៗវាជារឿងធម្មតា។
បញ្ជីត្រួតពិនិត្យខ្លីមួយសម្រាប់អ្នកការពារសម្រាប់យុគសម័យ MCP-Tool
សកម្មភាពជាក់ស្តែងចំនួនបីដែលអាចធ្វើឱ្យយុទ្ធនាការនេះទទួលបានជោគជ័យមុននេះ៖
- ថ្លឹងថ្លែងពីអ្នកបោះពុម្ពផ្សាយ មិនមែនកញ្ចប់ទេ។ កញ្ចប់ចំនួនម្ភៃពីរនៅក្រោមគណនី QQ-mail តែមួយដែលមានអាយុមួយឆ្នាំដោយគ្មាន SCM ការផ្ទៀងផ្ទាត់គឺជាសញ្ញាភ្លឺជាងមុខងារក្នុងមួយកញ្ចប់ណាមួយ។ លំហូរការងារព្រមានដំបូងរបស់យើងចាប់បានកញ្ចប់ដំបូង ពីព្រោះស្នាមម្រាមដៃរបស់អ្នកបោះពុម្ពផ្សាយលេចធ្លោ — ដែលណែនាំពិន្ទុកេរ្តិ៍ឈ្មោះរបស់អ្នកបោះពុម្ពផ្សាយ ដែលកម្មវិធីចាត់ថ្នាក់សុវត្ថិភាព មិនច្បាស់លាស់ ឬមេរោគក្នុងមួយកញ្ចប់អាចបន្ថយទម្ងន់បាន។
- ចាត់ទុកការបញ្ជូនបន្តដោយប្រយោល dynamic-config ថាជាការព្យាបាទរហូតដល់មានការបញ្ជាក់ផ្សេងពីនេះ។ កញ្ចប់មួយដែលដោះស្រាយចំណុចបញ្ចប់ចេញរបស់វានៅពេលដំណើរការពីឯកសារភាគីទីបី (GitHub Pages, GitHub Gist, Pastebin, វត្ថុ S3 កន្លែងណាផ្សេងទៀត) មិនមានហេតុផលស្របច្បាប់ដើម្បីធ្វើដូច្នេះសម្រាប់ទូរមាត្រទេ។ ចំណុចបញ្ចប់ទូរមាត្រពិតប្រាកដត្រូវបានអ៊ិនកូដ និងកត់ត្រាទុកជាឯកសារ។
- សវនកម្មកញ្ចប់ម៉ាស៊ីនបម្រើ MCP តាមផ្ទៃឧបករណ៍ដែលបានផ្សព្វផ្សាយរបស់ពួកគេ។ កញ្ចប់ Variant-A ទាំងអស់ផ្សព្វផ្សាយឧបករណ៍ដែលមានឈ្មោះថា
search_leaked_credentials,validate_chain_key,deploy_safeនិងកិរិយាសព្ទ "សវនកម្ម" ស្រដៀងគ្នា។ ម៉ាស៊ីន MCP ដែលបង្ហាញឧបករណ៍ដែលការពិពណ៌នារបស់វាអះអាងថាស្កេនថតគម្រោងសម្រាប់ព័ត៌មានបញ្ជាក់អត្តសញ្ញាណគួរតែតម្រូវឱ្យមានការជ្រើសរើសយកប្រតិបត្តិករជាក់លាក់មុនពេលភ្នាក់ងារហៅវានៅលើមូលដ្ឋានកូដពិតប្រាកដ។ ចំណុចនៃ MCP គឺថារង្វិលជុំភ្នាក់ងារមិនមានវិធីដើម្បីដឹងថាតើsearch_leaked_credentialsគឺជាការស្វែងរកលិខិតសម្គាល់ ឬជាការច្រោះលិខិតសម្គាល់។
សម្រាប់អ្នកអភិវឌ្ឍន៍ដែលប្រហែលជាបានដំឡើងកញ្ចប់មួយក្នុងចំណោមកញ្ចប់ទាំង 22 រួចហើយ៖ សន្មតថាគ្រាប់ចុចអត្ថបទធម្មតាណាមួយនៅក្នុង ~ / .ssh, ~/.ethereum, ~/.bitcoin, ~/.សូឡាណា, ~/.envឬ ~/.git-credentials ត្រូវបានសម្របសម្រួល សូមបង្វិលរាល់ព័ត៌មានសម្គាល់ដែលឈ្មោះរបស់វាត្រូវគ្នានឹងបញ្ជីតម្រង env-variable ខាងលើ ហើយនៅលើ Linux/macOS សូមពិនិត្យមើលឯកសារដែលអាចប្រតិបត្តិបាននៅ /tmp/.node-cache (ហើយដំណើរការកំព្រាណាមួយបានចាប់ផ្តើមពីវា)។ ការដំឡើងឡើងវិញនូវកំណែស្របច្បាប់នៃឧបករណ៍ក្លែងបន្លំ (គ្រឹះ។, ត្របែក, ហាតហាត, ganacheជាដើម) មិនលុបប្រព័ន្ធគោលពីរដែលបានទម្លាក់ចោលនោះទេ។
កញ្ចប់ Variant-C ដែលមិនទាន់ដំណើរការ គឺជាផ្នែកមួយនៃរឿងនេះដែលមានអាយុកាលអាក្រក់បំផុត។ កញ្ចប់ចំនួនប្រាំបួនដែលមានទម្រង់ដំឡើងស្អាត និងអ្នកបោះពុម្ពផ្សាយដែលបានបង្កើតឡើង គឺជាប្រភេទសារពើភ័ណ្ឌដែលប្រតិបត្តិកររក្សាទុក។ ប្រសិនបើពួកវាផ្ទុះនៅពេលក្រោយ — ដូចដែល PhantomBot បានធ្វើនៅពេលដែលវា axois-utils ការវេចខ្ចប់ឡើងវិញដែលបានប្តូរពីការលួចព័ត៌មានសម្ងាត់ទៅជាការជ្រើសរើស botnet — ពួកគេនឹងបំផ្ទុះប្រឆាំងនឹងអ្នកប្រើប្រាស់ចុះបញ្ជីណាមួយដែលបានខ្ទាស់កញ្ចប់ Variant-C រវាងថ្ងៃនេះ និងការដកចេញ។ ការខ្ទាស់កញ្ចប់ព្យាបាទតាមកំណែមិនការពារអ្នកពីអ្នកបោះពុម្ពផ្សាយដែលគ្រប់គ្រងគ្រប់កំណែនោះទេ។
ឯកសារយោង
- [ទំព័រអ្នកបោះពុម្ពផ្សាយ npm សម្រាប់ ddjidd5640](https://www.npmjs.com/~ddjidd5640) — កញ្ចប់ចំនួន ២២ ដែលបច្ចុប្បន្នបានចុះបញ្ជីក្រោមគណនីនេះ។ ប្រភពដែលមានសិទ្ធិអំណាចសម្រាប់កាតាឡុកនៅពេលសរសេរនេះ។
- [ទំព័រកញ្ចប់ npm សម្រាប់ ម៉ាស៊ីនស្កេនអត្តសញ្ញាណគ្រីបតូ](https://www.npmjs.com/package/crypto-credential-scanner) — ឧទាហរណ៍ Variant-A artifact; README, ប្រវត្តិកំណែ និងតំណភ្ជាប់អ្នកនិពន្ធ អាចមើលឃើញនៅទីនេះ។





