هجوم جديد يستغل حزم npm الخاصة بـ SAP لسرقة بيانات المصادقة من

Cybersecurity Arab

عند تشغيل عملية npm install على إصدار مصاب، ينفذ سكربت مخفي اسمه setup.mjs قبل اكتمال التثبيت، حيث يقوم بتنزيل بيئة تشغيل Bun لJavaScript وتنفيذ ملف execution.js الذي يبلغ حجمه 11.7 ميغابايت ومشفّر، يقوم هذا الملف بسرقة بيانات المصادقة دون الحاجة إلى استخدام Node.js على الإطلاق. أكد محللو شركة Endor Labs أن هذا الخبيث هو نسخة معدلة من الدودة الأصلية «Shai-Hulud» التي وثق عنها في أبريل 2025. لاحظ الباحثون أن «Mini Shai-Hulud» تستخدم نفس إصدار Bun (v1.3.13)، نفس عائلة الشفرات المخصصة (ctf-scramble-v2)، ونفس مفتاح PBKDF2 (5012caa5847ae...)، مما يؤكد أن نفس الفاعل الخبيث يقوم بحملة جديدة تستهدف بيئة تطوير SAP CAP وMTA، مع تركيز أوسع على بيانات المصادقة واستخدام كلمات سر جديدة للانتشار.

Attackers Weaponize SAP npm Packages to Steal GitHub, Cloud, and AI Coding Tool Secrets

توجد هذه الحزم الأربعة ضمن شجرة الاعتماديات في تطبيقات CAP المستخدمة على نطاق واسع في منصة SAP BTP. يجب على أي مطور قام بتثبيت إصدار مصاب على جهاز يحتوي على بيانات مصادقة سحابية أو رموز GitHub أن يعتبر جميع الأسرار المخزنة على هذا الجهاز قد تم التعرض لها بالكامل.

كيف تجمع الدودة وتخرج بيانات المصادقة؟

يتضمن الملف الخبيث خمس محصّلات لبيانات المصادقة تعمل بشكل متوازٍ:

صورة توضيحية من المقال
صورة توضيحية من المقال
  • المحصّل الأول: يستهدف رموز npm عن طريق مسح ملفات npmrc في مجلدات المستخدم، جذر المشروع، ومتغيرات بيئة CI. يتم التحقق من هذه الرموز ضد API سجل npm للتأكد من صلاحيات النشر، حيث أن فقط الرموز التي تمتلك صلاحيات نشر تسمح بتكاثر الدودة.
  • المحصّل الثاني والثالث: يقومان بمسح بيانات المصادقة الخاصة بـ GitHub والمنصات السحابية. على أجهزة Linux، يقرأ الدودة ملفات الذاكرة (/proc/{pid}/mem) لاستخراج أسرار GitHub Actions المخزنة في الذاكرة. كما يقوم بمسح ملفات بيانات المصادقة الخاصة بـ AWS، استعلام GetCallerIdentity للحصول على سياق IAM، مسح مدير الأسرار في Google Cloud، قراءة ملفات حسابات الخدمة الخاصة بـ Kubernetes، وجمع بيانات مصادقة خزنة Azure Key Vault.
  • المحصّل الرابع: يستهدف أدوات التطوير الذكية (AI)، حيث يقوم بمسح 136 مسارًا مخزّنًا مسبقًا بحثًا عن إعدادات Claude Code (project/.claude/settings.json)، ملفات مهام VS Code (project/.vscode/tasks.json)، حالة IDE Cursor، تاريخ الأوامر، ملفات .env، ومفاتيح SSH الخاصة. في بيئات CI، يقوم بمسح أكثر من 25 منصة بما في ذلك Jenkins، Travis، وAzure Pipelines.

بعد جمع البيانات، يتم تشفيرها باستخدام AES-256-GCM، ثم تغلف مفتاح التشفير بمفتاح RSA-4096 عام للفاعل الخبيث قبل رفعها إلى مستودع GitHub مزيف تم إنشاؤه باستخدام حساب الضحية المسروق. إذا تم تثبيت أي إصدار مصاب، يجب التعامل مع الحدث على أنه تعريض كامل لبيانات المصادقة.

خطوات التصدي والتحسينات:

  • إزالة كل حزمة مصابة وإعادة تثبيتها باستخدام العلم --ignore-scripts.
  • البحث في جميع المشاريع على الجهاز عن ملفات execution.js التي تزيد عن 5 ميغابايت، ملفات .claude/settings.json التي تحتوي على Hook SessionStart، وأي ملف format-check.yml لم يتم إنشاؤه من قبل الفريق.
  • إلغاء صلاحية جميع الأسرار من الجهاز المصاب، بما في ذلك رموز نشر npm، رموز GitHub PATs، مفاتيح AWS IAM، بيانات مصادقة حسابات خدمة Google Cloud، أسرار عميل Azure، مفاتيح SSH الخاصة، ومحتويات ملفات .env.
  • لتحسين الدفاعات على المدى الطويل، يجب تحديد نطاق نشر OIDC الخاص بـ npm إلى ملف عمل معين على فرع معين، وليس على المستودع بأكمله. يجب فرض استخدام العلم --ignore-scripts في عمليات التثبيت في بيئات CI، ومراجعة Hooks دورة الحياة أثناء مراجعة الاعتماديات.

كان نافذة الكشف عن الهجوم حوالي ساعتين، مما يعني أن عمليات إزالة التثبيت التفاعلية ليست حماية موثوقة بمفردها.

إرسال تعليق