HeadlinesBriefing favicon HeadlinesBriefing.com

NPM গণিত লাইব্রেরিতে এনক্রিপ্টেড লোডার

Hacker News •
×

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

আমরা ১৭ সেপ্টেম্বর, ২০২৬-এ mathmain-এর Safe Dep বিশ্লেষণ দিয়ে শুরু করেছি। প্যাকেজটি একটি ভিন্ন নাম এবং অস্পষ্ট কোড সহ mathjs-এর একটি অনুলিপির মতো দেখাচ্ছিল। সলভারে একটি যোগ করা কল আমাদের লোডারের দিকে নিয়ে গেল। lusolve()-এর শেষের দিকে, আমরা Common JS বিল্ডে একটি অতিরিক্ত কল পেয়েছি। সলভার ইতিমধ্যে তার ফলাফল গণনা করেছে। তারপর এটি remove Solve Validation() কল করার জন্য নিম্ন ত্রিভুজাকার ম্যাট্রিক্স থেকে ডেটা পাস করেছে।

আমরা remove Solve Validation() অনুসরণ করেছি lib/cjs/utils/is.js-এ is Graph(x) পর্যন্ত। যোগ করা is Graph() ফাংশন কোড ডিক্রিপ্ট এবং লোড করে। এটি তার ইনপুটকে একটি JSON স্ট্রিংয়ে রূপান্তর করে এবং সেই স্ট্রিংটি পাসওয়ার্ড হিসাবে ব্যবহার করে। এটি প্রথমে একটি ফাইলের নাম ডিক্রিপ্ট করে। তারপর এটি ফাইল পাথ এবং পাসওয়ার্ড event()-এ পাস করে, এবং require() দিয়ে ফেরত পাথ লোড করে।

ম্যাট্রিক্স ডেটা একটি পাসওয়ার্ড হয়ে যায়। lib/cjs/utils/event.js-এ, আমরা ডিক্রিপশন ফাংশন পেয়েছি। তারা পাসওয়ার্ডকে 256 বিটের একটি চাবিতে পরিণত করতে scrypt ব্যবহার করে। তারপর তারা AES-GCM দিয়ে ডেটা ডিক্রিপ্ট করে। লোডার ফাইলটি লেখে এবং চালায়। event() হেল্পার ফাইলটি ডিক্রিপ্ট করে, ফলাফলটি ডিস্কে লেখে এবং আউটপুট পাথ ফেরত দেয়।

মূল সত্তা: কোম্পানি: mathjs, Safe Dep

সাধারণ প্রশ্ন: ক্ষতিকারক npm প্যাকেজ mathmain কীভাবে তার পেলোড ডিক্রিপ্ট করে?

প্যাকেজটি mathjs লাইব্রেরি দ্বারা সমাধান করা একটি নির্দিষ্ট সমীকরণকে চাবি হিসাবে ব্যবহার করে। যখন সমীকরণটি সমাধান করা হয়, ফলস্বরূপ ম্যাট্রিক্স ডেটা একটি JSON স্ট্রিংয়ে রূপান্তরিত হয় এবং scrypt এবং AES-GCM-এর মাধ্যমে পেলোড ডিক্রিপ্ট করতে পাসওয়ার্ড হিসাবে ব্যবহৃত হয়।

সাধারণ প্রশ্ন প্রশ্ন: ক্ষতিকারক npm প্যাকেজ mathmain কীভাবে তার পেলোড ডিক্রিপ্ট করে?

সাধারণ প্রশ্ন উত্তর: প্যাকেজটি mathjs লাইব্রেরি দ্বারা সমাধান করা একটি নির্দিষ্ট সমীকরণকে চাবি হিসাবে ব্যবহার করে। যখন সমীকরণটি সমাধান করা হয়, ফলস্বরূপ ম্যাট্রিক্স ডেটা একটি JSON স্ট্রিংয়ে রূপান্তরিত হয় এবং scrypt এবং AES-GCM-এর মাধ্যমে পেলোড ডিক্রিপ্ট করতে পাসওয়ার্ড হিসাবে ব্যবহৃত হয়।