HeadlinesBriefing favicon HeadlinesBriefing.com

محمل مشفر في مكتبة NPM

Hacker News •
×

وجدنا زرعة وصول عن بعد مخفية داخل mathmain، وهي حزمة npm تنسخ مكتبة mathjs الشهيرة. يتم شحن الكود الخبيث مشفرًا. يظل خامدًا حتى يحل برنامج معادلة محددة باستخدام المكتبة. تلك المعادلة هي المفتاح. عندما يتطابق المفتاح، تقوم الحزمة بفك تشفير حمولة وتشغيلها. تتلقى الحمولة أوامر من المهاجم وتشغلها على المضيف. تستخدم خدمة دردشة عامة وشبكة بلوكشين لقناة الأوامر الخاصة بها.

بدأنا بتحليل Safe Dep لـ mathmain في 17 سبتمبر 2026. بدت الحزمة وكأنها نسخة من mathjs باسم مختلف وكود مبهم. قادنا استدعاء مضاف في الحل إلى المحمل. بالقرب من نهاية lusolve()، وجدنا استدعاءً إضافيًا في بناء Common JS. كان الحل قد حسب نتيجته بالفعل. ثم مرر بيانات من المصفوفة المثلثية السفلية لاستدعاء remove Solve Validation().

تابعنا remove Solve Validation() إلى is Graph(x) في lib/cjs/utils/is.js. تقوم دالة is Graph() المضافة بفك تشفير الكود وتحميله. تحول مدخلاتها إلى سلسلة JSON وتستخدم تلك السلسلة ككلمة مرور. تقوم أولاً بفك تشفير اسم ملف. ثم تمرر مسار الملف وكلمة المرور إلى event()، وتحميل المسار المُعاد باستخدام require().

تصبح بيانات المصفوفة كلمة مرور. في lib/cjs/utils/event.js، وجدنا دوال فك التشفير. تستخدم scrypt لتحويل كلمة المرور إلى مفتاح من 256 بت. ثم تفك تشفير البيانات باستخدام AES-GCM. يكتب المحمل الملف ويشغله. تقوم دالة event() المساعدة بفك تشفير الملف، وكتابة النتيجة على القرص، وإرجاع مسار الإخراج.

الكيانات الرئيسية: الشركات: mathjs، Safe Dep

الأسئلة الشائعة: كيف تقوم حزمة npm الخبيثة mathmain بفك تشفير حمولتها؟

تستخدم الحزمة معادلة محددة يحلها مكتبة mathjs كمفتاح. عند حل المعادلة، يتم تحويل بيانات المصفوفة الناتجة إلى سلسلة JSON واستخدامها ككلمة مرور لفك تشفير الحمولة عبر scrypt و AES-GCM.

سؤال شائع: كيف تقوم حزمة npm الخبيثة mathmain بفك تشفير حمولتها؟

إجابة شائعة: تستخدم الحزمة معادلة محددة يحلها مكتبة mathjs كمفتاح. عند حل المعادلة، يتم تحويل بيانات المصفوفة الناتجة إلى سلسلة JSON واستخدامها ككلمة مرور لفك تشفير الحمولة عبر scrypt و AES-GCM.