أعلنت منصة جيت هاب عن تغييرات جذرية قادمة في إصدار npm 12، حيث سيتم تعطيل سكربتات التثبيت تلقائياً لمواجهة هجمات سلاسل التوريد البرمجية وحماية المطورين.
تعد هذه الخطوة بمثابة تحول كبير في فلسفة التعامل مع حزم Node.js، حيث تهدف جيت هاب إلى الحد من الأساليب الهجومية التي تستغل أمر "npm install" لتنفيذ أكواد برمجية خبيثة عبر خطافات دورة حياة npm. ووفقاً لتقرير تيكبامين، فإن الإصدار الجديد المقرر إطلاقه الشهر المقبل سيتطلب موافقة صريحة من المستخدم قبل تنفيذ أي كود أثناء عملية التثبيت.
لماذا قررت جيت هاب تعطيل سكربتات التثبيت في npm؟
وصفت جيت هاب سكربتات دورة حياة وقت التثبيت بأنها "أكبر سطح منفرد لتنفيذ الأكواد في نظام npm البيئي". في الوقت الحالي، يقوم أمر التثبيت بتشغيل السكربتات من كل تبعية غير مباشرة، مما يعني أن حزمة واحدة مخترقة في أي مكان في شجرة التبعيات يمكنها تشغيل كود عشوائي على جهاز المطور أو خوادم التوزيع الآلي (CI).
من خلال حظر هذه السلوكيات، تهدف المنصة إلى تحويل عملية تنفيذ الأكواد من وضع "الثقة الافتراضية" إلى وضع "الاختيار الواعي". وحسب تيكبامين، فإن هذا التغيير يغلق ثغرة أمنية حرجة مع الحفاظ على سهولة تشغيل السكربتات للحزم التي يثق بها المطور بالفعل.
ما هي التغييرات التقنية في إصدار npm 12؟
تشمل التغييرات الجديدة مجموعة من القيود الصارمة التي تضمن بيئة تطوير أكثر أماناً، ومن أبرزها:
- تعطيل السكربتات التلقائية: لن يتم تشغيل سكربتات التثبيت (install scripts) بشكل افتراضي للحزم الجديدة.
- حظر بناء node-gyp الضمني: سيتم حظر عمليات إعادة البناء التلقائية حتى لو لم تكن تحتوي على سكربت تثبيت صريح.
- تقييد التبعيات الخارجية: حظر سكربتات التحضير (prepare scripts) القادمة من روابط Git أو الملفات أو الروابط الرمزية بنفس الطريقة.
- إعدادات Git الصارمة: تعيين خيار "--allow-git" إلى "none" بشكل افتراضي لمنع تجاوز ملفات التكوين للملفات التنفيذية.
تعزيز حماية سلاسل التوريد
تأتي هذه الخطوات استكمالاً لجهود سابقة قامت بها npm هذا العام، مثل ميزة "min-release-age" التي تسمح برفض أي إصدار من الحزم تم نشره قبل أقل من عدد معين من الأيام، وهو ما يعمل كدرع وقاية ضد الحزم الخبيثة التي تُنشر حديثاً وتستهدف الضحايا قبل اكتشافها.
كيف تستعد لهذه التغييرات في بيئة التطوير الخاصة بك؟
تنصح جيت هاب المطورين بالبدء في التجهيز لهذه المرحلة الانتقالية من الآن لتجنب أي تعطل في سير العمل. إليك الخطوات الموصى بها:
- التحديث إلى إصدار npm 11.16.0 أو أحدث كخطوة تجريبية.
- تشغيل عمليات التثبيت العادية ومراجعة التحذيرات التي تظهر في سطر الأوامر.
- استخدام الأمر
npm approve-scripts --allow-scripts-pendingلمعاينة الحزم التي تحتوي على سكربتات. - الموافقة فقط على الحزم الموثوقة وتحديث ملف package.json الخاص بك.
بمجرد الترقية إلى الإصدار 12، لن تعمل سوى السكربتات التي قمت بالموافقة عليها مسبقاً، بينما سيتم إيقاف أي شيء آخر لم يتم اعتماده. يمثل هذا التوجه الجديد التزاماً قوياً من جيت هاب بجعل بيئة تطوير جافا سكريبت أكثر أماناً وموثوقية في مواجهة التهديدات السيبرانية المتزايدة.