سرورهای پروتکل بافت مدل (Model Context Protocol یا MCP) به دستیاران کدنویسی مبتنی بر هوش مصنوعی اجازه میدهند تا با ابزارهای مختلف تعامل داشته باشند. این موضوع باعث میشود که این سرورها اغلب به اعتبارنامههای (Credentials) حساس کاربر دسترسی داشته باشند. با این حال، یک آسیبپذیری ساختاری در مدیریت وابستگیهای این سرورها شناسایی شده است.
تحقیقات نشان میدهد که حتی اگر یک سرور MCP برای اجرای یک نسخه مشخص تنظیم شده باشد، ممکن است با مجموعههای متفاوتی از وابستگیها (Dependencies) اجرا شود. در یک بررسی عملی، یک سرور MCP در طول پنج هفته، با ۱۵ مجموعه متفاوت از وابستگیها اجرا شد، در حالی که تنظیمات آن دستنخورده باقی مانده بود. از میان ۶۹ بسته (Package) این سرور، ۲۳ بسته تغییر نسخه دادند که شامل کتابخانههای حساس مانند رمزنگاری (Cryptography) و JSON Web Token (JWT) میشد.
ریسک ناشی از تغییر وابستگیها (Dependency Drift)
مشکل اصلی در نحوه مدیریت وابستگیها توسط ابزارهایی مانند uvx نهفته است. این لانچر میتواند بستههای پایتون را دانلود و اجرا کند. اگر یک سرور از فایلهای قفل (Lock files) که دارای هش (Hash) هستند استفاده نکند، در هر بار بازسازی محیط (Environment)، وابستگیهای زیرمجموعه را مستقیماً از مخازن عمومی مانند PyPI دریافت میکند. در واقع، قفل کردن نسخه یک بسته، لزوماً به معنای قفل بودن تمام بستههایی که آن بسته به آنها وابسته است، نیست.
از آنجایی که این سرورها اغلب به سیستمهای مدیریتی حساس مانند فایروال (Firewall)، SIEM و مدیریت سنسورها متصل هستند، هرگونه کد مخرب که در یکی از وابستگیها تزریق شود، با همان سطح دسترسی بالا اجرا خواهد شد. این موضوع میتواند منجر به حملات زنجیره تأمین (Supply Chain Attacks) در اکوسیستم هوش مصنوعی شود.
راهکارهای مقابله
برای جلوگیری از این وضعیت، استفاده از روش «انجماد» (Freezing) توصیه میشود که شامل موارد زیر است:
- قفل کردن نسخه بر اساس یک Commit مشخص.
- استفاده از فایلهای Lock با تاییدیه هش (Hash-pinned).
- غیرفعال کردن بررسیهای خودکار بهروزرسانی.
با این حال، کد منجمد شده با گذشت زمان قدیمی میشود. بنابراین، مدیریت منظم و بررسی امنیتی وابستگیها برای جلوگیری از آسیبپذیریهای جدید، امری ضروری است.