در رویدادی که بار دیگر اهمیت نظارت بر زنجیره تأمین نرمافزار را برجسته کرد، تحلیلهای امنیتی نشان میدهد دو اکشن شخصثالث در پلتفرم GitHub Actions که پیشتر در جریان کمپین مخرب موسوم به «Mini Shai-Hulud» شناسایی و مسدود شده بودند، پس از فعالسازی مجدد توسط توسعهدهنده، همچنان به کدهای آلوده ارجاع میدهند.
واکاوی معماری حمله Mini Shai-Hulud
کمپین Mini Shai-Hulud یک نمونه بارز از حملات تزریق کد در محیطهای CI/CD است. مهاجمان در این سناریو، با نفوذ به مخازن اکشنهای عمومی، کدهای مخرب خود را در فایلهای اجرایی تعبیه میکنند. این کدها به محض اجرا در محیط کاربری (Runner)، اقدام به استخراج توکنهای احراز هویت، متغیرهای محیطی (Environment Variables) و سایر دادههای حساس میکنند. نکته نگرانکننده در این حادثه، تعامل توسعهدهندگان با این اکشنها پس از رفع محدودیتهای امنیتی اولیه است که نشاندهنده شکاف جدی در مدیریت چرخهی حیات نرمافزار (SDLC) در پروژههای متنباز است.
چالشهای امنیت در CI/CD و خطرات اعتماد کورکورانه
استفاده از اکشنهای عمومی در خط لوله (Pipeline) توسعهدهندگان، در صورتی که کنترل نسخه (Version Pinning) بهدرستی انجام نشود، میتواند به فاجعه منجر شود. بسیاری از کاربران از تگهای شناور مانند
v1
استفاده میکنند، در حالی که بهترین راهکار امنیتی، استفاده از هش کامل کامیت (Commit SHA) است تا از تغییرات غیرمجاز در کدهای مرجع جلوگیری شود. در مورد Mini Shai-Hulud، متأسفانه بهروزرسانیهای مخرب به گونهای طراحی شده بودند که در لایههای پنهان قرار میگرفتند و فرآیند بازنگری (Review) را دور میزدند.
مشخصات فنی و تحلیل ابزارها
- ماهیت حمله: Supply Chain Attack (نفوذ به زنجیره تأمین)
- هدف: استخراج اسرار (Secrets Extraction) از محیطهای CI/CD
- پلتفرم تحت تأثیر: GitHub Actions
- وضعیت آسیبپذیری: تداوم ارجاع به کدهای آلوده پس از فعالسازی مجدد
- راهکار پیشنهادی: استفاده از Security Hardening و Pinning به SHA
مسئولیتپذیری در اکوسیستم متنباز
اتفاق پیشآمده نشان داد که صرفِ غیرفعالسازی یا گزارش یک اکشن مخرب کافی نیست. فرآیند بازگرداندن یک اکشن به چرخه فعالیت، نیازمند بازرسی کامل و پاکسازی سوابق کدی (Git History) است. در این مورد خاص، توسعهدهنده بدون پاکسازی دقیق کد، اکشن را مجدداً منتشر کرد که منجر به فعال باقی ماندن پیلودهای مخرب شد. این ضعف در مدیریت پروژه، اعتماد توسعهدهندگان و امنیت نهایی زیرساختهای ابری را به خطر میاندازد.
نتیجهگیری و توصیههای امنیتی
تیمهای امنیتی و توسعهدهندگان DevOps باید پروتکلهای سختگیرانهای برای استفاده از اکشنهای ثالث اتخاذ کنند. به عنوان یک قاعدهی طلایی، همواره محتوای اکشنهای مورد استفاده را بازبینی کرده و از ارجاع به مخازن مشکوک خودداری کنید. همچنین، بهرهگیری از ابزارهای اسکن وابستگی (Dependency Scanning) که میتوانند کدهای مخرب را در جریان اجرای CI شناسایی کنند، در پاییز ۱۴۰۵ بیش از هر زمان دیگری حیاتی است.