npm يفعّل فحص الحزم وقت النشر ويلزم «الاستخدام المزدوج» ببيانات وتعزيز 2FA: ما الذي يتغيّر وكيف تستعد؟

بقلم فريق منصة التقنية العربية · مدة القراءة 4 دقائق · نشر في 2026/08/13 · 10 مشاهدة
سياسات الأمان الجديدة في npm عام 2026: فحص وقت النشر واشتراطات الاستخدام المزدوج

أعلن سجل npm عن تغييرات جوهرية على آلية النشر ستؤثر على تدفقات العمل لدى معظم فرق Node.js: فحص تلقائي للحزم وقت النشر قبل إتاحتها للتثبيت، وسياسة مُحدّثة للحزم ذات «الاستخدام المزدوج» تتطلب بيانات تعريف وملف إفصاح DISCLOSURE مع فرض أساليب نشر تُطبق المصادقة الثنائية 2FA. تنطبق المعلومات التالية بحسب إعلان 28 يوليو 2026 ووثيقة السياسة الرسمية في التاريخ نفسه.

ما الجديد؟

1) فحص تلقائي قبل الإتاحة

عند نشر إصدار جديد سيُجري npm فحصاً آلياً للحزمة قبل أن تصبح متاحة للتثبيت. إذا مرّت النتائج بنجاح تُنشر كالمعتاد؛ وإن وُجدت إشارات خطورة قد تُعلّق للمراجعة اليدوية أو تُحجب. يُضيف ذلك زمناً انتظارياً قصيراً عادةً بنحو 5 دقائق، وقد يصل إلى ~15 دقيقة أو أكثر في أوقات الذروة أو حسب محتوى الحزمة وحجمها. هذه مدد تقريبة وليست ضمان خدمة وقد تتغير مع تطور آلية الفحص. أثناء انتظار الفحص يظل npm dist-tag يعمل، بينما عمليات تعتمد على النسخة المنشورة مثل npm deprecate وnpm unpublish لن تعمل حتى تُتاح النسخة.

مصدر: إعلان GitHub Changelog بتاريخ 28 يوليو 2026. (github.blog)

2) سياسة «الاستخدام المزدوج» Dual‑Use الجديدة

تُعرِّف npm «الاستخدام المزدوج» بأنه قدرات أمنية قد تبدو شبيهة بالبرمجيات الخبيثة لكنها مشروعة (مثل أدوات الاختبار الاختراقي أو إخفاء الشيفرة). هذه الحزم مسموحة بشرط إعلان واضح عنها داخل package.json عبر حقل contentPolicy بالقيمة class: "dual-use"، وإضافة ملف نصي باسم DISCLOSURE في جذر الحزمة يشرح الوظائف المقصودة والاستخدام المشروع. تنص السياسة أيضاً على أن هذا الإعلان قد يستدعي فحوصاً إضافية ملائمة للحالات الحساسة.

مصدر: وثيقة npm Dual‑Use Content Policy (آخر تحديث: 28 يوليو 2026). (docs.npmjs.com)

3) اشتراطات نشر تُطبق 2FA واستمرارية الإعلان

إذا أعلنت الحزمة عن «استخدام مزدوج»، يجب أن يتم نشرها بأسلوب يفرض المصادقة الثنائية: مثل Trusted Publishing (OIDC) عبر GitHub Actions، أو جلسة تفاعلية مع 2FA، أو Staged Publishing حيث تُطبق 2FA عند الترقية من مرحلة الإعداد إلى الإتاحة. لا يُسمح بالنشر المباشر غير المرحلي باستخدام توكن يتجاوز 2FA لهذه الحزم. كما تشترط السياسة استمرارية الإعلان: لا يجوز إلغاء حقل contentPolicy أو حذف ملف DISCLOSURE في الإصدارات اللاحقة، وإلا سيُرفض النشر.

مصدر: وثيقة سياسة «الاستخدام المزدوج» في npm. (docs.npmjs.com)

ماذا يعني ذلك لفرق التطوير العربية؟

تأثيرات مباشرة على خطوط CI/CD

  • تحمّل مهلة الإتاحة: عدّل مهام الإطلاق التي تفترض فورية التثبيت بعد النشر لإضافة انتظار ذكي (polling/backoff) قبل تنفيذ تثبيت من السجل العام. استند لتقدير 5–15 دقيقة كقيمة افتراضية قابلة للتغير.
  • فصل مراحل «البناء» و«الإتاحة»: احفظ الأرتيفاكتات داخلياً واختبرها، ثم اسحب النسخة من npm بعد تأكيد إتاحتها، لضمان أن بيئة الاختبار تُطابق ما سيصل للمستخدمين.
  • خطط بديلة للمهام المعتمدة على unpublish/deprecate: إن كانت لديك مهام آلية تتطلب إلغاء نشر أو وسم نسخة فورياً، ضع اعتبار أن هذه العمليات لن تعمل حتى إتاحة الإصدار.

