npm تضيف صلاحية dist-tag إلى الـ trusted publishing فيمكن الاستغناء عن آخر token طويل العمر
أنظف pipeline للنشر على npm كان يحتفظ بمفتاح واحد طويل العمر لمهمة صغيرة، وهذا المفتاح تحديدًا هو الطريق الذي سلكته معظم هجمات npm هذا العام.
أضافت GitHub في 30 سبتمبر 2026 صلاحية جديدة إلى الـ trusted publishing في npm اسمها Allow npm dist-tag. والـ trusted publishing طريقة نشر تعتمد فيها الـ pipeline على OIDC token صالح لدقائق، بدل access token محفوظ في إعدادات المستودع منذ شهور أو سنوات.
كانت المشكلة أن هذه الطريقة تغطي النشر فقط. أما إدارة الـ dist-tags، أي الوسوم التي تحدد أي نسخة يحصل عليها المستخدم، مثل latest وnext وbeta، أو إعادة نسخة سابقة بعد rollback، فكانت تتطلب الاحتفاظ بـ access token طويل العمر مخصص لهذه المهمة الصغيرة. أي أن أنظف pipeline ممكنة كان يبقى فيها مفتاح واحد يملك صلاحيات واسعة.
بعد التحديث، أصبحت هذه الصلاحية جزءًا من الـ OIDC. وهي معطلة افتراضيًا في الإعدادات الجديدة والقديمة على السواء، فلا يحصل عليها أحد إلا إذا فعّلها بنفسه.
وأهمية التغيير أن معظم الهجمات التي أصابت npm هذا العام سلكت الطريق نفسه: سرقة token من حساب أحد المشرفين على حزمة، ثم نشر نسخة خبيثة باسمه. وكل token طويل العمر يبقى في مستودع هو نقطة دخول محتملة من هذا النوع.
ويأتي التحديث بعد أسبوعين من إتاحة tokens للـ CI تجهّز النسخة ولا تنشرها، في اتجاه واحد هو تقليص ما يستطيع أي مفتاح منفرد أن يفعله.
ويعني ذلك للفرق التي تنشر حزمًا على npm أن متغير NPM_TOKEN الذي بقي في مستودع ما منذ سنوات لم يعد ضروريًا لإدارة الوسوم، وأن إزالته أصبحت ممكنة دون أن تتعطل عملية النشر.