هر وابستگی، یه حملهٔ زنجیرهٔ تأمین در راه
خلاصهٔ کاملتر
بن هویت تو این مقاله ادامهٔ بحث قبلیش (مقالهٔ «وب کوچک زیباست») رو میگیره: کمتر بودن dependencyها فقط برنامه رو کوچیکتر نمیکنه، امنترش هم میکنه. به گفتهٔ نویسنده کتابخونههای third-party میتونن compromise بشن و این اتفاق هم میافته — در مقیاس بزرگ با backdoor معروف XZ Utils، و تازگیتر با ماجرای Trivy و compromise شدن LiteLLM (که در واقع ریشهش همون Trivy بوده).
نکتهٔ جالبی که نویسنده روش دست میذاره اینه که Trivy حتی یه runtime dependency نیست، یه dev dependency هست؛ ولی compromise تو یه dev dependency هم میتونه credentialها رو بدزده و کنترل پروژه رو دست بگیره. یعنی این تصور که «این فقط ابزار توسعهست، خطری نداره» اشتباهه.
نویسنده اعتراف میکنه که عنوان مقاله دقیق نیست: مشکل هر dependencyای که اضافه میکنی نیست، هر dependencyای که آپدیت میکنی هست. وقتی اولش یه وابستگی رو ارزیابی کردی و hashش رو تو lockfile گذاشتی، احتمالاً بررسی لازم رو انجام دادی. ولی وقتی پروژهت از Dependabot استفاده میکنه، وابستگیها خودکار و تقریباً بدون بازبینی آپدیت میشن — و همینجاست که در باز میمونه.
به همین خاطر نویسنده توصیه میکنه Dependabot رو خاموش کنی. به تجربهٔ اون، آپدیتهای خودکار بیشتر از موندن روی نسخهٔ قدیمی (تا وقتی واقعاً لازم بشه) دردسر درست میکنن. جمعبندیش هم با یه ضربالمثل معروف Go هست: «یه کم کپی کردن بهتر از یه کم وابستگیه» — یعنی گاهی بهجای بستن یه کتابخونهٔ کامل، کپی کردن همون چند خطی که لازم داری انتخاب امنتریه.
نکات کلیدی:
- نویسنده میگه هر dependency اضافه یه سطح حملهٔ بالقوهٔ زنجیرهٔ تأمینه
- خطر اصلی موقع آپدیت خودکار وابستگیه، نه موقع نصب و بررسی اولیه
- یه dev dependency مثل Trivy هم میتونه credential بدزده و پروژه رو تصاحب کنه، با اینکه runtime نیست
- توصیهٔ نویسنده: Dependabot رو خاموش کن و تا واقعاً لازم نشده روی نسخهٔ قدیمی بمون
- اصل راهنما همون ضربالمثل Go هست: «یه کم کپی کردن بهتر از یه کم وابستگیه»




