یک آسیبپذیری از نوع Path Traversal (CWE-22) در نسخههای پیش از 2.0.6 ابزار Akamai CLI شناسایی شده است که به عامل تهدید (Threat Actor) اجازه میدهد فایلهای مخرب را در خارج از دایرکتوری پیشفرض نصب این ابزار بنویسد. این نقص امنیتی به دلیل عدم اعتبارسنجی مقادیر موجود در فیلد commands[].name در فایل مانیفست cli.json رخ میدهد.
تحلیل فنی مکانیسم حمله
ابزار Akamai CLI یک لانچر مبتنی بر زبان Go است که بستههای دستورات فرعی (Subcommand Packages) را دانلود و نصب میکند. در نسخههای آسیبپذیر، این ابزار نام دستورات را از فایل cli.json خوانده و بدون اعتبارسنجی کافی، از آنها برای ساخت مسیر ذخیرهسازی فایل اجرایی در متدهای downloadBin و installGolang استفاده میکند.
از آنجایی که تابع filepath.Join در زبان Go بخشهای .. (Path Traversal segments) را نرمالسازی میکند، اگر یک بسته مخرب دارای نامی مانند x/../../escaped باشد، فایل اجرایی نهایی در مسیری خارج از دایرکتوری نصب قرار میگیرد. این موضوع به مهاجم اجازه میدهد تا فایلهای اجرایی موجود در PATH کاربر را بازنویسی (Overwrite) کند.
سناریوی بهرهبرداری و زنجیره حمله
بهرهبرداری از این آسیبپذیری مستلزم یک حمله زنجیرهای است که شامل مراحل زیر است:
- توزیع بسته مخرب: مهاجم باید یک بسته Akamai CLI را منتشر کرده یا منبع توزیع آن را به دست آورد و مقادیر مخرب را در
cli.jsonقرار دهد. - مهندسی اجتماعی: کاربر باید متقاعد شود که این بسته مخرب را نصب یا بهروزرسانی کند (UI:P).
- جایگزینی فایل: پس از اجرای دستور نصب، فایل مخرب جایگزین یکی از ابزارهای اجرایی در مسیرهای سیستم (PATH) شده و حتی پس از حذف بسته (Uninstall)، اثرات آن باقی میماند.
ارزیابی ریسک و تأثیرات
این آسیبپذیری به عنوان یک ریسک متوسط و مشروط ارزیابی میشود، زیرا اجرای آن وابسته به اقدام کاربر است و یک حمله از راه دور (Remote) و خودکار علیه سرویسهای در حال اجرا نیست. با این حال، تأثیر آن بر یکپارچگی سیستم (Integrity) بالا است، زیرا میتواند منجر به اجرای کد (Code Execution) در محیطهای توسعه و خط لولههای CI/CD شود و در نهایت به حملات زنجیره تأمین (Supply Chain Attacks) منجر گردد.
راهکارهای مقابله و رفع آسیبپذیری
بهروزرسانی فوری: تنها راه حل قطعی، ارتقای Akamai CLI به نسخه 2.0.6 یا بالاتر است. در این نسخه، یک عبارت منظم (Regex) با الگوی ^[a-z0-9][a-z0-9_-]*$ برای اعتبارسنجی نام دستورات اضافه شده است تا هرگونه کاراکتر غیرمجاز یا تلاش برای خروج از دایرکتوری رد شود.
در صورتی که بهروزرسانی فوری امکانپذیر نباشد، اقدامات جبرانی زیر توصیه میشود:
- محدود کردن نصب بستهها تنها به منابع تأیید شده داخلی یا رسمی سازنده.
- بررسی دستی فایل
cli.jsonدر بستههای دریافتی و رد کردن هر بستهای که در نام دستوراتش از/یا..استفاده کرده باشد. - محدود کردن دسترسی Write کاربر اجراکننده به دایرکتوریهای موجود در
PATHو دایرکتوری نصب CLI. - حسابرسی (Audit) دایرکتوریهای
PATHبرای شناسایی فایلهای اجرایی غیرمنتظره با پیشوندakamai-*.