تعرض مجتمع المطورين لهجوم سلسلة إمداد منسق في 16 مارس 2026، حيث قام جهة تهديد معروفة باسم “Glassworm” بتضمين برمجيات خبيثة في حزمتين شائعتين من React Native npm، محولاً إياهما إلى أدوات خفية لسرقة بيانات الاعتماد والعملات المشفرة. لقد أثر الهجوم على حزمتي react-native-country-select و react-native-international-phone-number، مما أدى إلى قلق واسع النطاق بين مطوري تطبيقات الهاتف المحمول.
الحزم المتأثرة، وهي [email protected] و [email protected]، تم نشرها بفارق دقائق من قبل نفس الناشر “AstrOOnauta”. معاً، شهدت هاتان الحزمتان أكثر من 134,887 عملية تنزيل في الشهر الذي سبق الهجوم، مما يشير إلى اعتمادهما الواسع في العديد من المشاريع. كلتا الحزمتين تتعاملان مع مهام واجهة المستخدم للجوال مثل إدخال أرقام الهواتف واختيار البلد، مما يجعلهما مكونات أساسية في العديد من التطبيقات.
هجوم Glassworm على حزم React Native
لم يتطلب الهجوم أي إجراءات خاصة من المستهدفين. تشغيل أمر npm install القياسي كان كافياً لتفعيل البرمجية الخبيثة على أي مطور أو بيئة بناء. تم إدخال آلية جديدة تسمى preinstall في الإصدارات الخبيثة، والتي كانت تقوم بتشغيل ملف JavaScript مشفر للغاية يسمى install.js قبل اكتمال تثبيت الحزمة. هذا التصميم جعل الإصابة غير مرئية تقريبًا، حيث لم يكن لدى المطورين سبب للشك في أن تحديثًا روتينيًا للحزمة يقوم بتثبيت حمولة Windows متعددة المراحل بهدوء على أجهزتهم.
قام باحثو Aikido بتحديد الحزم المتأثرة وتتبعوا سلسلة التنفيذ الكاملة، حيث اتبعوا نفس الخطوات التي اتخذتها البرمجية الخبيثة. لقد استعادوا وقاموا بفك تشفير حمولات المرحلة الثانية والثالثة دون تنفيذها. أكد تحليلهم أن ملف التحميل كان مطابقاً في كلا الحزمتين، ويحمل نفس تجزئة SHA-256. كانت تغييرات الإصدار نظيفة أيضًا، حيث تم إدخال السلوك الخبيث فقط من خلال ملف install.js جديد وإدخال مطابق preinstall في package.json، مما يشير إلى تعديل متعمد ومستهدف بدلاً من خطأ في البناء.
نطاق التعرض المحتمل
كان نطاق التعرض المحتمل خطيرًا. في الأسبوع الذي سبق الهجوم وحده، بلغت عمليات تنزيل الحزمتين معًا 29,763 عملية، و 134,887 عملية خلال الشهر السابق. الإصدارات النظيفة التي سبقت الإصدارات الخبيثة مباشرة، @0.3.9 و @0.11.7، لم تحتوي على آلية خبيثة وتم نشرها قبل ثلاثة أيام فقط في 13 مارس 2026. كان المطورون الذين يبنون تطبيقات الجوال باستخدام ميزات إدخال أرقام الهواتف أو اختيار البلد معرضين للخطر بشكل مباشر، ولكن أي مشروع سحب هذه الحزم كاعتماديات غير مباشرة واجه نفس الخطر.
تنفيذ متعدد المراحل: كيف تطور الهجوم
كانت سلسلة الإصابة منظمة بعناية، حيث استخدمت مراحل متعددة وخدمات خارجية شرعية للبقاء مخفية. بمجرد تشغيل install.js على جهاز Windows، كان يقوم أولاً بفحص النظام بحثًا عن علامات اللغة الروسية، بما في ذلك المتغيرات التي تم تعيينها إلى ru_RU أو ru-RU أو Russian، كما كان يتحقق من المنطقة الزمنية المرتبطة بروسيا. إذا كانت هذه الإشارات موجودة، فإن البرمجية الخبيثة كانت تتوقف دون اتخاذ أي إجراء، وهي تكتيك شوهد باستمرار في البرمجيات الخبيثة الإجرامية المرتبطة بجهات التهديد الناطقة بالروسية.
في حال اجتياز فحص اللغة، كان المثبت يستعلم عن حساب Solana blockchain باستخدام طريقة RPC getSignaturesForAddress لاسترداد عنوان URL مشفر بصيغة base64 مخفي داخل مذكرة معاملة. استخدام حساب Blockchain عام كمنصة توصيل جعل عنوان المرحلة الثانية صعبًا للغاية في الحظر من خلال الفلاتر التقليدية للمجال أو الشبكة. كان برنامج المرحلة الثانية الذي تم إرجاعه يوفر مفاتيح فك تشفير لفتح حمولة المرحلة الثالثة، وهي أداة سرقة شاملة تركز على Windows.
قامت المرحلة الثالثة بإنشاء استمرارية من خلال جدولة مهام Windows ومفتاح التسجيل Run، ثم استخدمت رابط تقويم Google كمنصة ترحيل إضافية قبل سحب مكونات أخرى من خادم يتحكم فيه المهاجم. قامت الحمولة النهائية بمسح بيانات المحافظ من MetaMask، Exodus، Atomic، Guarda، Coinomi، Trust Wallet، و OKX Wallet، مع جمع رموز npm المخزنة وبيانات اعتماد GitHub عبر أوامر المصادقة الأصلية.
يجب على المطورين الآن مراجعة ملفات القفل الخاصة بحزم [email protected] أو [email protected] فورًا، واعتبار أي جهاز قام بتثبيت أي من هذين الإصدارين مخترقًا. يجب تدوير جميع رموز npm وبيانات اعتماد GitHub ومفاتيح محافظ العملات المشفرة التي كانت متاحة على الأنظمة المتأثرة. يُنصح بمراجعة سجلات الشبكة الصادرة بحثًا عن اتصالات بـ 45[.]32[.]150[.]251 و 217[.]69[.]3[.]152. إن تدقيق نصوص دورة حياة الحزم وتمييز هوكات preinstall غير المتوقعة في بيئات البناء يقلل من التعرض لهجمات سلسلة إمداد مماثلة.

