كشفت حملة إلكترونية جديدة تستهدف بيئة تطوير البرمجيات، والمعروفة باسم “StegaBin”، عن أساليب متطورة تهدف إلى سرقة بيانات الاعتماد من المطورين. تستغل هذه الحملة 26 حزمة برمجية خبيثة تم نشرها مؤخراً في نظام npm، مما يمثل تهديداً متزايداً لأمن سلاسل توريد البرمجيات.
تم اكتشاف النشاط السيبراني الجديد والمتطور والمعروف باسم “StegaBin”، والذي يستهدف على وجه الخصوص بيئة npm، من قبل باحثين في مجال الأمن السيبراني. وقد تم نشر 26 حزمة برمجية خبيثة ضمن هذه الحملة، مما ينذر بخطر داهم يهدد أمن المطورين والمشاريع البرمجية.
حملة StegaBin: تهديد جديد في أمن سلاسل توريد البرمجيات
تعتمد حملة “StegaBin” على مزيج من تقنيات مألوفة مثل “typosquatting” (تسجيل أسماء نطاقات مشابهة للأسماء الأصلية بهدف الخداع)، إلى جانب مسار تسليم متعدد المراحل يتم تنفيذه أثناء عملية التثبيت. هذا النهج يهدف إلى إبقاء عملية سرقة البيانات بعيدة عن الأنظار قدر الإمكان.
خلال فترة قصيرة، قامت هذه الحملة بنشر 26 حزمة خبيثة مصممة لتنفيذ خطوة تثبيت مخفية عند إضافتها إلى مشاريع المطورين. هذا التخفي يجعل اكتشافها أمراً صعباً على المستخدمين العاديين.
بمجرد التنفيذ، يمكن للسلسلة الخبيثة تنزيل برامج نصية خاصة بالمنصة، وزرع برمجيات حصان طروادة للوصول عن بعد، ثم تحميل مجموعة أدوات مكونة من تسعة أجزاء تركز على سرقة بيانات الاعتماد والأسرار من محطات عمل المطورين.
وفقاً لباحثين في Socket.dev، والتي رصدت الإشارات الأولية لهذا النشاط، فإن هذه الأساليب مرتبطة بنشاط يعتقد أنه موالٍ لكوريا الشمالية. وقد تم الربط بين الحملة وأساليب محددة تُعرف بـ “Contagious Interview-style tradecraft”.
بالإضافة إلى ذلك، ظهرت تقارير مستقلة بسرعة، حيث كشف الباحث كيران مياموتو عن 17 حزمة مرتبطة، وقدم شرحاً لكيفية استخدام أدوات فك تشفير Pastebin لاستعادة عناوين القيادة والتحكم المخفية.
آلية الهجوم: تقنيات متقدمة للخداع والسرقة
العدوى وتسلسل التنفيذ
تبدأ الخطوة الأولى فور تثبيت الحزمة، حيث يعلن ملف package.json عن سكريبت تثبيت يتم تنفيذه تلقائياً. هذا السكريبت، الذي غالباً ما يكون مخفياً، هو نقطة الانطلاق لأفعال الضرر.
يقوم سكريبت التثبيت بالاتصال بمُحمّل (loader) موجود في مسار مثل vendor/scrypt-js/version.js. تم اختيار اسم الملف هذا ليبدو كجزء من مكتبة تشفير عادية، مما يزيد من صعوبة اكتشافه.
بعد ذلك، يقوم المُحمّل بفك تشفير ثلاثة روابط مخزنة في Pastebin. محتوى هذه الروابط الظاهر قد يبدو كملف مقال عادي حول علوم الحاسوب، ولكن باستخدام تقنية تبديل أحرف بمسافات منتظمة، يتم إخفاء بنية تحتية للتحكم والسيطرة.
يقوم البرنامج الخبيث بعد ذلك باستخلاص قائمة مخفية من الروابط، ويتنقل بين 31 نطاقاً مستضافاً على Vercel حتى يستجيب أحدها بـ “payload” يمثل واجهة تحكم حقيقية. وقد تعود طلبات أخرى برسالة وهمية مثل “Permanently suspended” لتضليل المحللين.
بعد ذلك، يقوم مُشغّل (bootstrapper) يعتمد على نظام “token-gated” بإعداد المرحلة التالية. يشمل ذلك تثبيت Node.js 20.11.1 إذا لم يكن موجوداً، وتنزيل برامج نصية إضافية، وتشغيلها في الخلفية قبل إزالة الآثار.
أخيراً، يتصل حصان طروادة الذي يوفر الوصول عن بعد بعنوان IP محدد (103.106.67.63:1244). ومن هناك، يمكنه تشغيل تنزيل تلقائي لوحدات تركز على سرقة إعدادات VSCode، وبيانات Git، ومواد SSH، ومتصفحات الويب، والملفات المحلية الحساسة.
استمرار التهديد وطرق المواجهة
تبرز إحدى تقنيات الاستمرارية في قدرتها على الاندماج في سير العمل اليومي للمطورين. تقوم إحدى الوحدات بكتابة ملف VSCode tasks.json خبيث، وتخفي الأمر الحقيقي خلف 186 مسافة بادئة، بحيث يتم دفع الجزء الخطير خارج الشاشة.
يتم تكوين المهمة لتشغيلها عند فتح مجلد، مما يحول دليل المشروع المصاب إلى مشغل تكراري في كل مرة يعود فيها المطور إليه.
يجب على المدافعين اعتبار هذا بمثابة تذكير بأن “النظافة” في التعامل مع الاعتماديات (dependencies) تعتبر إجراءً أمنياً، وليس مجرد اهتمام تقني. ويجب مراجعة الحزم الجديدة للبحث عن سكريبتات تثبيت غير متوقعة، ومسارات ملفات غريبة، وعمليات تشفير مكثفة.
في أنظمة التكامل المستمر (CI) وعلى أجهزة المطورين المحمولة، يُنصح بتعطيل سكريبتات دورة الحياة (lifecycle scripts) عندما لا تكون ضرورية. كما يجب تثبيت الاعتماديات باستخدام ملفات القفل (lockfiles) والتحقق من هوية المشرفين قبل إضافة أسماء مشابهة للحزم الأصلية.
يجب على الفرق أيضاً البحث عن مسار المُحمّل المشترك vendor/scrypt-js/version.js، وعن حركة المرور الصادرة إلى Pastebin والنطاقات غير المعتادة التي تنتهي بـ *.vercel.app. وبعد ذلك، يجب تدوير أي مفاتيح SSH أو أذونات وصول (tokens) أو بيانات اعتماد للمتصفح قد تكون تعرضت للخطر.
إذا كان VSCode شائع الاستخدام، فإن التحقق من ملفات tasks.json العامة وملفات المهام الخاصة بالمشروع بحثاً عن المسافات البيضاء الطويلة وسلوك “runOn: folderOpen” يمكن أن يساعد في اكتشاف خطوة الاستمرارية مبكراً.
نظراً لأن خوادم القيادة كانت نشطة أثناء التحليل، يجب على المستجيبين افتراض أن عمليات سرقة فعلية قد حدثت، مع إعطاء الأولوية لمراجعة نقاط النهاية، وفحص الأسرار، وإعادة تعيين بيانات الاعتماد عبر أنظمة المطورين وأنظمة البناء.

