- একটি আপোসকৃত এনপিএম ক্রেডেনশিয়াল ব্যবহার করে jscrambler এনপিএম প্যাকেজের পাঁচটি ক্ষতিকর সংস্করণ (8.14.0, 8.16.0, 8.17.0, 8.18.0, 8.20.0) প্রকাশ করা হয়েছিল, যেগুলোতে একটি রাস্ট-ভিত্তিক ইনফোস্টিলার ছিল।
- এই ম্যালওয়্যারটি একটি প্রি-ইনস্টল হুক অথবা রানটাইমে কার্যকর হয় এবং উইন্ডোজ ও ম্যাকওএস-এ পার্সিস্টেন্স মেকানিজমের মাধ্যমে ক্লাউড ক্রেডেনশিয়াল, ক্রিপ্টোকারেন্সি ওয়ালেট, ব্রাউজার ডেটা, এআই টুলের কনফিগারেশনসহ আরও অনেক কিছুকে লক্ষ্যবস্তু করে।
- সকেট, স্টেপসিকিউরিটি, সেফডিপ এবং জেফ্রগের মতো নিরাপত্তা সংস্থাগুলো মিনিটের মধ্যেই আক্রমণটি শনাক্ত করে, কিন্তু ক্ষতিকারক প্যাকেজগুলো ঘণ্টার পর ঘণ্টা এনপিএম-এ থেকে যায়; জেফ্রগ পেলোডটিকে স্ব-বিস্তার ক্ষমতাসম্পন্ন আয়রনওয়ার্ম হিসেবে শনাক্ত করে।
- ডেভেলপারদের সংস্করণ ৮.২২.০-তে আপগ্রেড করতে, সমস্ত সিক্রেট রোটেট করতে এবং সিস্টেমে কোনো আপোসের লক্ষণ আছে কিনা তা নিরীক্ষা করতে অনুরোধ করা হচ্ছে, কারণ চোরটি চুরি করা এনপিএম টোকেনের মাধ্যমেও ছড়িয়ে পড়তে পারে।

