Osegi
الأمن السيبراني·2 دقائق قراءة

حزمة bee-js 13.3.0 على npm حاولت سرقة مفاتيح محافظ العملات المشفرة

الإصدار 13.3.0 من مكتبة @ethersphere/bee-js الخاصة بشبكة Swarm خرج عبر مسار النشر الرسمي للمشروع، وحاول سرقة مفاتيح المحافظ فور تثبيته.

Laptop screen showing JavaScript code with a red warning icon and a crypto wallet key being pulled away.
الصورة: Хабр

يكفي تثبيت مكتبة @ethersphere/bee-js بإصدارها 13.3.0 حتى يبدأ برنامج خبيث بالبحث عن مفاتيح محافظ العملات المشفرة. وتصنّف شركة CodeScoring هذا الإصدار من مكتبة JavaScript الخاصة بالتخزين الموزع Swarm على أنه خبيث منذ 9 نوفمبر.

والمثير في القصة هو طريقة وصول الحزمة إلى npm. لم يحدث ذلك باختراق حساب نشر خارجي، بل عبر عملية النشر المعتادة للمشروع نفسه. فقد أُضيف التزام (commit) مباشر إلى المستودع الرسمي تحت حساب الإصدارات bee-worker، ثم أُنشئ إصدار (release) شغّل مسار GitHub Actions الموجود أصلاً. وبحسب Socket، كانت بيانات البناء في npm تشير إلى المستودع الرسمي وإلى عملية النشر القياسية. أما الشيفرة الخبيثة فكانت موجودة في المصدر قبل ذلك.

كيف عملت الشيفرة الخبيثة في bee-js 13.3.0؟

عدّل المهاجمون الحزمة بحيث يعمل سكربت تلقائياً عند التثبيت. وإذا كان تشغيل مثل هذه السكربتات مسموحاً، بدأ البرنامج الخبيث قبل أن تُستخدم المكتبة في أي تطبيق. وصف المهاجمون في تعليقات الشيفرة الاتصال بخادمهم بأنه إرسال بيانات تحليلية. لكن السكربت كان يجلب من هناك شيفرة JavaScript وينفذها فوراً بصلاحيات المستخدم الذي ثبّت الحزمة.

بحثت الحمولة في بيانات تطبيق Swarm Desktop عن مفتاح المحفظة المشفّر وملف الإعدادات. وإذا كانت كلمة مرور المفتاح مخزنة في الإعدادات، فإن سرقة الملفين تمنح السيطرة على المحفظة. كما حاول البرنامج الخبيث الاستقرار في النظام ليحتفظ بالوصول بعد انتهاء التثبيت.

وعلى Linux وmacOS تواصل الهجوم بتثبيت باب خلفي لتنفيذ الأوامر عن بُعد. كان الباب الخلفي يقرأ عنوان خادم التحكم من عقد ذكي على Ethereum، وبإمكان المشغّل تغيير هذا العنوان بمعاملة واحدة دون إصدار نسخة جديدة من البرنامج الخبيث.

كيف تعرف إن كان مشروعك متأثراً؟

قد تصل النسخة المصابة بشكل غير مباشر. فنطاقات الاعتماديات في عدة أدوات من Swarm كانت تسمح بالإصدار 13.3.0، لذا يجب فحص الإصدار الذي حُلّ فعلياً في ملف القفل (lock). ولا يكفي البحث عن اعتمادية مباشرة في ملف المانيفست.

على الفرق التي تستخدم bee-js مراجعة ملفات القفل وذاكرة الحزم المؤقتة وسجلات التثبيت في CI بحثاً عن الإصدار 13.3.0، بما في ذلك الاعتماديات غير المباشرة. وإذا ثُبّت هذا الإصدار مع السماح بالسكربتات، أو شُغّل Swarm Desktop بالإصدار 0.56.2، فينبغي فحص الجهاز أو CI runner. وفي حالة الـ runner يتعلق الأمر برموز نشر الحزم والوصول إلى الشيفرة المصدرية.

وتقول CodeScoring إن سياسات الحظر لديها بشرط «الاعتمادية خطرة» توقف تنزيل هذه الحزمة وغيرها من الحزم الخبيثة المعروفة في وحدة CodeScoring.OSA، وتوقف بناء المشروع في وحدة CodeScoring.SCA.

تطبيقات تستحق النظر

SUMO: لغز الأرقام

اختر المربعات الصحيحة واجمعها وحقّق الهدف. سهل التعلم، صعب الإتقان. مجاني، لجميع الأعمار.

الوسوم:npmswarmbee-jssupply chain attackcrypto walletgithub actions

المزيد من هذا اليوم

عرض الكل →

المزيد في: الأمن السيبراني

عرض الكل →