
يشهد قطاع تطوير البرمجيات هجوماً سيبرانياً واسع النطاق عقب اكتشاف دودة برمجية ذاتية النسخ، حملت الاسم Shai-hulud، قامت بإصابة أكثر من 180 حزمة منشورة عبر سجل npm، في هجوم من أخطر الهجمات على سلاسل الإمداد البرمجية، إذ استغل اعتماد المطورين على npm وGitHub بشكل مترابط لإطلاق دورة عدوى متكررة.
الدودة تستولي على بيانات اعتماد الضحايا عند تشغيل حزم ملوثة، ثم تنشر هذه البيانات على مستودع عام في GitHub يحمل اسم Shai-hulud. كما تستغل رموز المصادقة الخاصة بـnpm لمواصلة دورة العدوى، وتستخدم الرموز المخترقة على GitHub لتسريب الأسرار التقنية وتحويل المستودعات الخاصة إلى عامة.
كيف يعمل الهجوم عبر npm وGitHub؟
يعد npm مدير الحزم الرئيسي للغة JavaScript ومنصة لاستضافة ملايين الحزم الخاصة بتطوير Node.js، وغالبية هذه الحزم مدارة عبر GitHub. منذ استحواذ GitHub على npm عام 2020، أصبح تسجيل الدخول إلى npmjs.com يتم باستخدام حساب GitHub، ما يتيح توليد رموز وصول يتم تخزينها محلياً أو في أنظمة التكامل المستمر مثل GitHub Actions.
الباحث كارلو زانكي من ReversingLabs أوضح أن الدودة Shai-hulud، التي يزيد حجمها على 3 ميغابايت من شيفرة JavaScript، تعمل بشكل مباشر بعد اختراق حساب مطور في npm. حيث تبحث عن الحزم التي يديرها المطور، وتنشئ إصدارات جديدة منها بعد حقن نفسها داخلها. هذه النسخ المعدلة تتضمن إجراء postinstall يقوم بتشغيل ملف bundle.js خبيث بمجرد تنزيلها، لتبدأ الدورة من جديد مع مستخدمين آخرين.
الدودة تستعين أيضاً بأداة TruffleHog الشرعية للبحث عن مفاتيح وصول شخصية لـGitHub وبيانات اعتماد خدمات سحابية مثل AWS وGoogle Cloud وAzure، بالإضافة إلى رموز npm. ثم تشفر الأسرار المستخرجة وترسلها إلى مستودعات عامة عبر واجهة GitHub API، وتضيف مهاماً إلى GitHub Actions بهدف تسريب مزيد من الأسرار إلى عناوين يتحكم فيها المهاجمون. كما تقوم بتحويل أي مستودع خاص إلى عام مع إضافة لاحقة -migration إلى اسمه وتغيير وصفه إلى Shai-Hulud Migration.
امتداد لهجوم S1ngularity؟
شركة StepSecurity نشرت قائمة بالحزم المصابة التي بلغت حتى الآن 187 حزمة، مع استمرار الزيادة بشكل مستمر. وتشير البيانات إلى أن أول حزمة مصابة كانت rxnt-authentication في إصدارها 0.0.3 المنشور يوم 14 سبتمبر، ما يجعل صاحب الحساب techsupportrxnt المريض الأول لهذه الحملة.
الباحث تشارلي إريكسن من Aikido أكد أن ما يميز هذا الهجوم هو طبيعته الدودية الكاملة، حيث لا يحتاج المهاجم لاستهداف كل حزمة يدوياً، بل تنتشر العدوى تلقائياً بمجرد اختراق بيئة واحدة.
ورغم أن هوية المنفذين ما زالت مجهولة، إلا أن أوجه الشبه مع هجوم S1ngularity الذي وقع في أغسطس 2025، حين جرى تلويث إصدارات من نظام Nx على npm، لافتة للنظر. كلا الهجومين اعتمدا على:
- تسريب البيانات المسروقة إلى مستودعات عامة ضمن حسابات GitHub الخاصة بالضحايا.
- استخدام رموز GitHub المسروقة لتحويل المستودعات الخاصة إلى عامة.
- استهداف مطورين يعملون على أنظمة Linux أو macOS.
وفي وقت سابق من هذا العام، تعرضت بيئة npm أيضاً لهجوم آخر استهدف 18 حزمة واسعة الاستخدام جرى تلويثها بشيفرات خبيثة لسرقة العملات الرقمية.