អន្ទាក់អ្នកត្រួតពិនិត្យ

AuditorTrap៖ សមាគមសន្តិសុខគ្រីបតូក្លែងក្លាយចំនួន ២២ កញ្ចប់នៅលើ npm ជាមួយនឹងបន្ទុកការងារស្របគ្នាពីរ

​មាតិកា

ប្រកាសដែលត្រូវតែអាន

ប្រកាសថ្មីៗបំផុតដែលគួរឱ្យចាប់អារម្មណ៍

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 និងល្បិចនៃការអត់ធ្មត់៖

ការ​ដើរ​តាម​ពីក្រោយ & ផ្ដាច់​ប្រព័ន្ធ​គោលពីរ​ចេញពីដំណើរការដំឡើង ដូច្នេះការដំឡើងបញ្ចប់ដោយស្ងៀមស្ងាត់ ខណៈពេលដែលប្រព័ន្ធគោលពីរដែលដំណើរការយូរត្រូវបានទុកចោលនៅផ្ទៃខាងក្រោយក្រោមឈ្មោះដែលមើលទៅដូចជាឯកសារឃ្លាំងសម្ងាត់ Node.js ដែលមិនគួរឱ្យកត់សម្គាល់។ យើងមិនបានទាញយកប្រព័ន្ធគោលពីរដោយខ្លួនឯងទេ។ ផ្លូវរូងក្រោមដីមិនមានការឆ្លើយតបនៅពេលដែលយើងពិនិត្យ ដែលជាឥរិយាបថដែលរំពឹងទុកសម្រាប់ផ្លូវរូងក្រោមដីដែលប្រតិបត្តិករបង្ហាញឡើងចុះតាមតម្រូវការ។

 វ៉ារ្យ៉ង់ 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

សកម្មភាពជាក់ស្តែងចំនួនបីដែលអាចធ្វើឱ្យយុទ្ធនាការនេះទទួលបានជោគជ័យមុននេះ៖

  1. ថ្លឹងថ្លែង​ពី​អ្នក​បោះពុម្ពផ្សាយ មិនមែន​កញ្ចប់​ទេ។ កញ្ចប់ចំនួនម្ភៃពីរនៅក្រោមគណនី QQ-mail តែមួយដែលមានអាយុមួយឆ្នាំដោយគ្មាន SCM ការផ្ទៀងផ្ទាត់គឺជាសញ្ញាភ្លឺជាងមុខងារក្នុងមួយកញ្ចប់ណាមួយ។ លំហូរការងារព្រមានដំបូងរបស់យើងចាប់បានកញ្ចប់ដំបូង ពីព្រោះស្នាមម្រាមដៃរបស់អ្នកបោះពុម្ពផ្សាយលេចធ្លោ — ដែលណែនាំពិន្ទុកេរ្តិ៍ឈ្មោះរបស់អ្នកបោះពុម្ពផ្សាយ ដែលកម្មវិធីចាត់ថ្នាក់សុវត្ថិភាព មិនច្បាស់លាស់ ឬមេរោគក្នុងមួយកញ្ចប់អាចបន្ថយទម្ងន់បាន។
  2. ចាត់ទុកការបញ្ជូនបន្តដោយប្រយោល dynamic-config ថាជាការព្យាបាទរហូតដល់មានការបញ្ជាក់ផ្សេងពីនេះ។ កញ្ចប់មួយដែលដោះស្រាយចំណុចបញ្ចប់ចេញរបស់វានៅពេលដំណើរការពីឯកសារភាគីទីបី (GitHub Pages, GitHub Gist, Pastebin, វត្ថុ S3 កន្លែងណាផ្សេងទៀត) មិនមានហេតុផលស្របច្បាប់ដើម្បីធ្វើដូច្នេះសម្រាប់ទូរមាត្រទេ។ ចំណុចបញ្ចប់ទូរមាត្រពិតប្រាកដត្រូវបានអ៊ិនកូដ និងកត់ត្រាទុកជាឯកសារ។
  3. សវនកម្មកញ្ចប់ម៉ាស៊ីនបម្រើ 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, ប្រវត្តិកំណែ និងតំណភ្ជាប់អ្នកនិពន្ធ អាចមើលឃើញនៅទីនេះ។
ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

ធានាសុវត្ថិភាពនៃការអភិវឌ្ឍន៍ និងការដឹកជញ្ជូនកម្មវិធីរបស់អ្នក

ជាមួយឈុតផលិតផល Xygeni