گیت‌هاب بین مارس و ژوئیهٔ ۲۰۲۶ مجموعه‌ای از تغییرات عملیاتی در npm و GitHub Actions اعمال و اکنون آن‌ها را به‌صورت متمرکز گزارش کرده است. بیشتر اصلاحات پیش‌فرض‌ها را سخت‌تر کرده‌اند تا برد حملات زنجیرهٔ تأمین کاهش یابد.

تغییرات کلیدی و آثار آنها

موانع نفوذ اولیه

  • حالت فقط‌خواندنی ۷۲ ساعته در npm: حساب‌های با تأثیر بالا پس از تغییر آدرس ایمیل یا استفاده از کد بازیابی احراز هویت دومرحله‌ای (2FA) به‌مدت ۷۲ ساعت در حالت فقط‌خواندنی قرار می‌گیرند تا امکان انتشار یا ارسال سریع نسخه منتفی شود.
  • تغییر پیش‌فرض actions/checkout: گردش‌کارها دیگر به‌طور پیش‌فرض کد فورک‌های غیرقابل‌اعتماد را در تریگرهایی که معمولاً مورد سوءاستفاده‌اند، چک‌اوت نمی‌کنند؛ این رفتار به نسخه‌های قبلی نیز بک‌پورت شده تا پایپلاین‌های قدیمی‌تر را نیز پوشش دهد.

کنترل‌های ارتقای سطح دسترسی

  • سیاست‌های اجرای گردش‌کار: مدیران می‌توانند تعیین کنند چه کسانی قادر به راه‌اندازی گردش‌کارها هستند و کدام انواع تریگرها مجاز باشند.
  • کش Actions فقط‌خواندنی برای تریگرهای غیرقابل‌اعتماد: مانع از آن می‌شود که مهاجم با مسموم‌کردن یک ورودی کشِ مشترک به گردش‌کارهای دارای دسترسی بالا دسترسی یابد.

کاهش خطر افشای اعتبارنامه

  • حذف اعتبارنامه‌های بلندمدت از پایپلاین به‌عنوان توصیهٔ اصلی برای کاهش ریسک مطرح شده است؛ استفاده از توکن‌های کوتاه‌مدت ترجیح داده می‌شود.
  • پشتیبانی نشر معتبر npm از CircleCI برای برقرار کردن زنجیرهٔ اعتماد در فرایند نشر.
  • فایروال شبکه Actions (پیش‌نمایش) که ترافیک خروجی را لاگ می‌کند تا مقصدهای غیرمعمول و رفتارهای مشکوک شناسایی شوند.

محدودسازی انتشار و وابستگی‌ها

  • نشر مرحله‌ای در npm: نسخه‌ها تا تکمیل یک تأیید اضافی و مرحلهٔ 2FA نگه داشته می‌شوند.
  • npm v12 به‌صورت پیش‌فرض اسکریپت‌های نصب را غیرفعال می‌کند و دریافت وابستگی از منابعی مانند git یا URLهای راه دور را محدود می‌سازد.
  • تاخیر Dependabot: به‌روزرسانی‌های نسخه اکنون ۳ روز منتظر می‌مانند قبل از باز شدن یک Pull Request. جزئیات در پست مرتبط موجود است.

بحث در جامعه: زمان‌بندی یا امضا؟

گفتمان عمومی در Hacker News به دو گروه تقسیم شد: حامیان مکانیزم‌های مبتنی بر زمان (دورهٔ خنک‌سازی) و طرفداران راه‌حل‌هایی مانند امضای بسته توسط نویسنده. نکات برجسته شامل موارد زیر است:

  • اعتراض به انتخاب زمان ۷۲ ساعت: برخی می‌گویند بازه برای نگهدارندگانی که در سفر یا مرخصی هستند کافی نیست و پیشنهادهایی تا ۳۰ روز مطرح شد؛ مخالفان اما هشدار دادند هر افزایش زمانی باید مسیر بازگشتی در موارد اضطراری داشته باشد.
  • نمونهٔ تسلط بر دامنهٔ ایمیل منقضی‌شده: نشان می‌دهد حملاتی وجود دارند که صرفاً با دورهٔ خنک‌سازی قابل دفع نیستند؛ مالکیت مجدد دامنهٔ ایمیل می‌تواند انتشار را مستقیماً در اختیار مهاجم قرار دهد.
  • خواستار امضای بسته توسط نویسنده: گروهی پیاده‌سازی امضای پایان‌تاپای بسته‌ها را پیشنهاد می‌دهند؛ اما چالش اصلی این است که امضا زمانی معتبر خواهد بود که خود فرایند ساخت و زیرساخت تولید امن باشد.
نمایی از صفحه تغییرات امنیتی GitHub و npm

تحلیل فنی: مزایا و محدودیت‌های دورهٔ خنک‌سازی

مکانیزم‌های مبتنی بر زمان چند مزیت عملی دارند: مستقل از روش‌های مبهم‌سازی عمل می‌کنند، زمان لازم برای اسکن‌های خودکار را فراهم می‌سازند و جلوی انتشار فوری بسته‌های مخرب را می‌گیرند. با این حال، آن‌ها به تنهایی در برابر حملاتی که از مالکیت ایمیل یا کنترل CI سوءاستفاده می‌کنند کارآمد نیستند. امضاهای بسته لایهٔ اعتماد دیگری اضافه می‌کنند، اما بدون تضمین امنیت فرایند ساخت و حساب‌های دارای دسترسی بالا، امضا هم قابل جعل خواهد بود.

پیشنهادهای عملی برای نگهدارندگان و سازمان‌ها

  1. احراز هویت دومرحله‌ای (2FA) را برای همهٔ حساب‌های کلیدی اجباری کنید و کدهای بازیابی را با احتیاط مدیریت نمایید.
  2. اعتبارنامه‌های بلندمدت را حذف یا کوتاه‌مدت کنید و به‌جای آن از توکن‌های زمان‌دار استفاده کنید.
  3. نشر معتبر و نشر مرحله‌ای در npm را فعال و فرایندهای بازبینی نشر را تعریف کنید.
  4. تعداد کاربران دارای دسترسی push را محدود و مسیرهای بازبینی برای انتشار را مشخص کنید.
  5. سیاست‌های اجرای گردش‌کار را پیکربندی کنید و چک‌اوت خودکار کد فورک‌های غیرقابل‌اعتماد را غیر فعال نمایید.
  6. لاگ‌های خروجی شبکه را پایش کنید (استفاده از فایروال شبکه Actions در پیش‌نمایش) تا ترافیک و مقصدهای غیرمعمول شناسایی شوند.
  7. یک استراتژی ترکیبی پیاده‌سازی کنید: امضاهای بسته، محدودسازی دسترسی، بازرسی دستی برای تغییرات حیاتی و اسکن خودکار کد و بسته.

منابع

هیچ راه‌حل واحدی حملات زنجیرهٔ تأمین را به‌طور کامل دفع نمی‌کند؛ ترکیب سیاست‌های مدیریتی، محدودسازی دسترسی، فرایندهای بازبینی و ابزارهای فنی دقیق‌تر بهترین شانس را برای کاهش ریسک فراهم می‌آورد.