তেরোটি npm প্যাকেজ, ৪৮ সেকেন্ড, একটি নকল ওয়ালেট SDK

npm রেজিস্ট্রি-তে একটি সমন্বিত আক্রমণ মাত্র ৪৮ সেকেন্ডের মধ্যে Coinbase-এর আদলে তৈরি ১৩টি জাল ওয়ালেট SDK প্যাকেজ ছড়িয়ে দিয়েছে, যা দেখায় যে ক্ষতিকারক কোড কত দ্রুত বিশ্বস্ত টুলের ছদ্মবেশ ধারণ করতে পারে। ডেভেলপাররা যারা শুধুমাত্র একটি পরিচিত নামের ওপর ভিত্তি করে কোনো প্যাকেজ ইনস্টল করেন, তারা অজান্তেই তাদের অ্যাপে একটি নকল SDK প্রবেশ করিয়ে ফেলতে পারেন।

প্যাকেজগুলো ৭ সেপ্টেম্বর ২০২৬ তারিখে UTC সময় ০৪:৫৪:৫৯ থেকে ০৪:৫৫:৪৮ এর মধ্যে দেখা দেয়। cb-wallet-http এবং scw-core এর মতো নামগুলো অফিসিয়াল @coinbase/wallet-sdk নেমস্পেসের প্রতিধ্বনি করে। টাইপো-স্কোয়াটিং (typo-squatting) করার পরিবর্তে, আক্রমণকারীরা পরিচিত স্ট্রিং দিয়ে নামের শুরুতে প্রিফিক্স যোগ করেছিল, এই আশায় যে কোনো সহকর্মীর সুপারিশ বা কোনো ফোরাম পোস্ট ব্যবহারকারীদের তাদের বৈধতা সম্পর্কে আশ্বস্ত করবে।

১৩টি রিলিজেরই কনফিগারেশন ছিল একই রকম: ভার্সন 0.0.1-security, একটি খালি মেইনটেইনার লিস্ট এবং পাবলিশ করার পরপরই প্রদর্শিত ডিফল্ট npm মেটাডেটা। এই একই রকম সেটআপ নির্দেশ করে যে একটি মাত্র স্ক্রিপ্টের মাধ্যমে এই প্যাকেজগুলো তৈরি করা হয়েছে, যা ম্যানুয়াল প্রচেষ্টার পরিবর্তে অটোমেশনের একটি লক্ষণ।

npm-এর ওপেন পাবলিশিং মডেল যে কাউকে পূর্ব পর্যালোচনা ছাড়াই প্যাকেজ আপলোড করার সুযোগ দেয়, যা এ ধরনের আক্রমণকে সম্ভব করে তোলে। অতীতের সাপ্লাই-চেইন (supply-chain) ঘটনাগুলো দেখিয়েছে যে একবার কোনো ক্ষতিকারক কোড ডিপেন্ডেন্সি ট্রিতে (dependency tree) প্রবেশ করলে, এটি যে মেশিনে ইনস্টল করা হয় সেখানেই রান করে।

NPM এখনও অপরাধীদের শনাক্ত করতে পারেনি বা প্রাথমিক আপলোডের বাইরে কোডটি কীভাবে ছড়িয়ে পড়েছে তা ব্যাখ্যা করেনি। আক্রমণকারীরা বিশেষভাবে Coinbase ব্যবহারকারীদের লক্ষ্য করেছিল নাকি কেবল বিশ্বাসযোগ্য নামের মাধ্যমে রেজিস্ট্রিটি প্লাবিত করার চেষ্টা করেছিল যাতে কেউ সেগুলো গ্রহণ করে, তাও স্পষ্ট নয়।

ডেভেলপাররা এখন যা করতে পারেন

  • কোনো প্যাকেজ যোগ করার আগে তার পাবলিশার যাচাই করে নিন; অফিসিয়াল SDK গুলো ভেরিফাইড অর্গানাইজেশন স্কোপের (verified organization scopes) অধীনে থাকে।
  • ডিপেন্ডেন্সিগুলোতে পরিচিত ক্ষতিকারক সিগনেচার আছে কি না তা স্ক্যান করার জন্য টুল ব্যবহার করুন।
  • লকফাইলে (lockfiles) নির্দিষ্ট ভার্সন পিন করে রাখুন এবং পর্যালোচনা ছাড়া নতুন পাবলিশ করা প্যাকেজগুলো ব্যবহার করা থেকে বিরত থাকুন।
  • এমন রেজিস্ট্রি পছন্দ করুন যেখানে মেইনটেইনারদের জন্য টু-ফ্যাক্টর অথেন্টিকেশন (two-factor authentication) প্রয়োজন হয়।

যা খেয়াল রাখতে হবে

  • পরিচিত ব্র্যান্ডের অনুকরণে তৈরি প্যাকেজগুলোর জন্য npm ভ্যাটিং (vetting) প্রক্রিয়া আরও কঠোর করে কি না।
  • কমিউনিটি-চালিত ব্ল্যাকলিস্ট যা ছদ্মবেশী নামগুলোকে চিহ্নিত করে।
  • ১৩টি নকল SDK-এর কোনো সক্রিয় এক্সপ্লয়েটেশন (exploitation) সম্পর্কে সিকিউরিটি রিসার্চারদের আপডেট।

এই ঘটনাটি প্রমাণ করে যে একটি পরিচিত নামের মানেই নিরাপত্তার নিশ্চয়তা নয়। ওপেন-সোর্স ইকোসিস্টেমে সাপ্লাই-চেইন আক্রমণের বিরুদ্ধে সতর্কতা এবং যাচাইকরণই হলো সবচেয়ে শক্তিশালী প্রতিরক্ষা।