npm بستهها رو موقع انتشار اسکن میکنه
خلاصهٔ کاملتر
تو چنجلاگ گیتهاب اومده که npm بهعنوان بخشی از کار امنیت زنجیرهٔ تأمین، اسکن خودکار بستهها رو در لحظهٔ انتشار راه انداخته. هر بستهٔ تازهای که publish میشه قبل از در دسترس قرار گرفتن برای نصب اسکن میشه و بسته به نتیجه یا عادی منتشر میشه، یا برای بررسی دستی نگه داشته میشه، یا بلاک میشه. اگه بستهای بلاک بشه منتشرکننده اعلان میگیره و میتونه اعتراض ثبت کنه، و بسته به شدت و قطعیتِ یافته ممکنه روی خود حساب نگهدارنده هم اقدامی انجام بشه.
نتیجهٔ عملیاش یه فاصلهٔ کوتاه بین انتشار و در دسترس بودنه؛ معمولاً حدود پنج دقیقه، ولی تو ساعتهای شلوغ یا بسته به حجم و محتوای بسته میتونه به ۱۵ دقیقه یا بیشتر برسه. این عددها رفتار فعلی رو توصیف میکنن و تضمین سرویس نیستن. اگه اتوماسیونی داری که فرض میکنه بسته بلافاصله بعد از انتشار نصبشدنیه، باید تحمل این تأخیر رو بهش اضافه کنی. تو این فاصله npm dist-tag کار میکنه، ولی npm deprecate و npm unpublish تا در دسترس شدن بسته جواب نمیدن.
بخش دوم خبر دربارهٔ محتوای دومنظورهست: بعضی بستههای کاملاً مشروع قابلیتهای امنیتی دارن که برای اسکنر خودکار شبیه بدافزار به نظر میرسه. برای همین فیلد contentPolicy به package.json اضافه شده تا نگهدارنده این محتوا رو اعلام کنه، و کنارش باید یه فایل متنی به اسم DISCLOSURE تو ریشهٔ بسته باشه که هم کارکرد دومنظوره و هم کاربرد مشروعش رو شرح بده. تیم Trust and Safety موقع بررسی به همین فایل نگاه میکنه.
اعلام این متادیتا خودش مجوز انتشار نیست و ممکنه اسکنهای بیشتری رو فعال کنه. بستههای دومنظوره باید از مسیری منتشر بشن که احراز هویت دومرحلهای رو الزامی میکنه، مثل trusted publishing با OIDC، نشست تعاملی با 2FA، یا انتشار مرحلهای. این اعلام هم باید ماندگار بمونه و نسخههای بعدی نمیتونن contentPolicy یا فایل DISCLOSURE رو حذف کنن. اجرای این الزام تدریجیه و npm داره مستقیم به نگهدارندههای بستههای دومنظوره ایمیل میزنه.
نکات کلیدی:
- بستههای تازه قبل از در دسترس شدن برای نصب، خودکار اسکن میشن
- نتیجه: انتشار عادی، بررسی دستی، یا بلاک شدن با امکان اعتراض
- تأخیر معمول حدود ۵ دقیقه، تو اوج تا ۱۵ دقیقه یا بیشتر
- تو زمان انتظار فقط npm dist-tag کار میکنه، نه deprecate و unpublish
- فیلد contentPolicy تو package.json برای اعلام محتوای دومنظوره
- فایل متنی DISCLOSURE تو ریشهٔ بسته برای این محتوا الزامیه
- انتشار بستههای دومنظوره فقط از مسیرهای الزامکنندهٔ 2FA و اعلامش برگشتناپذیره