২০২৬ সালের ১১ই জুলাই, jscrambler নামক একটি বাণিজ্যিক জাভাস্ক্রিপ্ট অবফাসকেশন ও নিরাপত্তা টুলের npm প্যাকেজটি একজন আক্রমণকারী হাইজ্যাক করে। আক্রমণকারীটি একটি চুরি করা পাবলিশিং ক্রেডেনশিয়াল ব্যবহার করে এর একাধিক ক্ষতিকারক সংস্করণ প্রকাশ করে। প্রায় তিন ঘণ্টা ধরে চলা এই ঘটনায়, 8.14.0, 8.16.0, 8.17.0, 8.18.0, এবং 8.20.0—এই পাঁচটি সংস্করণে একটি ক্রস-প্ল্যাটফর্ম ইনফোস্টিলার ছিল, যা ইনস্টলেশন বা ইম্পোর্ট করার সাথে সাথেই সক্রিয় হয়ে যেত। Socket, StepSecurity, SafeDep, এবং JFrog-এর মতো নিরাপত্তা সংস্থাগুলো কয়েক মিনিটের মধ্যেই এই হুমকি সম্পর্কে সতর্ক করে, কিন্তু প্যাকেজগুলো ঘণ্টার পর ঘণ্টা ডাউনলোডের জন্য উপলব্ধ ছিল এবং 8.14.0 সংস্করণটি রেজিস্ট্রি থেকে কখনোই সরানো হয়নি।
এই আক্রমণটি সফটওয়্যার সরবরাহ শৃঙ্খলের সবচেয়ে দুর্বল স্থানটিকে লক্ষ্যবস্তু করেছিল: অর্থাৎ ডেভেলপারের মেশিন। রানটাইম কোড কাজে লাগিয়ে করা অনেক এনপিএম ঘটনার বিপরীতে, এই ঘটনাটিতে একটি প্রিইনস্টল হুক ব্যবহার করা হয়েছিল। প্রথম তিনটি ক্ষতিকারক সংস্করণে, যার অর্থ কেবল চালানো npm install jscrambler@8.14.0 একটি নেটিভ বাইনারি ড্রপ এবং এক্সিকিউট করার জন্য এটিই যথেষ্ট ছিল। পরবর্তী সংস্করণগুলিতে (8.18.0 এবং 8.20.0) ড্রপারটিকে প্যাকেজের মূল কোডে স্থানান্তরিত করা হয়, তাই এমনকি --ignore-scripts পেলোডটি আটকানো যাচ্ছিল না। জেস্ক্র্যাম্বলার নিশ্চিত করেছে যে এই লঙ্ঘনটি শুধুমাত্র তাদের কোড ইন্টিগ্রিটি প্রোডাক্টের মধ্যেই সীমাবদ্ধ ছিল এবং এরপর থেকে তারা ফাঁস হওয়া ক্রেডেনশিয়ালগুলো প্রত্যাহার করেছে, তাদের পাইপলাইনকে আরও শক্তিশালী করেছে এবং একটি ত্রুটিমুক্ত সংস্করণ ৮.২২.০ প্রকাশ করেছে।
আক্রমণের মাধ্যম: একটি চুরি করা পরিচয়পত্র এবং একটি লুকানো পেলোড
প্রকল্পের স্বাভাবিক গিটহাব-ভিত্তিক রিলিজ প্রক্রিয়াকে পাশ কাটিয়ে, একটি বৈধ মেইনটেইনার অ্যাকাউন্টের অধীনে ক্ষতিকারক রিলিজগুলো প্রকাশ করা হয়েছিল। ত্রুটিপূর্ণ সংস্করণগুলোর কোনোটির জন্যই কোনো মিলযুক্ত কমিট, ট্যাগ বা পুল রিকোয়েস্ট পাওয়া যায়নি। StepSecurity এবং SafeDep-এর তথ্য অনুযায়ী, পাবলিক রিপোজিটরিতে 8.13.0 এবং 8.14.0-এর প্যাকেজ ডিফে দুটি নতুন ফাইল পাওয়া গেছে: dist/setup.js, একটি ছোট লোডার, এবং dist/intro.jsএকটি ৭.৮ এমবি কন্টেইনার, যার মধ্যে উইন্ডোজ, ম্যাকওএস এবং লিনাক্সের জন্য তিনটি জিজিপ-কম্প্রেসড নেটিভ বাইনারি রয়েছে। ইনস্টল করার সময়, setup.js উপযুক্ত বাইনারিটি নির্বাচন করে, সেটিকে সিস্টেমের টেম্প ডিরেক্টরিতে একটি এলোমেলো নামে লিখে রাখে, সেটিকে এক্সিকিউটেবল হিসেবে চিহ্নিত করে এবং এর আউটপুট গোপন রেখে চালু করে।
রেজিস্ট্রিতে আসার মাত্র ছয় মিনিট পরেই সকেট প্রথম ক্ষতিকারক সংস্করণটি শনাক্ত করে। এরপর আক্রমণকারী পরবর্তী তিন ঘণ্টার মধ্যে আরও চারটি সংস্করণ পাঠায় , যার প্রতিটিতে একই রাস্ট-কম্পাইল করা ইনফোস্টিলার ছিল। জেফ্রগ পরে পেলোডটিকে আয়রনওয়ার্ম হিসেবে শনাক্ত করে, যা এক মাস আগে তাদের দ্বারা নথিভুক্ত একটি স্টিলার, এবং এটিকে শাই-হুলুদ বংশধারার সাথে যুক্ত করে। ম্যালওয়্যারটির কমান্ড-অ্যান্ড-কন্ট্রোল (C2) পরিকাঠামোতে দুটি হার্ড-কোডেড আইপি অ্যাড্রেস (37.27.122.124 এবং 57.128.246.79) এবং টর নেটওয়ার্ক অ্যাড্রেস অন্তর্ভুক্ত ছিল, যা স্টেপসিকিউরিটির রানটাইম মনিটরিংয়ে দেখা যায়।
ম্যালওয়্যারটি কী লক্ষ্য করে
ইনফোস্টিলারের টার্গেট তালিকাটি বেশ বিস্তৃত এবং বিশেষভাবে ডেভেলপারদের লক্ষ্য করে তৈরি। এটি AWS, Azure, এবং Google Cloud থেকে ক্লাউড ক্রেডেনশিয়াল খুঁজে বের করে , যার মধ্যে CI রানারদের ব্যবহৃত মেটাডেটা এন্ডপয়েন্টও অন্তর্ভুক্ত। এটি MetaMask, Phantom, Exodus এবং অন্যান্য প্ল্যাটফর্ম থেকে ক্রিপ্টোকারেন্সি ওয়ালেট ও সিড ফ্রেজ, এবং সেইসাথে Bitwarden পাসওয়ার্ড ম্যানেজার ভল্টও খুঁজে বেড়ায়। Discord, Slack, Telegram, এবং Steam-এর ব্রাউজারে সংরক্ষিত পাসওয়ার্ড, কুকি এবং সেশন টোকেনও সংগ্রহ করা হয়। বিশেষভাবে উল্লেখ্য, এই ম্যালওয়্যারটি Claude Desktop, Cursor, Windsurf, VS Code, এবং Zed-এর মতো AI কোডিং টুলগুলোর কনফিগারেশন ফাইলগুলোকেও টার্গেট করে, যেখানে প্রায়শই API কী এবং মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার ক্রেডেনশিয়ালগুলো থাকে।
JFrog-এর বিশ্লেষণে লক্ষ্যবস্তুর তালিকা আরও প্রসারিত করা হয় এবং এতে যুক্ত করা হয় ভিপিএন কনফিগারেশন ফাইল, 1Password ভল্ট, টর হিডেন-সার্ভিস কী, এবং মেটাসপ্লয়েট, স্লিভার ও হ্যাভকের মতো রেড-টিম ফ্রেমওয়ার্কগুলোর ইনস্টল ফোল্ডার। এই শেষ লক্ষ্যবস্তুটি থেকে বোঝা যায় যে, আক্রমণকারীরা নিরাপত্তা গবেষক এবং পেনিট্রেশন টেস্টারদেরও নিশানা করছিল।এই ম্যালওয়্যারটি ChaCha20-Poly1305 এনক্রিপশনের মাধ্যমে প্রতিটি স্ট্রিং-এর জন্য শক্তিশালী অবফাসকেশন ব্যবহার করে, যা রিভার্স ইঞ্জিনিয়ারিংকে কঠিন করে তোলে। বড় আকারে ডেটা পাচারের জন্য, এটি চুরি করা ডেটা সরাসরি আপলোড করে। temp.shএকটি পাবলিক ফাইল হোস্টের মাধ্যমে এমন একটি সংযোগ ব্যবহার করা হয়, যা ভুক্তভোগীর আসল আইপি ফাঁস করে দেয়।
অধ্যবসায় এবং উন্নত ক্ষমতা
এই পেলোডটি সাধারণ চুরির চেয়েও বেশি কিছু। লিনাক্সে, এটি কার্নেলের BPF লাইব্রেরি লিঙ্ক করে এবং সরাসরি কার্নেল মেমরিতে একটি eBPF প্রোগ্রাম লোড করতে পারে, যা ইউজারস্পেস ফাইল অ্যাক্সেসের চেয়েও অনেক বেশি শক্তিশালী একটি প্রবেশাধিকার প্রদান করে। StepSecurity এবং SafeDep উভয়ই এই eBPF সক্ষমতাটিকে ফ্ল্যাগ করেছে , যদিও এর সঠিক কার্যকারিতা এখনও বিশ্লেষণাধীন। উইন্ডোজ এবং ম্যাকওএস-এ, এই স্টিলারটি অ্যান্টি-ডিবাগিং চেক এবং পার্সিস্টেন্স মেকানিজম যুক্ত করে: একটি লুকানো উইন্ডোজ শিডিউলড টাস্ক যা প্রতি মিনিটে পুনরায় চালু হওয়ার জন্য সেট করা থাকে, এবং একটি ম্যাকওএস লঞ্চএজেন্ট যা লগইনের সময় রিলোড হয়। C2-এর বিবরণ বাইনারিতে এনক্রিপ্টেড থাকে এবং স্ট্যাটিক বিশ্লেষণে কখনও প্রকাশ পায়নি।
জেফ্রগ একটি স্ব-প্রসারণ পদ্ধতিও আবিষ্কার করেছে। ম্যালওয়্যারটি এনভায়রনমেন্ট ভেরিয়েবল এবং ফাইলের মধ্যে এনপিএম টোকেন খুঁজে বেড়ায়, যেমন— .npmrcরেজিস্ট্রির সাথে সেগুলোকে মিলিয়ে দেখে, বেশি ডাউনলোড হয় এমন প্যাকেজগুলো বেছে নেয়, এবং একটি ক্ষতিকারক ফাইল প্রবেশ করিয়ে দেয়। setup.mjs তাদের টারবলগুলিতে স্ক্রিপ্টটি আগে থেকে ইনস্টল করে, এবং সংক্রামিত সংস্করণগুলি সরাসরি প্রকাশ করে। registry.npmjs.org সরাসরি HTTP PUT-এর মাধ্যমে—কখনোই npm ক্লায়েন্টকে কল না করেই। যদিও JFrog কোডে এই কার্যপ্রণালীটি নিশ্চিত করেছে, তবে এটি নিশ্চিত করেনি যে ওয়ার্মটি কোনো চুরি করা টোকেনের মাধ্যমে কিছু প্রকাশ করতে পেরেছে। তবে, এর তাৎপর্য স্পষ্ট: আক্রান্ত সংস্করণটি চালিত যেকোনো মেশিনের npm টোকেনগুলো আক্রমণটি আরও ছড়িয়ে দিতে ব্যবহার করা যেতে পারে।
প্রতিক্রিয়া এবং পরিচ্ছন্নতা
অবহিত হওয়ার পর Jscrambler দ্রুত পদক্ষেপ নেয়। কোম্পানিটি ক্ষতিকারক সংস্করণগুলোকে অপ্রচলিত ঘোষণা করে এবং প্রথমে 8.15.0, এবং পরে 8.22.0-কে প্রস্তাবিত নিরাপদ সংস্করণ হিসেবে প্রকাশ করে। তবে, সংস্করণ 8.14.0 কখনও npm থেকে সরানো হয়নি , যার অর্থ হলো এতে পিন করা যেকোনো লকফাইল বা কমান্ড এখনও স্টিলারটি ইনস্টল করে। কোম্পানির সতর্কবার্তায় চারটি ক্ষতিকারক সংস্করণের (8.14.0, 8.16.0, 8.17.0, 8.20.0) তালিকা থাকলেও 8.18.0 সংস্করণটি বাদ দেওয়া হয়েছিল, যা Socket এবং JFrog উভয়েরই অন্তর্ভুক্ত। Jscrambler জানিয়েছে যে npm বর্তমানে ক্ষতিকারক সংস্করণগুলোর শূন্য ডাউনলোডের রিপোর্ট করছে, তবে সতর্ক করেছে যে এই গণনায় কয়েক ঘণ্টার ব্যবধান থাকে এবং এটি এখনও যাচাই করা হচ্ছে।
ডেভেলপারদের জন্য তাৎক্ষণিক পদক্ষেপগুলো স্পষ্ট: সংস্করণ ৮.২২.০-তে আপগ্রেড করুন অথবা ৮.১৩.০-তে পিন করুন, এবং সেই সমস্ত সিস্টেম নিরীক্ষা করুন যেগুলো থেকে ক্ষতিকর রিলিজগুলো ডাউনলোড হয়ে থাকতে পারে। লকফাইল এবং প্যাকেজ-ম্যানেজার লগ পরীক্ষা করুন jscrambler@8.14.0 এবং অনুরূপ সংস্করণএবং CI রেকর্ডগুলি সন্ধান করুন dist/setup.js ১১ই জুলাই থেকে কার্যকর হবে। উইন্ডোজে, লুকানো টাস্কের জন্য টাস্ক শিডিউলার পরীক্ষা করুন; ম্যাকওএস-এ, চেক করুন ~/Library/LaunchAgents অপরিচিত plist ফাইলের ক্ষেত্রে, লোডারটি টেম্প ডিরেক্টরিতে একটি র্যান্ডম নামে তার পেলোড রেখে দেয়, তাই grep করার জন্য কোনো নির্দিষ্ট বাইনারি নাম থাকে না—এর পরিবর্তে, Node চাইল্ড প্রসেস এবং টেম্প-ডিরেক্টরিতে এক্সিকিউশনের সাথে ইনস্টল টাইমস্ট্যাম্পগুলো মিলিয়ে নিন।
সমঝোতার সূচক
নিরাপত্তা সংস্থাগুলো বিস্তারিত সূচক প্রকাশ করেছে। ক্ষতিকারক প্যাকেজ সংস্করণগুলো হলো jscrambler@8.14.0, 8.16.0, 8.17.0, 8.18.0, এবং 8.20.0যোগ করা ফাইল এবং ডিকম্প্রেস করা পেলোডগুলির SHA-256 হ্যাশ সকেট এবং স্টেপসিকিউরিটি থেকে পাওয়া যাবে। রানটাইমে পর্যবেক্ষণ করা নেটওয়ার্ক এন্ডপয়েন্টগুলির মধ্যে রয়েছে দুটি C2 আইপি (37.27.122.124 এবং 57.128.246.79) এবং টর ইনফ্রাস্ট্রাকচার (check.torproject.org, archive.torproject.org)। অন-হোস্ট আর্টিফ্যাক্টগুলির মধ্যে সিস্টেম টেম্প ডিরেক্টরিতে একটি এলোমেলো নামের লুকানো ফাইল রয়েছে (এই ফর্মের)। .{random} or .{random}.exe উইন্ডোজে), সাথে স্থায়িত্বের জন্য একটি লুকানো উইন্ডোজ শিডিউলড টাস্ক বা ম্যাকওএস লঞ্চএজেন্ট। জেফ্রগ আরও ফ্ল্যাগ করে temp.sh ডেটা এক্সফিলট্রেশন এন্ডপয়েন্ট হিসাবে এবং setup.mjs প্রচার স্ক্রিপ্ট হিসাবে।
আপনি যদি কোনো ত্রুটিপূর্ণ সংস্করণ চালিয়ে থাকেন, তবে এর নাগালের মধ্যে থাকা প্রতিটি গোপনীয় তথ্য চুরি হয়ে গেছে বলে গণ্য করুন। ক্লাউড কী, এনপিএম ও গিটহাব টোকেন, এআই-টুল এবং এমসিপি এপিআই কী পরিবর্তন করুনডিসকর্ড, স্ল্যাক, ব্রাউজার এবং বিটওয়ার্ডেন সেশনগুলো বাতিল করুন এবং ওই হোস্টের ওয়ালেটগুলো থেকে যেকোনো ক্রিপ্টো সরিয়ে ফেলুন। দুটি C2 আইপি ব্লক করুন এবং টর বা অন্য কোনো মাধ্যমে অস্বাভাবিক বহির্গামী সংযোগের ওপর নজর রাখুন। temp.shইনস্টল করার কয়েক সেকেন্ডের মধ্যেই চোরটি তার কাজ করে, তাই সামান্য সময়ের সংস্পর্শই ক্রেডেনশিয়াল ফাঁস হওয়ার জন্য যথেষ্ট।
এই ঘটনাটি স্পষ্টভাবে মনে করিয়ে দেয় যে, এনপিএম ইকোসিস্টেম সাপ্লাই চেইন আক্রমণের একটি প্রধান লক্ষ্যবস্তু হিসেবেই রয়ে গেছে। ৮ই জুলাই এনপিএম ১২ ডিফল্টরূপে ইনস্টল স্ক্রিপ্ট বন্ধ রেখে প্রকাশিত হওয়া সত্ত্বেওপুরোনো ক্লায়েন্টগুলো এখনও সেগুলো স্বয়ংক্রিয়ভাবে চালায়, এবং পরবর্তী ক্ষতিকর সংস্করণগুলো সেই সুরক্ষা পুরোপুরি এড়িয়ে গেছে। ইনজেক্টিভ এসডিকে হ্যাক হওয়ার মাত্র কয়েক দিন পরেই জেস্ক্র্যাম্বলারের ওপর এই আক্রমণটি দেখায় যে, আক্রমণকারীরা ক্রমবর্ধমানভাবে ডেভেলপার টুলস এবং নিরাপত্তা বিক্রেতাদেরকেই লক্ষ্যবস্তু করছে। শিক্ষাটি স্পষ্ট: যে কোনো মেশিন যা চালায় npm install আসল পরিচয়পত্র ব্যবহার করা মানে এমন একটি সরবরাহ শৃঙ্খলের উপর আস্থা রাখা, যা একটি মাত্র চুরি হওয়া টোকেনের কারণে মিনিটের মধ্যে প্রতিকূল হয়ে উঠতে পারে।