رصد باحثون هجوماً معقداً على سلسلة إمداد حزم npm، أُطلق عليه اسم ChainDrop. ينتمي هذا الهجوم إلى عائلة برمجيات Shai-Hulud الخبيثة، والتي ظهرت سابقاً في حملات مجموعتي TeamPCP وantv. ووفقاً لبيانات شركتي Wiz وJFrog، تمثلت نقطة بداية الهجوم في اختراق حساب مشرف مستودع مكتبة التخزين المؤقت واسعة الانتشار keyv على منصة GitHub، ونشر الإصدار الخبيث keyv@6.0.0. وسرعان ما تحول الهجوم إلى دودة رقمية ذاتية الانتشار أصابت مئات الحزم، مستهدفة بيانات اعتماد المطورين وبيئات التكامل المستمر (CI/CD) وأدوات الذكاء الاصطناعي ومحافظ العملات الرقمية.
تعتمد آلية العدوى على تعديل سكريبت preinstall في ملف package.json ليستدعي ملفاً خبيثاً باسم setup.mjs تلقائياً عند تشغيل أمر التثبيت npm install. يقوم setup.mjs بتنزيل مشغّل بالنسخة 1.3.13 من مستودع GitHub الرسمي في حال عدم وجوده مسبقاً، ثم يمرر التنفيذ إلى الحمولة الأساسية Math_Symbol.js (أو math_init.js في بعض الإصدارات)، وهي سكريبت يعمل على أنظمة التشغيل Linux وmacOS وWindows.
تتميز هذه الحمولة بقدرة دودية؛ فعند سرقة رمز npm صالح يملك صلاحية النشر، تُجري فحصاً للرمز عبر استدعاء /whoami، ثم تعيد نشر إصدارات مرقعة خبيثة تلقائياً من أي حزمة يملك الرمز صلاحية الكتابة عليها، وذلك عبر تعديل ملفات package.json في المشاريع المصابة وحقن تبعيات خبيثة ثم نشرها آلياً في سجل npm. وتستهدف العملية سرقة رموز npm وGitHub، ومفاتيح الخدمات السحابية AWS وAzure وGCP، وأسرار Kubernetes وVault، وبيانات اعتماد أدوات الذكاء الاصطناعي، ومحافظ العملات الرقمية، إلى جانب ملفات حساسة في النظام مثل /etc/shadow.
ولم يقتصر الهجوم على حزم npm فحسب؛ بل زرعت الحمولة خطافات خبيثة في مستودعات GitHub التي تملك صلاحية الكتابة عليها عبر الرموز المسروقة. وشملت هذه الخطافات ملف .vscode/tasks.json الذي ينفذ حمولة خبيثة عند فتح مجلد العمل في محرر VS Code، وملف .claude/settings.json الذي ينفذ الشيفرة الخبيثة عند بدء جلسة أداة Claude Code. ووفقاً لتقرير منصة The Hacker News، تُتيح هذه الآلية تنفيذ الحمولة الخبيثة عند فتح المطور للمستودع المصاب أو موافقته على إعدادات المشروع دون الحاجة لتثبيت حزمة npm. كما تضمن الهجوم حقن سير عمل في منصة GitHub Actions تحت اسم Run Copilot في مستودع الضحية إذا كان رمز GitHub المسروق يمتلك صلاحية workflow، حيث يقوم سير العمل بتصدير جميع أسرار المستودع إلى ملف وتحميله قبل مسح آثاره لمنع إثارة الشكوك.
واعتمد المهاجم على آلية مستحدثة لاسترجاع نطاقات القيادة والتحكم (C2) ديناميكياً باستخدام عقد ذكي على شبكة Ethereum، ما يمنح البنية التحتية مرونة التغيير دون تعديل الحمولة الخبيثة.
وأوضحت شركة Wiz أن سجلات العقد الذكي أظهرت ثلاثة نطاقات في البداية، قُلّصت لاحقاً إلى النطاق npm-cache[.]com المخصص لتسريب البيانات، مع رصد ارتباط عنوان محفظة ممول العقد بعمليات احتيال سابقة. وتشفر البيانات المسروقة وترفع إلى مستودعات GitHub عامة يُنشئها المهاجم بالهويات المخترقة وتحمل الوصف Shai-Hulud: Here We Go Again، أو تُرسل مباشرة إلى خادم القيادة والتحكم.
وأشار تحليل Wiz إلى توسيع قائمة الأهداف المسحوبة بنسبة 70% مقارنة بالإصدارات السابقة، لتشمل مفاتيح أدوات الذكاء الاصطناعي مثل Claude وOpenAI وCodex وCursor وGemini.
وشهدت تقديرات الحزم المصابة تضارباً جراء استمرار الانتشار واختلاف وسائل الرصد؛ حيث أفادت منصة Aikido بتضرر 868 حزمة عبر 1,381 إصدارة، بينما سجلت JFrog أكثر من 400 حزمة و1,700 إصدارة، وأشارت مصادر أخرى إلى وصول العدد نحو 1,300 حزمة. وأكدت شركة SafeDep أن الأرقام مرشحة للارتفاع، مشددة على أن كشف الإصابة يستوجب فحص الإصدارات في ملفات القفل دون الاكتفاء بالقوائم الثابتة. وطالت الإصابات مؤسسات مثل Deliveroo وOrnikar وQlik وServiceTitan.
يوصي الباحثون بالإزالة الفورية للإصدارات المصابة، وإعادة بناء الأنظمة التي تم تثبيت الحزمة عليها، وتدوير كافة الرموز المكشوفة، مع الأخذ بالاعتبار أن الحمولة تزرع أداة لمراقبة عمليات إبطال الرموز قد تُستغل لاحقاً. كما يُنصح بالترقية إلى npm 12 أو الإصدارات الأحدث التي تعطّل تنفيذ سكريبتات preinstall افتراضياً، ما يحظر العدوى التلقائية أثناء التثبيت.







