دفاع لایهلایه در برابر حملات زنجیره تأمین نرمافزار
خلاصهٔ کاملتر
از سپتامبر به اینسو، چند حملهی مهم زنجیره تأمین (supply chain) از طریق رجیستری npm رخ داده: Shai-Hulud، Chalk/Debug، یکی با سوءاستفاده از توکنهای tea.xyz و اخیراً axios. AWS توی این مطلب بهترین روشها رو برای سمت مصرفکنندهی پکیج جمع کرده تا بشه دامنهی این تهدیدها رو محدود کرد.
حملههایی مثل Shai-Hulud از دو جبهه سوءاستفاده میکنن: حساب نگهدارندههای (maintainer) پکیج که با فیشینگ به خطر افتاده و نسخههای مخرب منتشر میکنن، و محیط مصرفکنندههایی که اون پکیجها رو دانلود و اجرا میکنن. وقتی Shai-Hulud توی محیط توسعه و pipelineهای CI/CD اجرا میشد، دنبال secretهایی مثل توکن npm، توکن GitHub و کلیدهای دسترسی IAM میگشت.
اولین لایهی دفاع، اعتبارنامههای موقت و حداقل دسترسیه. حذف اعتبارنامههای دائمی از محیط توسعه و pipeline، دامنهی افشا رو کم میکنه. مثلاً دستور جدید aws login اعتبارنامهی کوتاهمدت میگیره، و فدراسیون OIDC با GitHub Actions به هر job یه اعتبارنامهی موقت میده بدون اینکه توکن دائمی ذخیره بشه. این اعتبارنامهها خودکار منقضی میشن و پنجرهی سوءاستفاده رو میبندن.
لایهی بعدی دفاع در عمق (defense in depth) ـه: حتی اگه یه حساب لو بره، کنترلهای دیگه جلوی گسترش رو میگیرن. این شامل احراز هویت چندعاملی (MFA)، نقشهای IAM جدا برای کارهای حساس، و امضای آرتیفکت میشه. امضا یه پکیج یا image رو بهصورت رمزنگاریشده به هویتی که اون رو ساخته گره میزنه، پس یه اعتبارنامهی لورفتهی توسعهدهنده بهتنهایی نمیتونه یه آرتیفکت تأییدنشده رو وارد pipeline کنه.
مدیریت متمرکز وابستگیها هم کمک میکنه قبل از استفاده، پکیجها رو اعتبارسنجی و تأیید کنی. مثلاً با تنظیم یه لیست منابع بالادستی مجاز، میشه جلوی حملات typosquatting (پکیج مخرب با اسم شبیه پکیج معتبر) رو گرفت. برای npm هم قابلیت provenance attestation (موجود از npm 9.5) پکیج منتشرشده رو به مخزن منبع و workflow سازندهاش گره میزنه.
نکتهی کلیدی مقاله اینه که اسکنرهای سنتی آسیبپذیری فقط به دنبال CVEهای شناختهشده میگردن، ولی پکیجهای مخرب زنجیره تأمین مثل zero-day عمل میکنن: عمداً ساخته میشن و قبل از اینکه CVE بهشون اختصاص بگیره فعالانه سوءاستفاده میشن. تشخیص اینا به تحلیل رفتاری در مقیاس بزرگ و همکاری جامعه نیاز داره، نه فقط تطبیق امضای ایستا. یه تهدید مرتبط هم پکیج خوابیده (sleeper package) ـه که موقع انتشار بیخطر به نظر میرسه و بعد از یه تأخیر یا شرط خاص فعال میشه.
نکات کلیدی:
- موجی از حملات زنجیره تأمین npm (مثل Shai-Hulud) از حسابهای لورفتهی نگهدارندهها سوءاستفاده کردن.
- اعتبارنامههای موقت و حداقل دسترسی، ارزش توکنهای دزدیدهشده رو پایین میآره.
- امضای آرتیفکت تضمین میکنه آرتیفکت تأییدنشده حتی با اعتبارنامهی لورفته به production نرسه.
- اسکنرهای مبتنی بر CVE پکیجهای مخرب تازهمنتشرشده رو نمیگیرن؛ تحلیل رفتاری لازمه.




