أعلنت شركات أمنية مثل SafeDep وSocket عن اكتشاف دودة npm خبيثة بدأت في الإصدار keyv@6.0.0، وانتشرت بسرعة عبر مئات الحزم في مستودع npm، مستهدفة بيئات التطوير وأنظمة التكامل المستمر (CI). وفقًا لـ SafeDep، تم التحقق من 353 نسخة مسمومة عبر 79 اسم حزمة، بينما رصدت Aikido ما لا يقل عن 868 حزمة عبر 1,381 نسخة. لاحقًا وسّعت SafeDep تقديراتها إلى 1,684 نسخة عبر 420 اسم حزمة مرتبطة بتسع منظمات، مؤكدة أن الدودة انتقلت بين المنظمات كل دقيقتين إلى سبع دقائق وأكملت موجة النشر في نصف ساعة تقريبًا.
آلية التنفيذ وسرقة البيانات
الإصدارات المسمومة تضمنت سكربت preinstall يستدعي ملف setup.mjs، الذي يقوم بتنزيل نسخة من Bun 1.3.13 إذا لم تكن موجودة، ثم ينفذ حمولة مجمعة بحجم 727,680 بايت. تحليل SafeDep أظهر أن الحمولة قادرة على:
- سرقة بيانات اعتماد GitHub وnpm والسحابة وVault وKubernetes وقواعد البيانات والمفاتيح الخاصة.
- قراءة ذاكرة GitHub Actions runner.
- تثبيت مراقب لإلغاء الرموز (revocation watcher).
- إعادة نشر الحزم باستخدام هوية npm المسروقة.
مسارات إضافية عبر Claude وVS Code
المستودع احتوى أيضًا على مسارات تنفيذ إضافية عبر ملفات إعداد مرتبطة بـ Claude Code وVS Code.
- ملف .claude/settings.json يستدعي .vscode/setup.mjs.
- ملف .vscode/tasks.json يحتوي على مهمة “Environment Setup” تعمل عند فتح المجلد. هذه المسارات لا تعمل تلقائيًا في جميع البيئات، إذ يقوم VS Code بحظر المهام التلقائية في المساحات غير الموثوقة، بينما يعتمد Claude Code على ثقة المستخدم في إعدادات المشروع.
التحقق من المصدر والانتشار
الإصدار المسموم حمل بيانات SLSA وOIDC صحيحة لأنه مر عبر سير عمل GitHub Actions الشرعي، لكن ذلك لم يضمن سلامة المصدر. الالتزام الذي زرع شيفرات Claude وVS Code حمل شارة GitHub Verified باسم github-actions[bot]، ما يؤكد صحة التوقيع لكنه لا يحدد هوية المهاجم. بعض الحزم المرتبطة بالمطور الأصلي بقيت نظيفة مثل سلسلة Keyv 5.x وحزم @keyv/* adapters، لكن المستودع نفسه ظل يحتوي على الملفات المسمومة، ما يعني أن أي إصدار جديد قد يحملها.
ارتباط بعائلة Shai-Hulud
شركة Semgrep وثّقت نفس الشيفرات والملفات في اختراق سابق لحزمة PyPI lightning في أبريل، بينما صنفت Aikido النشاط ضمن عائلة Shai-Hulud، ما يشير إلى ارتباط محتمل بسلسلة هجمات سابقة. حتى لحظة التقرير، لم يصدر أي بيان رسمي من المطور أو npm أو GitHub حول الحادثة.
توصيات أمنية
- مقارنة lockfiles والإصدارات المثبتة مع قائمة الحزم المتأثرة.
- تعطيل سكربتات التثبيت غير الضرورية.
- اعتبار أي بيئة نفذت إصدارًا مسمومًا بيئة مخترقة.
- إزالة مراقب إلغاء الرموز قبل تدوير المفاتيح والرموز المكشوفة.






























