حمله ابهام وابستگی که به آن «حمله جایگزینی زنجیره تأمین» هم گفته می شود، هنگامی رخ میدهد که یک اسکریپت نصب نرمافزار فریب داده میشود تا به جای فایل اصلی که در یک مخزن داخلی قرار دارد، کدهای مخرب را از یک مخزن عمومی استخراج و نصب کند.
علت موفقیت این حملات آن است که بسیاری از ابزارهای نصب بسته (پکیج) وقتی با دو نسخه متفاوت از یک فایل مواجه شوند، فایلی که دارای شماره نسخه جدیدتر است را انتخاب میکنند. اگر مهاجمی بتواند نام فایل داخلی را شناسایی کند خواهد توانست با انتشار فایلی با نسخه جدیدتر در یک مخزن عمومی، نصب کننده بسته را فریب داده تا فایل مخرب را به جای فایل اصلی نصب نماید.
نام بستههای داخلی در مخازن عمومی (مثل GitHub) معمولاً در قالب فایلهای package.json یا سایر فایلهای کد منبع قرار دارد. محققان در گزارش های خود نشان داده اند که چگونه میتوان از این روش برای تزریق کد استفاده نمود. محققی که موفق به انجام این کار شد، جایزه شکار باگ را از شرکتهای اپل، شاپیفای، مایکروسافت، پیپال و چند شرکت دیگر دریافت کرده است.
راهکار مقابله با حملات ابهام وابستگی
شرکت مایکروسافت در مطلبی به بررسی مخاطرات حملات زنجیره تأمین نرمافزار برای سازمانهایی پرداخته که وابستگیهای نرمافزاری را از مخازنی همچون npm، RubyGems و PIP استخراج میکنند. این شرکت، سه روش را برای مقابله با این حملات پیشنهاد کرده که شامل موارد زیر هستند:
- همیشه فقط از فیدهای خصوصی برای استخراج بستهها استفاده کنید. همه بستههای عمومی وابسته را به مخزن خصوصیتان تزریق کرده تا مطمئن شوید کنترل آنها در اختیار شما است. البته انجام این کار نیازمند بهروزرسانی دستی این بستهها میباشد.
- محدودهها (Scope) را کنترل نمایید. اگر ابزار مدیریت بستههای شما از قابلیت کنترل محدوده پشتیبانی میکند (مثل npm که چنین قابلیتی دارد) میتوانید مانع از بازیابی بستههای داخلی از مخازن عمومی شوید.
- بررسیها لازم را در سمت کلاینت انجام دهید. در صورت فعال بودن قابلیت بررسی جامعیت در ابزار مدیریت بستهها اگر تغییری در یک فایل وابسته تشخیص داده شود، این فایل مورد پذیرش قرار نمیگیرد.
حملات ابهام یا جایگزینی وابستگی سعی میکنند از مخازن منبع باز و عمومی بر ضد سازمانهایی استفاده کنند که خود آنها نرمافزارهای مورد استفادهشان را طراحی میکنند. بررسی کامل و نظارت بر روی روشهای ساخت نرمافزار، انتخاب یک ابزار مدیریت بسته درست و استفاده از فیدهای قابل اعتماد و تحت نظارت (مانند Azure Artifacts) میتواند از بروز چنین مشکلاتی جلوگیری کند.
منبع: secureteam