ثلاث مرات خلال ثمانية أشهر، نجحت نفس استراتيجية دودة npm. مهاجمون مختلفون، حزم برمجية مختلفة، نفس الآلية، ونفس الفترة الزمنية بين النشر والاكتشاف، مما مكّن كل مرة من النجاح. إذا كنت تتساءل عن ماهية دودة npm ولماذا يتكرر هذا النمط بدلاً من إصلاحه، فهذه هي الإجابة الصادقة: الحوادث، والآليات، والثغرة الوحيدة التي لا تزال حتى أقوى أنظمة الحماية تتركها مفتوحة.
ما هو برنامج npm Worm؟
دودة npm هي عبارة عن شيفرة خبيثة تُنشر في سجل npm، وتنتشر تلقائيًا إلى حزم أخرى بمجرد تشغيلها، وذلك عادةً عن طريق سرقة بيانات اعتماد النشر الخاصة بالمطور واستخدامها لحقن نفس الشيفرة في كل حزمة يتحكم بها. إنها "دودة" بالمعنى التقليدي: فهي لا تنتظر تثبيتها عمدًا، بل تنتشر من تلقاء نفسها، من حزمة إلى أخرى، ومن حساب إلى آخر، بسرعة فائقة.
إنّ خاصية الانتشار الذاتي هي ما يميّز حادثة دودة npm عن حزمة خبيثة عادية. فالحزمة الخبيثة الواحدة أشبه بإبرة في كومة قش. أما دودة npm فتحوّل كل مطوّر مخترق إلى نقطة توزيع جديدة، وتبدأ كومة القش بتوليد إبرها الخاصة.
أكبر حوادث دودة npm حتى الآن
شهد العام الماضي ثلاث تجارب عملية لنمط دودة npm، وكانت كل واحدة منها أكثر كفاءة من سابقتها:
- شاي-هولود (سبتمبر 2025). أول دودة npm ذاتية الانتشار موثقة. لقد اخترقت بيانات اعتماد القائمين على الصيانة، ثم استخدمتها لنشر نسخ خبيثة من كل حزمة تحت سيطرة ذلك القائم على الصيانة، مما حوّل المطورين أنفسهم إلى آلية توصيل للمرحلة التالية من الدودة.
- أكسيوس (مارس 2026). برمجيات خبيثة تابعة لدولة ما، مخبأة داخل حزمة يتم تحميلها حوالي 100 مليون مرة أسبوعيًا. ليست دودة بالمعنى الدقيق لانتشارها، ولكنها دليل على أن نموذج الثقة نفسه الذي استغله شاي هولود في نظام npm البيئي قادر على حمل حمولة خبيثة على نطاق واسع حقًا.
- SAP npm (أبريل 2026). وُصِفَتْ حينها بأنها نسخة مصغرة من إعصار شاي هولود: نفس نمط الدودة، يتكرر على نطاق واسع، بعد أقل من عام على الحادثة الأصلية. لم تتغير الآلية. ولم تتغير الدفاعات في معظمها أيضاً.
ثلاث حوادث دودة npm، نمط واحد متكرر: اختراق ناشر موثوق به، واستخدام بيانات اعتماده لنشر المحتوى تلقائيًا، والاعتماد على الفجوة بين النشر واكتشاف المجتمع للقيام بالباقي.
النمط الذي يتكرر
بغض النظر عن التفاصيل، فإن كل حادثة دودة npm تتبع نفس الخطوات الأربع:
- تم اختراق الحساب. رمز نشر خاص بالمشرف، npm loginأو يتم سرقة بيانات اعتماد CI، عادةً من خلال التصيد الاحتيالي، أو تسريب سر، أو اختراق تبعية في مستوى أعلى من سلسلة التوريد الخاصة بهم.
- الحقن الصامت. يقوم المهاجم بدفع نسخة جديدة من حزمة شرعية وموثوقة مع إضافة رمز خبيث، غالبًا داخل برنامج نصي لما بعد التثبيت أو برنامج نصي آخر لدورة الحياة يتم تشغيله تلقائيًا في اللحظة التي يقوم فيها شخص ما بتثبيته.
- الانتشار التلقائي. إذا كان المسؤول عن الصيانة المخترق يتحكم في حزم أخرى، أو إذا قام البرنامج النصي الخبيث نفسه بجمع المزيد من بيانات الاعتماد، فإن الدودة تنتشر إلى الحزمة التالية والمسؤول التالي عن الصيانة دون أي إجراء إضافي من المهاجم.
- تأخر الكشف. تبقى الحزمة متاحة للتثبيت في سجل النظام، ويمكن لأي شخص تثبيتها، إلى أن يلاحظها أحدهم ويبلغ عنها، فتُسحب. هذا التأخير، الذي قد يستغرق ساعات في بعض الحالات وأيامًا في حالات أخرى، هو الفترة الزمنية التي يحتاجها الفيروس بالكامل.
إن إدراك تلك المرحلة الرابعة هو ما يهم فعلاً في الدفاع. فكل استراتيجية للتخفيف من آثار هجوم دودة npm هي في جوهرها محاولة لتقليص أو تجاوز فترة التأخير في الكشف.
إطار عمل جدير بالاستشهاد به: حل بروتوكول SIP لمشكلة فترة التهدئة
لا تأتي جميع الاستجابات لهذا النمط من البائعين. ومن أوضحها ما يلي: خطة محمد علي عربي الأمنية الفورية، وهو إطار عمل طوارئ مكون من خمسة عناصر تحكم لمخاطر سلسلة توريد البرمجيات، والذي انبثق من سؤال عملي للغاية طُرح في نهاية جلسة SafeDev: "إذا كان بإمكاننا القيام ببضعة أشياء فقط، فماذا يجب أن نفعل أولاً؟"
يهدف عنصر التحكم الثاني في SIP بشكل مباشر إلى معالجة مشكلة دودة npm: تجميد التبعيات غير المعتمدة بفترة انتظار مدتها خمسة أيام، وتعطيل البرامج النصية لدورة حياة التبعيات حتى لا يتمكن برنامج خبيث من التنفيذ تلقائيًا أثناء التثبيت. عمليًا، هذا هو min-release-age=5 و ignore-scripts=true في مشروع .npmrcيتم تطبيق هذا الإجراء في بيئة التكامل المستمر (CI) لمنع ملفات القفل من حلّ حزمة نُشرت بالأمس دون علم المستخدم. إنه إجراء تحكم سليم وفعّال، ويستهدف بشكل مباشر نفس مشكلة تأخر الكشف التي تعتمد عليها جميع حوادث دودة npm. تعمّق في التفاصيل:
حيث لا تزال نافذة التبريد تترك فجوة
فترة التهدئة هي رهان: على أن يكتشف المجتمع حزمة خبيثة ويبلغ عنها قبل انتهاء فترة الانتظار. وفي أغلب الأحيان، ينجح هذا الرهان. يتم الإبلاغ عن نسبة كبيرة من الحزم المخترقة خلال الأيام القليلة الأولى من نشرها، وهذا تحديدًا ما يجعل فترة الخمسة أيام خيارًا افتراضيًا معقولًا.
لكن دودة npm لا تتصرف مثل حزمة خبيثة نموذجية، وهذا يغير ما يمكن أن يفعله لك وقت التهدئة الثابت وما لا يمكنه فعله.
أن يكون قبلcisحول السرعة: لا يُلغي انتشار الدودة السريع فعليًا فترة التهدئة نفسها. فإذا فرضتَ حدًا أدنى صارمًا لعمر الإصدار، فإن الحزم المنشورة خلال تلك الموجة الأولى لا تزال حديثة جدًا بحيث لا يمكن إدخالها في عملية البناء، بغض النظر عن عدد الحزم التي تُصيبها الدودة في هذه الأثناء. السرعة مهمة، لكنها مهمة لجميع المستخدمين الذين لا يخضعون لفترة تهدئة، وليس لتجاوز فترة تهدئة مفروضة بالفعل.
إن القيد الحقيقي هو الصبر. يمكن لحمولة أكثر حذرًا أن تبقى خاملة بعد فترة التهدئة، ولا يتم تفعيلها إلا بعد انقضاء الأيام ودخول الحزمة في منطقة "الموثوقية"، قبلcisلأنها تعلم بوجود فترة انتظار تراقبها. هذا هو السيناريو الذي لا تكفي فيه فترة الانتظار الثابتة وحدها، وهنا تحديدًا يجب أن يكون هناك شيء مثل الكشف القائم على الأدلة في MEW إلى جانبها، وليس بدلاً منها.
لا يُعدّ أيٌّ من نمطي الفشل عيبًا في منهجية SIP. ففترة التهدئة هي رهانٌ على اكتشاف المجتمع، واكتشاف المجتمع له حدٌ أدنى: فهو لا يستطيع رصد ما لم يُبلَّغ عنه بعد. هذه ليست ثغرةً حصريةً بـ SIP، بل هي قيدٌ هيكليٌّ لأيِّ نظام دفاعي ينتظر وجود توقيع أو إشعار أو تقرير عام قبل اتخاذ أي إجراء.
كيف يسد MEW فجوة فترة التبريد
هذا هو قبلcisالفجوة نظام Xygeni للتحذير المبكر من البرامج الضارة (MEW) صُمم نظام MEW ليُغلق تلقائيًا. فبدلًا من انتظار تقارير المجتمع أو توقيع منشور، يقوم MEW بفحص NPM وPyPI وMaven باستمرار مع نشر الحزم والإصدارات الجديدة، محللًا السلوك بدلًا من مطابقته مع التهديدات المعروفة. وعندما يبدو شيء ما خبيثًا، يتم عزله، ويؤكد باحثو الأمن هذا الاكتشاف قبل الكشف عنه للعامة، وليس بعده.
يُعدّ هذا التمييز مهمًا لكلا نمطي فشل دودة npm المذكورين أعلاه. ففي مواجهة دودة سريعة الانتشار، لا يحتاج الكشف المسبق عن التوقيع إلى فترة الخمسة أيام التي يفترضها نظام التهدئة. أما في مواجهة حمولة كامنة وهادئة، فإن تحليل سلوك MEW لا يبحث عن عمر الدودة أو سمعتها، بل يبحث عما يفعله الكود فعليًا، لذا فإن انتظار انتهاء فترة التهدئة لا يُفيد المهاجم بشيء.
يمتد جدار الحماية الخاص بالتبعيات في MEW إلى نقطة التثبيت نفسها، حيث يحظر الحزمة الضارة في الوقت الفعلي حتى لو تجاوزت الفحوصات السابقة، وتغطي طبقة الكشف نفسها... CI/CD جانب من حادثة دودة npm: نمط فتح الفرع، والحقن، وإعادة القفل الذي يسمح للمهاجم بدفع برنامج خبيث commit ويقومون بإخفاء آثارهم بهدوء، مع وجود سجل تدقيق كامل إذا حدث ذلك على أي حال.
يجيب كل من SIP وMEW على نفس السؤال، ولكن على مستويات مختلفة.
لا يُنفي أيٌّ من هذا خطأ آلية التحكم في فترة التهدئة في SIP، ومن الجدير بالذكر بوضوح: أن فترة تهدئة مدتها خمسة أيام مع تعطيل البرامج النصية لدورة حياة البرامج الضارة لا تزال من أسرع وأرخص وسائل الحماية التي يمكن للفريق تطبيقها ضد أي هجوم دودة npm عادي، وهي ضرورية في أي خطة جادة لتعزيز أمن سلسلة التوريد. لكن ما لا تستطيع هذه الآلية فعله، بحكم تصميمها، هو رصد ما لم يكتشفه المجتمع بعد. هذه مهمة الكشف المستمر القائم على السلوك والذي يعمل بالتوازي مع فترة التهدئة، وليس بدلاً منها.
عند دمجهما معًا، يغطي النهجان طرفي المشكلة نفسها: يعمل بروتوكول SIP على تحصين عملية البناء pipeline، وتجميد التبعيات، وصورة الحاوية حول مشهد تهديد معروف ومعلن، بينما يغطي الكشف المسبق عن التوقيع في MEW حوادث ديدان npm التي لم يتم الكشف عنها بعد، تلك التي لا يمكن لنافذة التهدئة، بحسب منطقها الخاص، أن تتوقعها.
الأسئلة الشائعة
ما هو دودة npm، في جملة واحدة؟
يتم نشر التعليمات البرمجية الخبيثة على npm والتي تنتشر تلقائيًا إلى حزم أخرى، عادةً عن طريق سرقة بيانات اعتماد المسؤول عن الصيانة واستخدامها لحقن نفس الحمولة في مكان آخر، دون أي إجراء إضافي من المهاجم.
هل كل حزمة npm خبيثة هي دودة npm؟
لا. الحزمة الخبيثة التي لا تنتشر من تلقاء نفسها تُعتبر هجومًا على سلسلة التوريد، وليست دودة. ما يُميّز حادثة دودة npm تحديدًا هو خطوة الانتشار الذاتي: اختراق واحد يؤدي تلقائيًا إلى الاختراق التالي.
هل توقف فترة التهدئة الخاصة بالتبعيات دودة npm؟
يقلل ذلك من المخاطر بشكل كبير، إذ يتم الإبلاغ عن معظم البرامج الضارة خلال الأيام الأولى من نشرها. لكن فترة التهدئة تعتمد على سرعة اكتشاف المجتمع لها، ويمكن تصميم دودة npm سريعة الانتشار أو كامنة عمداً خصيصاً لتجاوز هذه الفترة.
ما الذي يقضي فعلياً على دودة npm قبل فترة التهدئة؟
المسح المستمر القائم على السلوك، والذي لا يعتمد على وجود توقيع أو تقرير عام مسبقًا. هذه هي الثغرة تحديدًا التي صُممت أدوات الكشف المسبق عن التوقيعات، مثل MEW من Xygeni، لسدّها.







