- একাধিক চক্র অ্যাকাউন্ট দখল এবং টাইপোস্কোয়াটিংয়ের মাধ্যমে UI কম্পোনেন্ট থেকে শুরু করে CLI ইউটিলিটি পর্যন্ত বিশ্বস্ত React Native npm প্যাকেজ এবং টুলিংয়ের অপব্যবহার করেছে।
- আক্রমণকারীরা সোলানা বা বিকেন্দ্রীভূত C2 ব্যবহার করে ক্রমবর্ধমানভাবে অত্যাধুনিক বহু-পর্যায়ের ম্যালওয়্যার মোতায়েন করছে, যার লক্ষ্য থাকছে ডেভেলপারদের মেশিন, CI পাইপলাইন এবং ওয়ালেট বা ক্রেডেনশিয়াল ডেটা।
- নিরাপত্তা সরবরাহকারীরা এখন এই সাপ্লাই-চেইন আক্রমণগুলো মিনিটের মধ্যে শনাক্ত ও প্রতিহত করতে এআই বিশ্লেষণ, কুলডাউন চেক এবং শক্তিশালী সিআই ইগ্রেস কন্ট্রোলের উপর নির্ভর করে।
- সাপ্লাই-চেইন ঝুঁকি উল্লেখযোগ্যভাবে কমাতে React Native টিমগুলোকে অবশ্যই কঠোর ডিপেন্ডেন্সি হাইজিন, npm 2FA, লকফাইল এবং নিরবচ্ছিন্ন মনিটরিং-এর সমন্বয় করতে হবে।
মোবাইল অ্যাপ তৈরির জন্য রিয়্যাক্ট নেটিভ একটি বহুল ব্যবহৃত ফ্রেমওয়ার্ক হয়ে উঠেছে, যা এর এনপিএম ইকোসিস্টেমকে ডেভেলপারদের মেশিন এবং সিআই পাইপলাইন হ্যাক করতে চাওয়া আক্রমণকারীদের কাছে অত্যন্ত আকর্ষণীয় লক্ষ্যে পরিণত করেছে। গত কয়েক বছরে, বেশ কয়েকটি অত্যন্ত সুপরিকল্পিত অভিযান বিশ্বস্ত React Native প্যাকেজ, ফ্রেমওয়ার্কটির জনপ্রিয় টুলিং এবং এমনকি টাইপোস্কোয়াটেড ইউটিলিটিগুলোর অপব্যবহার করে ম্যালওয়্যার প্রবেশ করানো, ক্রেডেনশিয়াল চুরি করা, ওয়ালেট থেকে তথ্য পাচার করা এবং বৃহৎ পরিসরে জাভাস্ক্রিপ্ট প্রকল্পে অন্তর্ঘাতমূলক কার্যকলাপ চালিয়েছে।
আজকাল যদি আপনি React Native অ্যাপ তৈরি বা রক্ষণাবেক্ষণ করেন, তবে শুধু “npm install করে ভাগ্যের উপর ভরসা করা” আর যথেষ্ট নয়। একাধিক হুমকি সৃষ্টিকারী গোষ্ঠী পরিকল্পিতভাবে npm-এর অপব্যবহার করছে, যার লক্ষ্যবস্তুতে রয়েছে UI কম্পোনেন্ট থেকে শুরু করে CLI টুল, এমনকি আপনার লকফাইলের গভীরে লুকিয়ে থাকা ট্রানজিটিভ ডিপেন্ডেন্সি গ্রাফ পর্যন্ত সবকিছু। এই নিবন্ধে প্রধান পরিচিত ঘটনাগুলো নিয়ে আলোচনা করা হয়েছে, ম্যালওয়্যারটি কীভাবে কাজ করে তা বিশদভাবে ব্যাখ্যা করা হয়েছে এবং আপনার নিজের ডেভেলপমেন্ট পরিবেশে এর প্রভাব কমাতে আপনি যে বাস্তবসম্মত পদক্ষেপগুলো নিতে পারেন, তা তুলে ধরা হয়েছে।
React Native ইনপুট কম্পোনেন্টগুলিতে অ্যাকাউন্ট দখল এবং ম্যালওয়্যার
রিঅ্যাক্ট নেটিভ জগতের সবচেয়ে উদ্বেগজনক সাপ্লাই-চেইন ঘটনাগুলোর মধ্যে একটি ফোন এবং দেশ নির্বাচনের জন্য ব্যবহৃত দুটি অত্যন্ত প্রচলিত UI কম্পোনেন্টকে প্রভাবিত করেছিল: react-native-international-phone-number এবং react-native-country-select. উভয় প্যাকেজ, একই লেখক দ্বারা রক্ষণাবেক্ষণ করা হয় (@অ্যাস্ট্রোনটা, এনপিএম ব্যবহারকারী astroonauta), প্রতি সপ্তাহে হাজার হাজার ডাউনলোড অর্জন করেছে এবং অনেক প্রোডাকশন মোবাইল অ্যাপে অন্তর্ভুক্ত রয়েছে।
২০২৬ সালের ১৬ই মার্চ, স্টেপসিকিউরিটির এআই-ভিত্তিক প্যাকেজ অ্যানালিস্ট সর্বপ্রথম শনাক্ত করে যে, এই লাইব্রেরিগুলোর নতুন সংস্করণগুলোতে হঠাৎ করেই ইনস্টল-টাইম ম্যালওয়্যার যুক্ত হয়েছে। তাৎক্ষণিকভাবে ক্ষতিগ্রস্ত প্রকাশনাগুলো ছিল react-native-international-phone-number@0.11.8 এবং react-native-country-select@0.3.91সেই সময়ে সর্বশেষ নিশ্চিত ক্লিন ভার্সনগুলো ছিল 0.11.7 এবং 0.3.9 যথাক্রমে.
প্রাথমিক ব্যাকডোরটি (ওয়েভ ১) ছিল অত্যন্ত সহজ: একটি নতুন preinstall স্ক্রিপ্ট এবং একটি অত্যন্ত অস্পষ্ট install.js টারবলের মধ্যে বান্ডেল করা ফাইল। দূষিত package.json স্নিপেটটি দেখতে এইরকম ছিল:
"scripts": { "preinstall": "node install.js" }
কারণ npm লাইফসাইকেল স্ক্রিপ্টগুলি স্বয়ংক্রিয়ভাবে চলে npm installযারা এই সংস্করণগুলো ডাউনলোড করেছে – স্থানীয়ভাবে বা CI-তে – তারা কোনো কোড ইম্পোর্ট না করেই ম্যালওয়্যারটি চালিয়েছে। ক্ষতিগ্রস্ত সংস্করণগুলোর জন্য কোনো সংশ্লিষ্ট গিট ট্যাগ, রিলিজ বা সিআই ওয়ার্কফ্লো রান ছিল না, এবং gitHead এটি পূর্ববর্তী ভালো রিলিজের সাথে মিলে গিয়েছিল, যা একটি জোরালো ইঙ্গিত দেয় যে আক্রমণকারী গিটহাব রিপো পরিবর্তন না করে, রক্ষণাবেক্ষণকারীর এনপিএম অ্যাকাউন্টে সরাসরি প্রকাশের অ্যাক্সেস লাভ করেছিল।
সেই সময়ের ডাউনলোডের তথ্য থেকে বোঝা যায় পরিস্থিতি কতটা খারাপ হতে পারত: প্রতি সপ্তাহে প্রায় ৯,০০০ ডাউনলোড। react-native-country-select এবং ২০,০০০ এরও বেশি react-native-international-phone-numberসব মিলিয়ে দুজনের মোট মাসিক ডাউনলোডের সংখ্যা দাঁড়িয়েছে ১ লাখ ৩০ হাজারেরও বেশি। ঠিক এই ধরনের বিপুল পরিমাণে ব্যবহৃত কিন্তু সহজে চোখে না পড়া ডিপেন্ডেন্সিই নিঃশব্দে হাজার হাজার ডেভেলপার এবং CI মেশিনে ঢুকে পড়ে।
ত্রি-তরঙ্গের আক্রমণ: সুস্পষ্ট প্রি-ইনস্টল থেকে গুপ্ত নির্ভরতা শৃঙ্খল পর্যন্ত
এই রিয়্যাক্ট নেটিভ প্যাকেজগুলোর বিরুদ্ধে অভিযানটি তিনটি স্বতন্ত্র ধাপে পরিচালিত হয়েছিল, যার প্রতিটি পর্যায় আগেরটির চেয়ে আরও বেশি কৌশলী ছিল এবং একই মূল ম্যালওয়্যার পুনরায় ব্যবহার করা হয়েছিল। স্টেপসিকিউরিটি প্রায় রিয়েল টাইমে ঘটনাটির বিবর্তন পর্যবেক্ষণ করছিল এবং রক্ষণাবেক্ষণকারীর সাথে সমন্বয় সাধন করছিল, কিন্তু আক্রমণকারী বারবার হ্যাক হওয়া এনপিএম অ্যাকাউন্টটির অ্যাক্সেস পুনরুদ্ধার বা ধরে রেখেছিল।
প্রথম তরঙ্গ (১৬ মার্চ, ২০২৬) সরাসরি কেন্দ্র করে preinstall উভয় প্যাকেজেই হুক করুন। প্রকাশের প্রায় পাঁচ মিনিটের মধ্যেই, স্টেপসিকিউরিটির এআই নতুন রিলিজগুলোকে গুরুতর হিসেবে চিহ্নিত করে এবং গিটহাবে ইস্যু খোলা হয়: #165 react-native-international-phone-number এবং #১১ এর জন্য react-native-country-selectরক্ষণাবেক্ষণকারী দ্রুত সাড়া দিয়ে ক্ষতিকর সংস্করণগুলো বাতিল করে একটি পরিষ্কার সংস্করণ প্রকাশ করেছেন। react-native-country-select@0.4.0প্রকাশ থেকে বাতিলকরণ পর্যন্ত মোট সময় লেগেছিল প্রায় ২ ঘন্টা ২১ মিনিট – যা ইকোসিস্টেমের মানদণ্ডে দ্রুত।
তা সত্ত্বেও, আক্রমণকারী কখনোই npm ক্রেডেনশিয়ালগুলোর নিয়ন্ত্রণ হারায়নি, যার ফলে ১৭ই মার্চ দ্বিতীয় ঢেউটি আসে। মূল প্যাকেজগুলোতে আবার একটি সুস্পষ্ট স্ক্রিপ্ট যুক্ত করার পরিবর্তে, হুমকিদাতা দুটি নতুন স্কোপড প্যাকেজ তৈরি করেছে যা গোপন পরিকাঠামো হিসেবে কাজ করে:
@usebioerhold8733/s-format@2.0.1– একটি ফাঁপা প্রতিরূপstring-formatসঙ্গে একটিpostinstall: "node init.js"স্ক্রিপ্ট কিন্তু অনুপস্থিতinit.jsফাইলটি, তাই হুকটি নীরবে ব্যর্থ হয়।@agnoliaarisian7180/string-argv@0.3.0– একটি প্রায়-খালি প্যাকেজ (README, LICENSE, package.json) যার একমাত্র আসল উদ্দেশ্য ছিল নির্ভর করা@usebioerhold8733/s-format, একটি প্রোটনমেইল-ভিত্তিক রক্ষণাবেক্ষণকারীর ঠিকানা সহ।
সেই সন্ধ্যার পরে, react-native-international-phone-number@0.12.1 সঙ্গে প্রকাশিত হয়েছিল @agnoliaarisian7180/string-argv@0.3.0 কোনো GitHub Actions কার্যকলাপ ছাড়াই এটিকে একটি নতুন ডিপেন্ডেন্সি হিসেবে যোগ করা হয়েছে। সেই মুহূর্তে চেইনটি প্রস্তুত কিন্তু নিষ্ক্রিয় ছিল, পেলোডটি চালু হওয়ার অপেক্ষায়। যখন স্টেপসিকিউরিটি এই অস্বাভাবিকতার কথা জানায়, তখন রক্ষণাবেক্ষণকারী সেই বিষয়টিই নিশ্চিত করেন যা প্রাপ্ত নিদর্শনগুলো থেকে ইতিমধ্যেই স্পষ্ট ছিল: “আমার এনপিএম অ্যাকাউন্ট আক্রান্ত হয়েছিল এবং লাইব্রেরিটি দখল করে নেওয়া হয়েছিল”।
তৃতীয় পর্যায় (১৮ই মার্চ) সাজানো পরিকাঠামোটিকে একটি সক্রিয় বহুস্তরীয় ম্যালওয়্যার সরবরাহ শৃঙ্খলে রূপান্তরিত করে এবং তারপর দ্রুতগতিতে সেটিকে আরও পরিমার্জিত করে। এক ঘণ্টারও কম সময়ের মধ্যে রিলে প্যাকেজ এবং মূল লাইব্রেরি উভয়েরই নতুন সংস্করণ প্রকাশ করা হয়েছিল এবং আক্রমণকারী পেলোডটি উৎক্ষেপণের পদ্ধতিতে পরিবর্তন আনছিল।
চূড়ান্ত শৃঙ্খলটি দেখতে এইরকম ছিল:
react-native-international-phone-number@0.12.2/0.12.3 → @agnoliaarisian7180/string-argv@latest → @usebioerhold8733/s-format@latest → postinstall → node child.js → init.js (malware)
আক্রমণকারী প্রথমে পেলোডটি চালু করেছিল @usebioerhold8733/s-format@2.0.2 একটি বড়, অস্পষ্ট যোগ করে init.js যে ফাইলটি পূর্ববর্তীটির সাথে বাইট-বাই-বাইট অভিন্ন ছিল install.js ওয়েভ ১ থেকে। তারপর তারা পরিবর্তন করল postinstall কল করতে child.js পরিবর্তে init.js, প্রকাশিত 2.0.3 স্ক্রিপ্টটি অনুপস্থিত থাকা সত্ত্বেও (আরেকটি পরীক্ষামূলক চালনা), এবং অবশেষে পাঠানো হলো। 2.0.4 একটি ক্ষুদ্র সঙ্গে child.js লোডার যা কেবল পরীক্ষা করে init.js এবং এর মাধ্যমে এটি কার্যকর করে child_process.exec ত্রুটি এবং stderr আউটপুট বাদ দেওয়ার সময়।
একই সময়ে, @agnoliaarisian7180/string-argv@0.3.1 এর নির্ভরতা পরিবর্তন করেছে s-format পিন করা সংস্করণ থেকে "latest", এবং react-native-international-phone-number@0.12.2 সঙ্গে একই করেছেন string-argv. এর ফলে একটি স্বয়ংক্রিয়ভাবে হালনাগাদ হওয়া ক্ষতিকর শৃঙ্খল তৈরি হয়েছিল, যেখানে মূল প্যাকেজটির প্রতিটি ইনস্টলেশন স্বয়ংক্রিয়ভাবে পেলোডের সর্বশেষ সংস্করণটি টেনে নিত।
অবশেষে, react-native-international-phone-number@0.12.3 এখন-অপ্রয়োজনীয় প্রিইনস্টল হুকটি সরিয়ে দেওয়া হয়েছে (দেখতে আরও পরিচ্ছন্ন করার জন্য), ক্ষতিকর ডিপেন্ডেন্সি চেইনটি রেখে দেওয়া হয়েছে, এবং এনপিএম মেইনটেইনারের ইমেলটি পরিবর্তন করে মূল লেখকের মালিকানাধীন নয় এমন আরও একটি প্রোটনমেইল অ্যাকাউন্ট দেওয়া হয়েছে। এটি একটি স্পষ্ট ইঙ্গিত ছিল যে আক্রমণকারী কেবল সুযোগ বুঝে ফাঁস হওয়া টোকেন পুনরায় ব্যবহার করছিল না, বরং এনপিএম আইডেন্টিটির ওপর স্থায়ী নিয়ন্ত্রণ সুসংহত করছিল।
রিয়্যাক্ট নেটিভ ডেভেলপারদের লক্ষ্য করে তৈরি সোলানা-সমর্থিত ম্যালওয়্যারের ভেতরে
আড়ালে, তিনটি ধাপেই চলমান পেলোডটি ছিল একই অত্যাধুনিক বহু-পর্যায়ের ম্যালওয়্যার, যা সোলানা ব্লকচেইনকে একটি গতিশীল কমান্ড-অ্যান্ড-কন্ট্রোল চ্যানেল হিসেবে অপব্যবহার করে। সরবরাহ পদ্ধতি ক্রমাগত পরিবর্তিত হচ্ছিল, কিন্তু “অস্ত্রটি” সমস্ত সংস্করণে অভিন্ন ছিল; এমনকি প্রথম পর্যায় থেকে তৃতীয় পর্যায়ের পরিকাঠামোতে স্থানান্তরিত করার পরেও ফাইলটি বাইট-বাই-বাইট একই ছিল।
স্ক্রিপ্টটি ইচ্ছাকৃতভাবে ১০ সেকেন্ড দেরিতে শুরু হয়। setTimeout, স্যান্ডবক্স এড়ানোর একটি চিরায়ত কৌশল। অনেক স্বয়ংক্রিয় স্যান্ডবক্স এবং নিরাপত্তা টুল স্ক্রিপ্টগুলোকে খুব অল্প সময়ের জন্য কার্যকর হওয়ার সুযোগ দেয়, এরপরই তারা ধরে নেয় যে সন্দেহজনক কিছু ঘটেনি। তাই ম্যালওয়্যারটি গুরুত্বপূর্ণ কোনো কাজ করার আগে কেবল সেই সময়টুকুর জন্য অপেক্ষা করে।
এরপর, এটি রাশিয়া এবং সিআইএস-এর অংশবিশেষের সিস্টেমগুলোকে সংক্রামিত হওয়া থেকে বাঁচাতে একটি জিও-ফিল্টার প্রয়োগ করে। এটি পরিবেশগত ভেরিয়েবলগুলি পরীক্ষা করে যেমন LANG, LANGUAGE, LC_ALLহোস্ট ব্যবহারকারীর তথ্য, সিস্টেম টাইমজোন এবং এমনকি সরাসরি UTC অফসেট, এমন মান খোঁজার জন্য যা রাশিয়ান লোকেল নির্দেশ করে (যেমন ru_RU or Russianঅথবা রাশিয়া/সিআইএস-এর সময় অঞ্চলের তালিকা থেকে কোনো একটি। যদি এগুলোর কোনোটি মিলে যায়, তাহলে স্ক্রিপ্টটি সঙ্গে সঙ্গে এবং নীরবে বন্ধ হয়ে যায়।
পরিবেশটি সেই যাচাইয়ে উত্তীর্ণ হলেই ম্যালওয়্যারটি সোলানা ব্লকচেইনের সাথে যোগাযোগ শুরু করে। এটিতে একটি হার্ড-কোডেড ওয়ালেট ঠিকানা থাকে এবং এটি এর মাধ্যমে সেটিকে কোয়েরি করে। getSignaturesForAddress বিভিন্ন প্রোভাইডার দ্বারা হোস্ট করা নয়টি ভিন্ন সোলানা আরপিসি এন্ডপয়েন্ট জুড়ে JSON-RPC পদ্ধতি ব্যবহার করা হয়। এই ডিজাইনটি আক্রমণকারীকে উচ্চ প্রাপ্যতা প্রদান করে এবং সাধারণ ডোমেইন বা আইপি ব্লক করাকে অকার্যকর করে তোলে।
কৌশলটি হলো, আক্রমণকারী ওই ওয়ালেটে পাঠানো সোলানা লেনদেনের মেমো ফিল্ডের ভেতরে পরবর্তী ধাপের পেলোড ইউআরএলটি লুকিয়ে রাখে। মেমোটি বেস৬৪-এনকোডেড JSON-এর একটি অংশ সংরক্ষণ করে যার link ফিল্ডটিতে পরবর্তী ধাপের URL থাকে। একটি নতুন ট্রানজ্যাকশন পোস্ট করার মাধ্যমে, অপারেটর প্রকাশিত npm প্যাকেজগুলো পরিবর্তন না করেই যেকোনো সময় পেলোড URL পরিবর্তন করতে পারেন।
একবার ইউআরএলটি বের করে নিলে, ম্যালওয়্যারটি আক্রমণকারীর সার্ভারে একটি HTTP অনুরোধ পাঠায়। http://45.32.150.251/কাস্টম পদ্ধতিতে OS-এর ধরণ পাঠানো os হেডার, যাতে C2 প্ল্যাটফর্ম-নির্দিষ্ট বাইনারিগুলো ফেরত দিতে পারে। রেসপন্স বডিতে এনক্রিপ্টেড পেলোড থাকে, কিন্তু এটিকে ডিক্রিপ্ট করার জন্য প্রয়োজনীয় AES-256 কী এবং IV শুধুমাত্র HTTP হেডারে পাঠানো হয়।secretkey এবং ivbase64সুতরাং, ক্যাশ করা বা ইন্টারসেপ্ট করা যেকোনো শারীরিক ডেটা নিজে থেকে অকেজো।
ডিক্রিপ্ট করা দ্বিতীয় পর্যায়টি কখনও ডিস্ক স্পর্শ করে না; এটি মেমরিতে সম্পাদিত হয় eval(atob(...)) ইউনিক্স-সদৃশ সিস্টেমে বা এর মাধ্যমে vm.Script উইন্ডোজে নোডের অভ্যন্তরীণ কার্যপ্রণালীতে সম্পূর্ণ অ্যাক্সেস সহ। এরপরে, ম্যালওয়্যারটি একটি ড্রপ করে। ~/init.json মার্কার ফাইল, যা একটি টাইমস্ট্যাম্প এবং একটি অনন্য শনাক্তকারী সংরক্ষণ করে, যাতে একই মেশিন প্রতি ৪৮ ঘণ্টায় একবারের বেশি পুনরায় সংক্রমিত না হয়। এই রেট লিমিটিং অপ্রয়োজনীয় তথ্য ব্যাপকভাবে কমিয়ে দেয় এবং প্রতিরোধকারীদের আঁকড়ে ধরার জন্য কম আচরণগত সূচক সরবরাহ করে।
একই সোলানা এবং HTTP ধাপগুলো পুনরায় চালিয়ে গবেষকদের দ্বারা উদ্ধারকৃত AES-ডিক্রিপ্টেড তৃতীয়-পর্যায়ের পেলোডটি হলো একটি উইন্ডোজ-কেন্দ্রিক ক্রেডেনশিয়াল ও ওয়ালেট স্টিলার এবং লোডার। এটি অধ্যবসায় প্রতিষ্ঠা করে schtasks এবং শীর্ষ XNUMX গ্লোবাল HR এক্সিলেন্স অ্যাওয়ার্ডের Run রেজিস্ট্রি কী থেকে অতিরিক্ত এনক্রিপ্টেড মডিউল ডাউনলোড করে 45.32.150.251এবং এর ফলে প্রাপ্ত লুণ্ঠিত সম্পদ 217.69.3.x রেঞ্জের একটি আইপি-তে পাচার করে।
এই পেলোডটি Chrome এবং Firefox জোর করে বন্ধ করার পর ব্রাউজার প্রোফাইল ফোল্ডার এবং স্থানীয় ওয়ালেট ডিরেক্টরিগুলো ঘেঁটে MetaMask, Phantom, Exodus, Atomic, Guarda, Coinomi, Daedalus, OKX Wallet, Trust Wallet, Braavos-এর মতো ডেস্কটপ ওয়ালেট এবং ব্রাউজার এক্সটেনশনগুলো থেকে ডেটা খুঁজে বের করে। এর পাশাপাশি, এটি সরাসরি লোকাল কনফিগারেশন এবং ক্রেডেনশিয়াল হেল্পার থেকে এনপিএম টোকেন ও গিটহাব ক্রেডেনশিয়াল সংগ্রহ করে, যা হ্যাক হওয়া ডেভেলপার বক্সগুলোকে পরবর্তী সাপ্লাই-চেইন আক্রমণের জন্য উপযুক্ত উৎক্ষেপণ মঞ্চে পরিণত করে।
উল্লেখযোগ্যভাবে, এই ম্যালওয়্যারটি x86 এবং x64 উভয়ের জন্যই নিজস্ব Node.js রানটাইম (v22.9.0) ডাউনলোড করে নেয়। %APPDATA%\_node_x86 এবং %APPDATA%\_node_x64, টার্গেট সিস্টেমে নোড ইনস্টল করা না থাকলেও এর একটি সামঞ্জস্যপূর্ণ এক্সিকিউশন এনভায়রনমেন্ট নিশ্চিত করা।
ফোর্সমেমো এবং গ্লাসওয়ার্ম থ্রেট অ্যাক্টরের লিঙ্ক
এই React Native npm ঘটনার প্রযুক্তিগত বৈশিষ্ট্য পূর্ববর্তী “ForceMemo” নামক একটি অভিযানের সাথে প্রায় নিখুঁতভাবে মিলে যায়, যা GitHub-এর শত শত Python রিপোজিটরিকে ক্ষতিগ্রস্ত করেছিল। উভয় অপারেশনেই ডেড-ড্রপ C2 হিসেবে সোলানা, একই নয়টি RPC এন্ডপয়েন্টের গ্রুপ এবং একই JSON মেমো ফরম্যাট ব্যবহার করা হয়েছিল। link ক্ষেত্র, অভিন্ন রাশিয়া/সিআইএস ভূ-ফিল্টারিং যুক্তি, একই ~/init.json Vultr-এ হোস্ট করা পার্সিস্টেন্স লক এবং এমনকি অনুরূপ পরিকাঠামো পরিসর।
যদিও দুটি অভিযানের সোলানা ওয়ালেট অ্যাড্রেসগুলো ভিন্ন, বাকি সবকিছুই একটি একক অত্যন্ত দক্ষ চক্রের দিকে ইঙ্গিত করে, যাকে গ্লাসওয়ার্ম (GlassWorm) নামে পরিচিত গোষ্ঠী বলে মনে করা হয়। ফোর্সমেমো বিষাক্ত গিটহাব রিপো ব্যবহার করে ডেভেলপারদের লক্ষ্যবস্তু করেছিল, অন্যদিকে রিয়্যাক্ট নেটিভের ঘটনাটি এনপিএম প্যাকেজ এবং সেগুলোর ডিপেন্ডেন্সি চেইনের মাধ্যমে তা করেছিল। কৌশলটি স্পষ্ট: একটি অত্যাধুনিক, মডিউলার ম্যালওয়্যার ফ্রেমওয়ার্ককে পুনঃব্যবহার করা, কিন্তু এটিকে বিভিন্ন ডিস্ট্রিবিউশন চ্যানেলের সাথে যুক্ত করে যতটা সম্ভব বেশি ডেভেলপমেন্ট এনভায়রনমেন্টে পৌঁছানো।
React Native এবং JavaScript সম্পর্কিত অন্যান্য ক্ষতিকর npm ক্যাম্পেইন
AstrOOnauta-র নিরাপত্তা লঙ্ঘন হলো npm-ভিত্তিক আক্রমণগুলোর একটি বৃহত্তর তরঙ্গের মাত্র একটি অংশ, যা প্রত্যক্ষ বা পরোক্ষভাবে React Native অ্যাপগুলোকে প্রভাবিত করে। বেশ কিছু নিরাপত্তা সরবরাহকারী প্রতিষ্ঠান রিয়্যাক্ট নেটিভ UI লাইব্রেরি, কোর CLI টুলিং, এবং এমনকি জেনেরিক বিল্ড প্লাগইনগুলোকে লক্ষ্য করে সমান্তরাল অভিযান পরিচালনার কথা নথিভুক্ত করেছে, যেগুলোর ওপর অনেক রিয়্যাক্ট নেটিভ কোডবেস নির্ভর করে।
আইকিডো সিকিউরিটি ২০২৫ সালের জুন মাসে একটি বড় সাপ্লাই-চেইন অপারেশন উন্মোচন করেছে, যার মাধ্যমে অন্তত ১৬টি রিয়্যাক্ট নেটিভ-সম্পর্কিত প্যাকেজে ব্যাকডোর প্রবেশ করানো হয়েছিল। @react-native-aria/* স্কোপ প্লাস @gluestack-ui/utilsসম্মিলিতভাবে প্রতি সপ্তাহে প্রায় দশ লক্ষ ডাউনলোড হয়। প্রাথমিক লঙ্ঘনটি ঘটেছিল ৬ জুন, ২০২৫ তারিখে, যা শুরু হয়েছিল @react-native-aria/focus@0.2.10, এবং তারপর ৭ই জুন তারিখে অতিরিক্ত ফোকাস, ওভারলে, ইন্টারঅ্যাকশন, টগল, সুইচ, চেকবক্স, রেডিও, বাটন, মেনু, লিস্টবক্স, ট্যাব, কম্বোবক্স, ডিসক্লোজার, স্লাইডার, সেপারেটর প্যাকেজ এবং গ্লুস্ট্যাক ইউটিলিটিগুলোতে দ্রুত সম্প্রসারিত হয়।
সেই ক্যাম্পেইনের ম্যালওয়্যারটি ছিল উইন্ডোজ পরিবেশের জন্য বিশেষভাবে তৈরি একটি রিমোট অ্যাক্সেস ট্রোজান (RAT), যা দীর্ঘস্থায়ী হতো। %LOCALAPPDATA%\Programs\Python\Python3127 এবং C2 সার্ভারগুলিতে সংযোগ স্থাপন করা হচ্ছে 136.0.9[.]8 এবং 85.239.62[.]36. এর সক্ষমতার মধ্যে ছিল যথেচ্ছ কমান্ড কার্যকর করা, ফাইল আপলোড/ডাউনলোড এবং দীর্ঘমেয়াদী রিমোট অ্যাক্সেস। এর স্থায়িত্বের কারণে, শুধু React Native লাইব্রেরির একটি ক্লিন ভার্সনে আপগ্রেড করলেও ইতিমধ্যে সংক্রমিত মেশিনগুলো নির্মূল হতো না।
সকেটের থ্রেট রিসার্চ টিমের ফাঁস করা আরেকটি দীর্ঘস্থায়ী প্রচারাভিযানে টাইপোস্কোয়াটিং এবং মিমিক্রি ব্যবহার করে ধ্বংসাত্মক প্যাকেজ স্থাপন করা হতো, যা সুনির্দিষ্টভাবে রিয়্যাক্ট, ভিউ, ভাইট এবং কুইলের মতো জনপ্রিয় জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কগুলোকে লক্ষ্যবস্তু করত। হুমকিদাতা, npm অ্যালিয়াস ব্যবহার করে xuxingfengদুই বছরেরও বেশি সময় ধরে বৈধ এবং ক্ষতিকারক প্যাকেজের মিশ্রণ প্রকাশ করে, তিনি নিজেকে একজন বিশ্বস্ত রক্ষণাবেক্ষণকারী হিসেবে বাহ্যিকভাবে উপস্থাপন করেছিলেন।
প্যাকেজ যেমন vite-plugin-bomb, vite-plugin-bomb-extend, vite-plugin-react-extend, vite-plugin-vue-extend এবং vue-plugin-bomb এগুলো ডেটা চুরি করার জন্য নয়, বরং প্রকল্পগুলোকে সক্রিয়ভাবে কলুষিত বা ধ্বংস করার জন্য ডিজাইন করা হয়েছিল। তারা নির্দিষ্ট তারিখ দ্বারা চালিত বহু-পর্যায়ের আক্রমণ বাস্তবায়ন করেছিল, যার মাধ্যমে গুরুত্বপূর্ণ ফ্রেমওয়ার্ক ফাইলগুলো মুছে ফেলা হয়। node_modules (Vue, React, Vite, TypeScript, Ant Design Vue, Pinia, ECharts এবং আরও অনেক কিছু), কখনও কখনও প্রতি সেকেন্ডে জোরপূর্বক সিস্টেম শাটডাউনের সাথে যুক্ত হয়ে ব্যবহৃত হয় shutdown -s -t 5.
একটি বিশেষভাবে জঘন্য প্যাকেজ, js-hoodজাভাস্ক্রিপ্টের মূল প্রোটোটাইপগুলিতে পরিবর্তন আনা হয়েছে, যেমন Array.prototype.filter, map, push, pop এবং একাধিক String পদ্ধতিসেগুলোকে এমন ফাংশন দিয়ে প্রতিস্থাপন করা হয়, যেগুলো সিনট্যাক্টিকভাবে সঠিক মনে হলেও এলোমেলো ডেটা রিটার্ন করে। এর ফলে অ্যাপ্লিকেশনগুলো চলতে থাকলেও ত্রুটিপূর্ণ ও অনির্দিষ্ট ফলাফল তৈরি করে, যা ডিবাগ করা অত্যন্ত কঠিন।
সার্জারির quill-image-downloader সিরিজটি ভিন্ন দিকে মোড় নেয় এবং ক্লায়েন্ট-সাইড স্টোরেজ নাশকতার উপর আলোকপাত করে। এটি একটি তিন-ফাইলের আর্কিটেকচার সরবরাহ করেছে যা একটি নির্দিষ্ট সক্রিয়করণ তারিখের পরে, সমস্ত কী-এর উপর পুনরাবৃত্তি করে। localStorage, sessionStorage এবং কুকি, এবং তারপর কাঠামো অক্ষুণ্ণ রেখে সেগুলোর মানকে এলোমেলো অক্ষর দিয়ে আংশিকভাবে মিশিয়ে দেয়। অথেনটিকেশন টোকেন, শপিং কার্ট, ব্যবহারকারীর পছন্দ এবং ব্রাউজারের যেকোনো স্টেট সূক্ষ্মভাবে বিকৃত হয়ে যায়, যার ফলে মাঝে মাঝে ব্যর্থতা দেখা দেয়, যা অনেক দল প্রাথমিকভাবে অ্যাপ্লিকেশন বাগ বলে মনে করে।
ওপি ইনোভেট-এর একটি পৃথক গবেষণায় দশটি ক্ষতিকারক এনপিএম প্যাকেজের একটি গুচ্ছ উন্মোচিত হয়েছে, যেগুলো টাইপস্ক্রিপ্ট, ডিসকর্ড.জেএস, ইথারস.জেএস, নোডমন-এর মতো সুপরিচিত লাইব্রেরিগুলোর ছদ্মবেশ ধারণ করেছিল। react-router-dom এবং zustand. একবার ইনস্টল হয়ে গেলে, এই প্যাকেজগুলি একটি নকল ক্যাপচা উইন্ডো দেখায়, হোস্টের ফিঙ্গারপ্রিন্ট নেয় এবং একটি C2 থেকে একটি বড় ক্রস-প্ল্যাটফর্ম তথ্য-চোর ডাউনলোড করে। 195.133.79.43আবারও উইন্ডোজ, ম্যাকওএস এবং লিনাক্সের জন্য সুস্পষ্ট সমর্থন সহ।
অবশেষে, আইকিডো কর্তৃক বিস্তারিতভাবে বর্ণিত ক্যানিস্টারওয়ার্ম অভিযানটি দেখিয়ে দিয়েছে যে, আক্রমণকারীরা তথ্য সরবরাহের মাধ্যম হিসেবে এনপিএম-কে কাজে লাগাতে ঠিক কতটা দূর যেতে প্রস্তুত। হ্যাক হওয়া একটি পাবলিশার অ্যাকাউন্ট থেকে ১৩৫টিরও বেশি প্যাকেজকে ইনস্টল-টাইম স্ক্রিপ্ট দিয়ে সক্রিয় করা হয়েছিল, যা আপনার অ্যাপ্লিকেশন কোড বা বিল্ড স্টেপগুলোর আগেই এক্সিকিউট হয়। পরবর্তী পর্যায়গুলো লোকাল ডেভ বক্স, সিআই জব, বা কন্টেইনারাইজড বিল্ড নোডে ইনস্টল হওয়ার ওপর নির্ভর করে ভিন্ন ভিন্ন আচরণ করে এবং এগুলো একটি ডিসেন্ট্রালাইজড ইন্টারনেট কম্পিউটার (আইসিপি) ক্যানিস্টারের সাথে যোগাযোগ করে, যা একটি স্টিলথ সি২ (কন্ট্রোল টু) হিসেবে কাজ করে – এর ফলে অপারেটররা এনপিএম রেজিস্ট্রিকে আর কখনও স্পর্শ না করেই তাৎক্ষণিকভাবে এর আচরণ পরিবর্তন করতে পারে।
রিঅ্যাক্ট নেটিভ টুলিং-এ গুরুতর দুর্বলতা: কমিউনিটি সিএলআই আরসিই
React Native-এর সব নিরাপত্তা ঝুঁকি সরাসরি ক্ষতিকারক প্যাকেজ থেকে আসে না; কিছু ঝুঁকি বহুল ব্যবহৃত টুলগুলোর গুরুতর দুর্বলতা থেকে উদ্ভূত হয়। এর একটি উল্লেখযোগ্য উদাহরণ হলো React Native Community CLI-এর CVE‑2025‑11953, যা Windows, macOS এবং Linux-এর ডেভেলপারদের দ্বারা প্রতি সপ্তাহে লক্ষ লক্ষ বার ডাউনলোড করা একটি প্যাকেজ।
এই ত্রুটিটির কারণে CLI দ্বারা চালু করা স্থানীয় ডেভেলপমেন্ট সার্ভারে বিশেষভাবে তৈরি করা POST অনুরোধের মাধ্যমে প্রমাণীকরণবিহীন রিমোট কোড এক্সিকিউশন (RCE) করা যেত। যেহেতু অনেক ডেভেলপার ডিবাগিং বা মোবাইল ডিভাইস টেস্টিংয়ের জন্য তাদের মেট্রো/ডেভ সার্ভারগুলো নেটওয়ার্কে উন্মুক্ত করে রাখেন, তাই কাছাকাছি থাকা কোনো আক্রমণকারী (অথবা এমন কেউ যে ওই পোর্টগুলোতে ট্র্যাফিক রাউট করতে পারে) ডেভেলপারের মেশিনে যথেচ্ছ কমান্ড চালাতে পারে।
এর প্রভাব শুধু একটি ডেভেলপার ওয়ার্কস্টেশনের মধ্যেই সীমাবদ্ধ নয়: একবার কোনো আক্রমণকারী একটি ডেভ বক্সে কোড এক্সিকিউশনের নিয়ন্ত্রণ পেয়ে গেলে, তারা কর্পোরেট নেটওয়ার্কে প্রবেশ করতে পারে, ক্রেডেনশিয়াল হাতিয়ে নিতে পারে, বিল্ড নষ্ট করতে পারে অথবা সেই মেশিন থেকে সিঙ্ক হওয়া CI/CD পাইপলাইনকে ম্যানিপুলেট করতে পারে। এটি একটি আদর্শ উদাহরণ যে, ক্লাউড-সংযুক্ত সিস্টেমে কাজ করার সময় কীভাবে “শুধুমাত্র একটি লোকাল ডেভ টুল”-ও আপনার প্রোডাকশন অ্যাটাক সারফেসের অংশ হয়ে ওঠে।
প্রস্তাবিত প্রতিকারটি সহজবোধ্য কিন্তু অলঙ্ঘনীয়: React Native Community CLI 12.5.1 বা উচ্চতর সংস্করণে আপডেট করুন, সন্দেহজনক POST অনুরোধ বা ডেভ সার্ভার দ্বারা চালু হওয়া অপ্রত্যাশিত প্রসেসের জন্য লগ নিরীক্ষা করুন, স্থানীয় সার্ভারগুলিতে অ্যাক্সেস সীমিত করুন এবং আপনার হুমকি শনাক্তকরণ কৌশলে ডেভ টুলিংকে অন্তর্ভুক্ত করুন। যেকোনো DevOps বা ডেভেলপার এন্ডপয়েন্টকে একটি উচ্চ-মূল্যের লক্ষ্যবস্তু হিসেবে বিবেচনা করুন, কারণ আধুনিক আক্রমণকারীরা এটিকে ঠিক এভাবেই দেখে।
ডিফেন্ডাররা যেভাবে জবাব দিয়েছিল: এআই বিশ্লেষণ, কুলডাউন এবং শক্তিশালী সিআই
এই ঘটনাগুলোর একটি ইতিবাচক দিক হলো, নিরাপত্তা কমিউনিটি রিয়্যাক্ট নেটিভ এবং বৃহত্তর জাভাস্ক্রিপ্ট ক্ষেত্রের বিরুদ্ধে সাপ্লাই-চেইন হুমকি শনাক্ত করার ক্ষেত্রে আরও দ্রুত এবং উন্নত হয়ে উঠছে। StepSecurity, Socket এবং Aikido Security-এর মতো টুলগুলো আচরণগত বিশ্লেষণ, স্বয়ংক্রিয় ডিফারেন্সিং এবং মেশিন-লার্নিং মডেলে প্রচুর বিনিয়োগ করে, যেগুলো নতুন npm রিলিজ প্রকাশিত হওয়ার কয়েক মিনিটের মধ্যেই তা স্ক্যান করে।
AstrOOnauta আক্রমণের ক্ষেত্রে, StepSecurity-র AI প্যাকেজ অ্যানালিস্ট পাঁচ মিনিটেরও কম সময়ে ক্ষতিকারক সংস্করণগুলো শনাক্ত করে, সম্পূর্ণ প্রযুক্তিগত বিবরণসহ GitHub-এ ইস্যু খোলে এবং পরবর্তীতে আক্রমণকারীর নির্দিষ্ট অবকাঠামোগত প্যাকেজগুলো অপসারণের জন্য npm-কে রিপোর্ট করে। দলটি প্রতিটি ওয়েভ নথিভুক্ত করেছে, গিট হেড ট্র্যাক করেছে, দুর্বোধ্য কোড বিশ্লেষণ করেছে, সোলানা সি২ ব্যবহারের প্রমাণ দেখিয়েছে এবং রক্ষণাবেক্ষণকারীকে ধাপে ধাপে প্রতিকারের নির্দেশনা দিয়েছে।
শনাক্তকরণের পাশাপাশি, সিআই পাইপলাইনগুলিতে প্রতিরোধমূলক নিয়ন্ত্রণগুলিও জনপ্রিয়তা পেতে শুরু করেছে। উদাহরণস্বরূপ, স্টেপসিকিউরিটির এনপিএম প্যাকেজ কুলডাউন চেক সংস্থাগুলোকে মাত্র কয়েক ঘন্টা আগে প্রকাশিত ডিপেন্ডেন্সিগুলো ব্লক করার সুযোগ দেয়, যা স্ক্যানার এবং কর্মীদের সেগুলো পরীক্ষা করার জন্য সময় দেয়। তাদের কম্প্রোমাইজড-আপডেটস চেকটি পরিচিত ক্ষতিকর প্যাকেজগুলোর একটি ক্রমাগত আপডেট হওয়া ফিডের সাথে মিলিয়ে দেখে এবং সেগুলোতে কিছু যোগ বা আপগ্রেড করার চেষ্টাকারী পিআর (PR) ব্যর্থ করে দেয়।
হার্ডেন-রানার-এর মতো নেটওয়ার্ক-সচেতন টুলিং, গিটহাব অ্যাকশনস এবং অন্যান্য সিআই জব-এর বহির্গামী সংযোগগুলোকে প্রত্যাশিত এন্ডপয়েন্টগুলোর একটি অনুমোদিত তালিকার মধ্যে সীমাবদ্ধ রাখে। এমন এক বিশ্বে যেখানে ম্যালওয়্যার সোলানা আরপিসি নোড, গুগল ক্যালেন্ডার ইউআরএল, ভল্টার আইপি রেঞ্জ বা আইসিপি ক্যানিস্টার থেকে পেলোড সংগ্রহ করে, সেখানে আপনার বিল্ড সিস্টেম থেকে বহির্গমন পথ সুরক্ষিত করা একটি ত্রুটিপূর্ণ প্যাকেজ ডিফ এবং একটি পূর্ণাঙ্গ অনুপ্রবেশের মধ্যে পার্থক্য গড়ে দিতে পারে।
প্রতিক্রিয়ার দিক থেকে, সংস্থা-ব্যাপী প্যাকেজ অনুসন্ধান এবং হুমকি কেন্দ্রের মতো বৈশিষ্ট্যগুলি দলগুলিকে দ্রুত বিস্ফোরণের ব্যাসার্ধ চিহ্নিত করতে সহায়তা করে। একটি আপোসকৃত React Native প্যাকেজ বা প্লাগইন শনাক্ত হওয়ার সাথে সাথেই, নিরাপত্তা দলগুলো দেখতে পারে যে কোন রিপোজিটরি, ব্রাঞ্চ এবং লকফাইলগুলোতে এটি অন্তর্ভুক্ত আছে, কোন জবগুলো এটি এক্সিকিউট করেছে এবং কোন মেশিনগুলো সন্দেহজনক আইপি-র সাথে যোগাযোগ করেছে – এবং তারপর সেই অনুযায়ী কয়েক ডজন বা শত শত কোডবেস জুড়ে প্রতিকারের অগ্রাধিকার নির্ধারণ করতে পারে।
npm ম্যালওয়্যারের সম্মুখীন React Native টিমগুলির জন্য বাস্তবসম্মত পদক্ষেপ
React Native ডেভেলপার এবং নিরাপত্তা প্রকৌশলী উভয়ের জন্যই, npm-স্তরের আক্রমণ থেকে রক্ষা পাওয়ার মূল চাবিকাঠি হলো প্রতিটি মেশিনে নিরাপত্তা ব্যবস্থার পরিচ্ছন্নতা এবং CI/CD ও ডিপেন্ডেন্সি ম্যানেজমেন্টে সুরক্ষামূলক ব্যবস্থা গ্রহণ করা। কোনো একটিমাত্র নিয়ন্ত্রণ আপনাকে রক্ষা করতে পারবে না, কিন্তু স্তরীভূত প্রতিরক্ষা ব্যবস্থা একটি ক্ষতিকারক প্যাকেজের মাধ্যমে সম্পূর্ণ নিরাপত্তা বিঘ্নিত হওয়ার সম্ভাবনাকে ব্যাপকভাবে কমিয়ে দেয়।
আপনি যদি পূর্বে উল্লিখিত ত্রুটিপূর্ণ প্যাকেজগুলো ব্যবহার করেন, তবে অবিলম্বে কিছু যাচাই করে নিতে হবে। অ্যাস্ট্রোনটা ঘটনার জন্য, পিন react-native-international-phone-number সংস্করণে 0.11.7 এবং react-native-country-select থেকে 0.4.0ক্ষতিকারক হিসেবে চিহ্নিত সমস্ত সংস্করণ এড়িয়ে অথবা সমাধান করে @latest যা বর্তমানে একটি ত্রুটিপূর্ণ রিলিজের সাথে সংযুক্ত।
আপনার হোম ডিরেক্টরিতে 'নাম' নামের একটি ফাইল অনুসন্ধান করুন। init.json ব্যবহারকারীর প্রোফাইলের অধীনে (উদাহরণস্বরূপ ~/init.json ইউনিক্স এবং ~\init.json উইন্ডোজে)। এর উপস্থিতি থেকে বোঝা যায় যে সোলানা-ভিত্তিক ম্যালওয়্যারটি অন্তত একবার কার্যকর হয়েছে। এছাড়াও, ডেভেলপার ওয়ার্কস্টেশন এবং সিআই রানার থেকে বহির্গামী নেটওয়ার্ক লগগুলো নিরীক্ষা করে সংযোগগুলো খুঁজে বের করুন। 45.32.150.251, ক্যাম্পেইনগুলিতে ব্যবহৃত সোলানা আরপিসি এন্ডপয়েন্টগুলি, অথবা পূর্বে উল্লিখিত অন্যান্য সি২ অ্যাড্রেসগুলি (যেমন 136.0.9[.]8, 85.239.62[.]36, 195.133.79.43, 217.69.3.152).
আপনার পরীক্ষা করুন node_modules এবং সুস্পষ্ট নির্ভরতার জন্য লকফাইল যেমন @agnoliaarisian7180/string-argv, @usebioerhold8733/s-format এবং দূষিত @react-native-aria/* or @gluestack-ui/utils পরামর্শে তালিকাভুক্ত সংস্করণগুলি। এগুলোর কোনোটি খুঁজে পেলে, মেশিনটিকে সম্ভাব্য ঝুঁকিপূর্ণ হিসেবে বিবেচনা করুন এবং সমস্ত সংবেদনশীল ক্রেডেনশিয়াল পরিবর্তন করুন: npm টোকেন, GitHub অ্যাক্সেস টোকেন, SSH কী, ক্লাউড প্রোভাইডার কী এবং এতে থাকা যেকোনো সিক্রেট। .env অথবা ইনস্টলের সময় কনফিগারেশন ফাইলগুলো।
ভবিষ্যতে React Native-এর কাজের জন্য আপনার সাপ্লাই-চেইন কাঠামোকে আরও শক্তিশালী করুন: সর্বদা লকফাইলগুলি কমিট এবং প্রয়োগ করুন (package-lock.json, yarn.lock, pnpm-lock.yaml), প্রকাশের অধিকার আছে এমন সমস্ত npm অ্যাকাউন্টে 2FA সক্রিয় করুন, এবং পর্যালোচনা ছাড়া নতুন নির্ভরতা যুক্ত হলে বিল্ড ব্যর্থ করার জন্য আপনার CI কনফিগার করুন। এর সাথে চালানোর কথা বিবেচনা করুন --ignore-scripts অবিশ্বস্ত প্রেক্ষাপটে থার্ড-পার্টি প্যাকেজ ইনস্টল করার সময়, এবং লোকাল ওয়ার্কফ্লো ও CI উভয়ের সাথেই ডিপেন্ডেন্সি-স্ক্যানিং টুল সংযুক্ত করুন।
অবশেষে, ডেভেলপমেন্ট এনভায়রনমেন্টগুলোকে—বিশেষ করে রিয়্যাক্ট নেটিভ অ্যাপের জন্য ব্যবহৃত এনভায়রনমেন্টগুলোকে, যেগুলো মোবাইল, ওয়েব এবং ব্যাকএন্ড এপিআই-এর মধ্যে সংযোগ স্থাপন করে—আপনার প্রোডাকশন অ্যাটাক সারফেসের অংশ হিসেবে বিবেচনা করুন। হুমকিটি অ্যাকাউন্ট দখলের মাধ্যমে ফোনের ইনপুট কম্পোনেন্টে সোলানা-সমর্থিত ম্যালওয়্যার প্রবেশ করানো হোক, কিংবা টাইপোস্কোয়াটেড ভাইট প্লাগইনের মাধ্যমে রিয়্যাক্ট মুছে ফেলা হোক। node_modulesক্লায়েন্ট-সাইড স্টোরেজকে অচল করে দেওয়া কোনো ক্ষতিকর কুইল ইন্টিগ্রেশন হোক, বা রিয়্যাক্ট নেটিভ কমিউনিটি সিএলআই-তে কোনো আরসিই (RCE) হোক—সব ক্ষেত্রেই মূল কথা হলো, আক্রমণকারীরা এখন ডেভেলপার টুলিংকে আপনার প্রতিষ্ঠানের সবচেয়ে মূল্যবান সম্পদে প্রবেশের অন্যতম কার্যকর পথ হিসেবে দেখছে।