التزام سياسة «الاستخدام المزدوج» دون تعطيل عملك

  • أضف contentPolicy: ضمن package.json أدرج:
    { "contentPolicy": { "class": "dual-use" } }
  • اكتب DISCLOSURE بجودة عالية: صف بإيجاز ما تفعله الأداة ولماذا قد تبدو حساسة وكيف تُستخدم بشكل شرعي (أمثلة، حدود الاستخدام، تحذيرات).
  • اختر أسلوب نشر يفرض 2FA: إن كنت تعتمد GitHub Actions، فكر في Trusted Publishing (OIDC) أو Staged Publishing لتلبية المتطلبات دون تداخل يدوي.
  • حافظ على الاستمرارية: الإعلان ليس مرة واحدة؛ أي إصدار لاحق يجب أن يُبقي الحقول والملف كما هي وإلا سيرفض السجل النشر.

مرجع تفاصيل المتطلبات: وثيقة سياسة npm. (docs.npmjs.com)

قائمة عمل سريعة (Checklist)

  1. راجع خطوط CI/CD وأضف انتظاراً قبل التثبيت من السجل العام بعد النشر.
  2. فعّل 2FA على حسابات النشر، وخطط للانتقال إلى Trusted Publishing (OIDC) أو Staged Publishing.
  3. إن كانت حزمك ذات طبيعة أمنية، أضف contentPolicy وDISCLOSURE الآن، ولا تنتظر أول رفض.
  4. حدّث وثائق فريقك وسياسات الإطلاق لتتماشى مع زمن الفحص ومتطلبات الإعلان.

أسئلة مهمة

هل هذا التغيير مفعل الآن؟ وما الإطار الزمني؟

نعم. أُعلن عن الفحص وقت النشر وسياسة «الاستخدام المزدوج» في 28 يوليو 2026، ويُنفَّذ الفحص تلقائياً قبل إتاحة الحزم للتثبيت مع مهلة تقديرية قصيرة قد تتغير. راجع الإعلان الرسمي للتفاصيل الدقيقة. (github.blog)

هل يسري ذلك على السجل العام فقط أم يشمل السجلات الخاصة؟

السياسة والفحص المعلَن عنهما يستهدفان السجل العام لـ npm. إن كنت تستخدم سجلاً خاصاً أو مرآة داخلية، ستعتمد السلوكيات على ذلك المزود. أما على السجل العام، فتُنطبق متطلبات الإعلان وطرق النشر التي تفرض 2FA على الحزم ذات «الاستخدام المزدوج». (docs.npmjs.com)

خلاصة

هذه خطوة كبيرة في تأمين سلسلة توريد البرمجيات في نظام npm البيئي. الفحص المسبق يقلّل احتمال وصول إصدارات خبيثة للمستخدمين فوراً، وسياسة «الاستخدام المزدوج» تُحافظ على مساحة الباحثين والأدوات الأمنية المشروعة مع ضوابط واضحة. ابدأ اليوم بمراجعة خطوط الإطلاق وتمكين 2FA، وإن كانت لديك حزم أمنية فأعلن عنها بالشكل الصحيح لتفادي التعطيل مستقبلاً. للمزيد من التفاصيل التقنية والاشتراطات المحدّثة، ارجع إلى إعلان GitHub Changelog وسياسة npm الرسمية.

الأسئلة الشائعة

كيف أعلن عن «الاستخدام المزدوج» في حزمتـي؟

أضف إلى package.json الحقل contentPolicy بهذا الشكل: { "contentPolicy": { "class": "dual-use" } } ثم أنشئ ملفاً نصياً باسم DISCLOSURE في جذر الحزمة يشرح الوظائف الحساسة والاستخدام المشروع. سيُرفض النشر إذا حذفت الإعلان في إصدارات لاحقة. ([docs.npmjs.com](https://docs.npmjs.com/policies/dual-use))

نستخدم نشرًا آليًا عبر CI، ما الطريقة الموصى بها للامتثال؟

فعّل المصادقة الثنائية 2FA على حسابات النشر، وانتقل إلى Trusted Publishing (OIDC) أو Staged Publishing لضمان فرض 2FA أثناء النشر أو الترقية من المرحلة التجهيزية. حدّث مهامك لتتحمل مهلة إتاحة الإصدار بعد الفحص. ([docs.npmjs.com](https://docs.npmjs.com/policies/dual-use))