باختصار: أمان سلسلة التوريد في npm يتجاوز ماسح الثغرات الأمنية
أمان سلسلة التوريد في npm هو ممارسة التأكد من أن كل حزمة يتم تثبيتها في مشاريع JavaScript الخاصة بك شرعية وغير معدلة وآمنة. ليس فقط خالياً من الثغرات الأمنية المعروفة.
- الفجوة: يقوم ماسح الثغرات الأمنية التقليدي في npm بمطابقة الحزم مع قواعد بيانات CVE. الحزمة الخبيثة لا تحتوي على أي CVE، لذا فهي تجتاز الفحص.
- البرهان: في مارس 2026، قام حساب مسؤول الصيانة المخترق بتحويل برنامج axios، الذي يزيد عدد تنزيلاته الأسبوعية عن 100 مليون، إلى قناة لتوزيع البرامج الضارة لمدة ثلاث ساعات تقريبًا.
- نقطة الدخول: معظم هجمات npm تتم عبر نصوص التثبيت، والتي يتم تنفيذها بمجرد كتابة الأمر
npm install. - المأزق: اكتشاف السلوك الضار أثناء نشر الحزم، وليس بعد ظهور ثغرة أمنية (CVE)، وتحسين طريقة تشغيل عمليات التثبيت.
في 31 مارس 2026، قام آلاف المطورين بتنفيذ الأمر الأكثر اعتيادية في جافا سكريبت: npm installقام بعضهم بتثبيت إصدار جديد من أكسيوس، وهو عميل HTTP الموجود في نسبة كبيرة من تطبيقات الويب حول العالم. وظلت نتائج فحص التبعيات لديهم سليمة. ونجحت عمليات البناء. ثم تسلل حصان طروادة للتحكم عن بُعد إلى أجهزتهم بهدوء.
لم تتضمن تلك القصة أي ثغرة أمنية. وهذا تحديداً سبب إغفال العديد من برامج أمان npm لها.
ماذا حدث لموقع أكسيوس؟
كان الهجوم بسيطاً ومتأنياً. وفقاً لـ تقرير ما بعد الوفاة الخاص بمطوري برنامج أكسيوستم نشر نسختين خبيثتين، 1.14.1 و0.30.4، عبر حساب مخترق تابع للمطور الرئيسي. لم يقم المهاجم بتعديل أي سطر من كود Axios، بل أضاف تبعية جديدة واحدة فقط. plain-crypto-js، والتي أدارت postinstall نص برمجي قام بجلب حمولة المرحلة الثانية.
عزت مايكروسوفت ثروات إنتليجنس إلى البنية التحتية إلى سافاير سليت، وهي جهة فاعلة تابعة للدولة الكورية الشمالية. ظلت النسخ المسمومة متاحة لمدة ثلاث ساعات تقريبًا قبل أن يقوم npm بإزالتها. لأي نظام تكامل مستمر pipeline أو جهاز كمبيوتر محمول تم تثبيته خلال تلك الفترة، ثلاث ساعات كانت كافية.
لم تكن هذه حالة معزولة. ففي سبتمبر 2025، انتشرت دودة شاي هولود عبر مئات حزم npm عن طريق سرقة رموز الصيانة وإعادة نشر نفسها. أسلوب مختلف، لكن الدرس واحد: في npm، تُورَث الثقة تلقائيًا، والمهاجمون على دراية بذلك.
لماذا لم يذكر ماسح الثغرات الأمنية الخاص بـ npm أي شيء؟
تتعامل معظم الفرق مع أمن سلسلة توريد npm كمشكلة ثغرات أمنية. فهم يُشغّلون ماسحًا لثغرات npm، ويقارنون شجرة التبعيات الخاصة بهم بقواعد بيانات العيوب المعروفة، ثم يُصلحون ما يُشير إليه الماسح. هذا العمل مهم، لكنه يُجيب على سؤال مختلف.
| الابعاد | عبوة قابلة للتلف | طرد خبيث |
|---|---|---|
| ما هو عليه | كود سليم به خلل | شفرة برمجية مصممة لإيذائك |
| هل يحتوي على ثغرة أمنية من نوع CVE؟ | عادة، في النهاية | على الاغلب لا |
| عندما يكون الأمر خطيراً | عندما يكون الخلل قابلاً للوصول إليه واستغلاله | لحظة تثبيته |
| ما الذي يمسك به | البحث في قاعدة بيانات الثغرات الأمنية | تحليل سلوك الحزمة نفسها |
| الوقت النموذجي للاستجابة المطلوبة | أيام إلى أسابيع | من دقائق إلى ساعات |
لا يمكن لقاعدة بيانات الثغرات الأمنية إلا وصف ما تم تحليله وتصنيفه مسبقًا. حزمة خبيثة نُشرت قبل ساعة ليس لها أي سجل في أي مكان. لذا، يُظهر الماسح الضوئي أنها سليمة، ويتم اعتبارها آمنة.
هذا هو التحول الأساسي في أمن سلسلة توريد npm: لم يعد السؤال "هل تحتوي هذه الحزمة على خلل معروف؟" بل "هل تقوم هذه الحزمة بشيء لا ينبغي لها القيام به؟"
أربع طرق يتسلل بها المهاجمون إلى مجلد node_modules الخاص بك
- الاستيلاء على الحساب. سرقة بيانات اعتماد أو رمز مميز لمطور البرنامج ونشر نسخة مُعدّلة من حزمة موثوقة. هذه هي استراتيجية أكسيوس، وهي الأصعب اكتشافًا، لأن اسم الحزمة مطابق تمامًا للاسم الأصلي.
- Typosquatting. نشر
axoisorreqeustsوانتظر حدوث خطأ مطبعي، أو نسخ ولصق من برنامج تعليمي سيئ، أو مساعد برمجة يعمل بالذكاء الاصطناعي ليقترح الاسم الخاطئ. - ارتباك التبعية. انشر حزمة عامة تحمل نفس اسم إحدى حزمك الداخلية. إذا كان إعداد سجل النظام لديك يفضل الحزمة العامة، فستقوم بتثبيت شيفرة المهاجم.
- تثبيت البرامج النصية. القاسم المشترك في معظم ما سبق هو أن npm يسمح بتشغيل الحزم
preinstallوpostinstallيتم تنفيذ البرامج النصية تلقائيًا، لذا يتم تنفيذ التعليمات البرمجية الخبيثة قبل أن يقوم أي شخص باستيراد أي شيء. CISتوجيهات أ بشأن تسوية أكسيوس يوصي بالضبطignore-scripts=trueلما قبلcisلهذا السبب فقط.
كيف يبدو أمن سلسلة التوريد في npm عملياً
لن تتمكن من إيقاف كل هجوم بإجراء واحد. يمكنك أن تجعل نفسك هدفًا أصعب بكثير باتباع بعض العادات:
- Commit قم بتفعيل ملف القفل الخاص بك وقم بالتثبيت باستخدام
npm ci. يجب أن تقوم عمليات البناء بتثبيت ما تمت مراجعته بالضبط، وليس أي شيء كان موجودًا في سجل النظام في ذلك الصباح. - تعطيل برامج التثبيت افتراضياً. بكج
ignore-scripts=trueوالسماح باستخدام البرامج النصية فقط للحزم التي تحتاجها فعلاً. - حدد نطاق حزمك الداخلية. تُعدّ الأسماء الداخلية غير المحددة النطاق دعوة مفتوحة للارتباك في التبعيات.
- تحقق من مصدر المنتج. يدعم npm بيانات المنشأ تلك التي تربط الحزمة المنشورة بمصدرها وبنيتها. يُعدّ إصدار مفاجئ بدونها، من مشروع يتضمنها عادةً، مؤشراً خطيراً يستدعي أتمتتها.
- قم بدمج فحص الثغرات الأمنية مع الكشف عن البرامج الضارة. احتفظ بأداة فحص الثغرات الأمنية في npm للبحث عن العيوب المعروفة، وأضف خاصية الكشف التي تحلل ما تفعله الحزم الجديدة بالفعل.
العادة الخامسة هي التي تتجاهلها معظم الفرق، وهي التي كشف عنها هجوم أكسيوس.
اكشف الحزمة الخبيثة قبل أن تُعرف باسمها
زيجيني الإنذار المبكر بالبرامج الضارة (MEW) يقوم النظام بفحص الحزم الجديدة في السجلات العامة، بما في ذلك npm، فور نشرها، ويحلل سلوكها البرمجي بدلاً من انتظار توقيع معروف. عند الإبلاغ عن حزمة ما، يتم إخطار المستخدمين المتأثرين عبر البريد الإلكتروني أو منصات المراسلة أو الويب.hooksوتم وضع الطرد في الحجر الصحي، لذا يمكنك إيقافها عند... CI/CD guardrails.
حولها، زيجيني open source security يكشف هذا النظام عن باقي عناصر الهجمات التي تعتمد عليها المسارات الأربعة المذكورة أعلاه: انتحال أسماء النطاقات، والخلط بين التبعيات، وبرامج التثبيت المشبوهة، ومكونات npm الداخلية غير المحددة النطاق. كما يغطي الثغرات الأمنية المعروفة من NVD وOSV وإشعارات GitHub، مع إعطاء الأولوية لها حسب سهولة الوصول إليها، مما يتيح لك إصلاح ما يمكن استغلاله فعليًا، مع معالجة تلقائية. pull requests لإجراء الإصلاحات.
يتم تضمين MEW في خطة المطور المجانية. ابدأ مجانًا وقم بفحص مشاريع npm الأولى الخاصة بك في دقائق.
الأسئلة الشائعة
ما هو أمن سلسلة التوريد في npm؟
يُغطي نظام أمان سلسلة التوريد في npm جميع المخاطر التي قد تنشأ من خلال الحزم التي تعتمد عليها مشاريع JavaScript الخاصة بك: الثغرات الأمنية المعروفة، والحزم الخبيثة، وحسابات المشرفين المخترقة، وانتحال أسماء النطاقات، والخلط بين التبعيات. ويتجاوز هذا النظام مجرد فحص الثغرات الأمنية للتحقق من شرعية ما تقوم بتثبيته.
هل يقوم برنامج فحص الثغرات الأمنية في npm بالكشف عن البرامج الضارة؟
عادةً لا. يقوم ماسح الثغرات الأمنية التقليدي في npm بفحص الحزم مقابل قواعد بيانات الثغرات الأمنية المعروفة. الحزمة الخبيثة المنشورة حديثًا ليس لها مدخل في قاعدة البيانات، لذا فهي تجتاز الفحص ما لم يحلل البرنامج سلوك الحزمة أيضًا.
Is npm audit كافية؟
npm audit يُعدّ هذا البرنامج أداةً مجانيةً مفيدةً لتقييم الثغرات الأمنية المعروفة. لكنه لا يكشف عن البرامج الضارة المنشورة حديثًا، أو الأخطاء الإملائية في أسماء النطاقات، أو الالتباسات المتعلقة بالتبعيات، كما أنه لا يُحدد ما إذا كان بالإمكان الوصول إلى دالة مُعرّضة للخطر من خلال التعليمات البرمجية الخاصة بك.
كيف أعرف ما إذا كانت الحزمة ضارة؟
تشمل علامات التحذير برامج التثبيت التي تقوم بتنزيل أو تنفيذ التعليمات البرمجية عن بعد، والتعليمات البرمجية المبهمة، ومكالمات الشبكة غير المتعلقة بغرض الحزمة، والتبعية الجديدة التي لا يشير إليها مستودع المصدر أبدًا، والإصدار بدون المصدر الذي ينشره المشروع عادةً.







