DepsGuard: سپری جلوی حملات زنجیرهٔ تأمین
خلاصهٔ کاملتر
DepsGuard یه ابزار خطفرمان رایگان و متنبازه (با لایسنس MIT) که شرکت امنیتی Arnica ساخته تا کانفیگ پکیجمنیجرت رو در برابر حملات زنجیرهٔ تأمین (supply chain) سفتتر کنه. به گفتهٔ سازندهها، حملات زنجیرهٔ تأمین دارن بیشتر میشن و الگوشون معمولاً یکیه: یه مهاجم حساب یه نگهدارندهٔ پکیج رو میدزده، یه نسخهٔ آلوده منتشر میکنه و هر npm install که قبل از کشف اجرا بشه اون نسخه رو میکشه پایین.
هستهٔ ایدهٔ DepsGuard یه مکانیزم به اسم min-release-age یا «حداقل سن انتشار» ـه. بهجای اینکه هر نسخهٔ تازه فوری نصب بشه، پکیجمنیجر طوری تنظیم میشه که نسخهای که هنوز مثلاً هفت روز عمومی نشده رو نکشه پایین. اینطوری یه پنجرهٔ قرنطینه درست میشه که تو اون مدت اسکنرها و گزارشهای جامعه فرصت دارن نسخهٔ بدخیم رو پیدا و حذف کنن. خیلی از پکیجمنیجرهای امروزی این جور دفاعها رو دارن، ولی همیشه پیشفرض روشن نیستن؛ کار DepsGuard هم همینه که چک کنه روشنن یا نه و کمکت کنه روشنشون کنی.
سازندهها برای نشوندادن فایده، به حملهٔ axios اشاره میکنن: تو ۳۱ مارس ۲۰۲۶ یه حساب نگهدارندهٔ آلودهشده نسخههای بدخیم axios رو منتشر کرد که حدود سه ساعت زنده بودن تا حذف بشن. به گفتهٔ نویسنده، اگه پکیجمنیجرت یه حداقل سن انتشار هفتروزه داشت، تو اون پنجره اصلاً اون نسخه رو دانلود نمیکرد. همین منطق برای حادثههای مشابه مثل ua-parser-js و node-ipc هم صدق میکنه که نسخهٔ آلودهشون تو همون چند ساعت تا چند روز اول حذف شد.
اما نویسنده صادقانه میگه این ابزار همهٔ مشکلات رو حل نمیکنه. DepsGuard فقط روی یه لایه تمرکز داره: عقبانداختن پذیرش نسخههای تازه و غیرفعالکردن اسکریپتهای نصب پرخطر. در برابر پکیجی که هفتهها بدون کشف بمونه (مثل ماجرای event-stream)، یا typosquatting، یا حملهای که اصلاً نسخهٔ جدید منتشر نمیکنه کاری از دستش برنمیاد. این ابزار مکمل ابزارهای SCA (مثل npm audit یا Snyk) ـه نه جایگزینشون؛ SCA باگهای شناختهشده تو وابستگیهای فعلیت رو پیدا میکنه، DepsGuard جلوی واردشدن نسخهٔ تازهآلوده رو از اول میگیره.
از نظر استفاده، اجراش یه رابط تعاملی متنی (TUI) باز میکنه که سیستمت رو اسکن میکنه و یه جدول از یافتهها نشون میده؛ فیکسها رو انتخاب میکنی، قبل از اعمال یه diff از تغییرات میبینی و قبل از نوشتن هر فایل یه پشتیبان زماندار گرفته میشه که هر وقت خواستی برگردونی. تنظیماتی که چک میکنه شامل عقبانداختن سن انتشار و یه گزینهٔ به اسم ignore-scripts (برای بلاککردن اسکریپتهای نصب بدخیم) و چند گزینهٔ سختگیرانهٔ pnpm مثل block-exotic-subdeps و strict-dep-builds ـه. از npm، pnpm، yarn، bun، uv، pip و poetry پشتیبانی میکنه و حتی برای Renovate و Dependabot هم تنظیمات تأخیر داره.
نویسنده چند توصیهٔ تکمیلی هم میده که فراتر از کانفیگ پکیجمنیجره: پینکردن GitHub Actions با commit SHA بهجای تگ (چون تگ رو میشه جابهجا کرد ولی SHA رو نه)، استفاده از دستورهای نصب با lockfile قفلشده تو CI، مرجنکردن خودکار PRهای Dependabot و Renovate بدون بررسی، و کمنگهداشتن تعداد وابستگیها؛ چون هر وابستگی یه جای بیشتر برای پنهانشدن مهاجمه.
نکات کلیدی:
- DepsGuard یه ابزار CLI رایگان و متنباز (MIT) از Arnica برای سفتکردن کانفیگ پکیجمنیجر در برابر حملات زنجیرهٔ تأمینه
- ایدهٔ اصلیش «حداقل سن انتشار» ـه: نسخهٔ تازه چند روز قرنطینه میشه تا قبل از نصب، کشف بشه
- از npm، pnpm، yarn، bun، uv، pip و poetry و همینطور Renovate و Dependabot پشتیبانی میکنه
- این ابزار جایگزین SCA نیست؛ مکملشه و فقط جلوی نسخههای تازهآلوده رو میگیره، نه حملات طولانیمدت یا typosquatting
- یه رابط تعاملی با پیشنمایش diff و پشتیبانگیری/بازگردانی داره




