عنوان: یک جلسه دستیار کدنویسی هوش مصنوعی به یک حمله زنجیره تأمین تبدیل شد

جدیدترین مطالعه موردی Mandiant نشان می‌دهد که یک جلسه ربوده‌شده‌ی دستیار کدنویسی هوش مصنوعی به مهاجم اجازه داد تا یک بسته مسموم را به مخزن کد (codebase) یک شرکت نرم‌افزاری تزریق کند، ۱۰۰ مخزن داخلی را به خطر بیندازد، توکن‌های GitHub OAuth را سرقت کند و کد منبع و اسرار (secrets) را استخراج نماید. این نقض امنیتی ثابت می‌کند که توسعه‌دهندگان نمی‌توانند پیشنهادات تولیدشده توسط هوش مصنوعی را به عنوان کد امن در نظر بگیرند.

چه اتفاقی افتاد

در طول یک جلسه توسعه زنده، مهاجم کنترل دستیار هوش مصنوعی تعبیه شده در ویرایشگر تیم را به دست گرفت. دستیارِ هک‌شده سپس یک بسته مخرب را پیشنهاد داد. توسعه‌دهنده با اعتماد به این ابزار، پیشنهاد را بدون بررسی‌های اضافی پذیرفت.

بسته مسموم یک ابزار سرقت اطلاعات (infostealer) را نصب کرد که توکن‌های GitHub OAuth ذخیره‌شده در ایستگاه کاری را جمع‌آوری کرد. با استفاده از آن توکن‌ها، مهاجم کرم «Shai-Hulud» را مستقر کرد که خود را در ۱۰۰ مخزن داخلی کپی کرد. از آنجایی که کد مخرب از فضای نام (namespace) خود شرکت استفاده می‌کرد، سایر توسعه‌دهندگانی که بعداً همان بسته‌ها را دریافت کردند نیز آلوده شدند.

چرا این موضوع اهمیت دارد

دستیارهای کدنویسی هوش مصنوعی می‌توانند فایل‌های پروژه را بخوانند، دستورات نصب را تولید کنند، فایل‌های وابستگی (dependency manifests) را ویرایش کنند و حتی دستورات ترمینال را اجرا کنند. این وسعت دسترسی، آن‌ها را به بردارهای جذابی برای حملات زنجیره تأمین تبدیل می‌کند. وقتی یک توسعه‌دهنده به پیشنهاد هوش مصنوعی بیش از توصیه یک غریبه اعتماد می‌کند، کار مهاجم آسان‌تر می‌شود: دستیار می‌تواند به‌طور بی‌صدا کدی مخرب را که ظاهری مشروع دارد، وارد کند.

حملات زنجیره تأمین به مهاجم اجازه می‌دهند تا به‌صورت جانبی (laterally) در مخزن کد یک سازمان حرکت کند، اعتبارنامه‌ها را سرقت کند و دارایی‌های اختصاصی را استخراج نماید؛ همگی بدون اینکه قربانی تا زمانی که آسیب وارد شده، متوجه شود.

نحوه وقوع حمله

  1. ربودن جلسه (Session hijack) – مهاجم کنترل یک جلسه در حال انجامِ دستیار هوش مصنوعی را به دست گرفت.
  2. پیشنهاد مسموم – دستیارِ هک‌شده مجبور شد یک بسته مخرب را پیشنهاد دهد.
  3. پذیرش توسط توسعه‌دهنده – توسعه‌دهنده با باور به پیشنهاد هوش مصنوعی، بسته را اضافه کرد و دستور نصب تولیدشده را اجرا نمود.
  4. اجرای بار مخرب (Payload) – بسته یک ابزار سرقت اطلاعات نصب کرد که توکن‌های محلی GitHub OAuth و سایر اسرار را خواند.
  5. انتشار کرم – مهاجم با استفاده از توکن‌های سرقت‌شده، کرم Shai-Hulud را مستقر کرد که در ۱۰۰ مخزن داخلی پخش شد.
  6. استخراج داده‌ها (Exfiltration) – کد منبع، کتابخانه‌های داخلی و کلیدهای مخفی به زیرساخت مهاجم منتقل شدند.

توسعه‌دهندگان اکنون چه کاری می‌توانند انجام دهند

با هر پیشنهاد هوش مصنوعی مانند کد غیرقابل اعتماد برخورد کنید. همان مراحل تأییدی را اعمال کنید که برای هر وابستگی شخص ثالث (third-party dependency) استفاده می‌کنید.

  • اعتبارسنجی بسته

    • مستندات رسمی و تاریخچه نسخه‌ها را بررسی کنید.
    • هویت و اعتبار ناشر را تأیید کنید.
    • مخزن منبع و کامیت‌های اخیر را بازبینی کنید.
    • درخت کامل وابستگی‌ها را برای لینک‌های غیرمنتظره بررسی کنید.
    • هرگونه اسکریپت نصب را برای دستورات پنهان موشکافی کنید.
  • مقاوم‌سازی مدیریت اعتبارنامه‌ها

    • کمترین سطح دسترسی ممکن را به هر توکن اختصاص دهید.
    • توکن‌های کوتاه‌مدت را به توکن‌های طولانی‌مدت ترجیح دهید.
    • اسرار محیط عملیاتی (production) را در ماشین‌های توسعه محلی نگه ندارید.
    • دسترسی افزونه‌های ویرایشگر به اعتبارنامه‌هایی که به آن‌ها نیاز ندارند را محدود کنید.
  • پاسخ به یک نقض امنیتی مشکوک

    • محیط آسیب‌دیده را فوراً ایزوله کنید؛ حذف node_modules یا دایرکتوری‌های مشابه کافی نیست.
    • تمام اعتبارنامه‌های GitHub، npm، PyPI و ابری را تغییر دهید (Rotate).
    • فعالیت مخزن را برای کامیت‌های غیرمنتظره یا ادغام‌های Pull-request بازرسی کنید.
    • لاگ‌های CI/CD و اسکریپت‌های Git-hook را برای رفتارهای غیرعادی بررسی کنید.

نگاه به آینده

دستیارهای هوش مصنوعی همچنان باعث افزایش بهره‌وری بسیاری از توسعه‌دهندگان خواهند بود، اما قدرت آن‌ها با هزینه اعتماد همراه است. سازمان‌ها باید کدهای تولیدشده توسط هوش مصنوعی را همانند هر کتابخانه خارجی، در خط لوله‌های بررسی امنیتی موجود قرار دهند. بررسی‌های خودکار سیاست‌ها (policy checks)، خروجی‌های امضا شده‌ی دستیار هوش مصنوعی و محیط‌های ایزوله (sandboxing) در زمان اجرا می‌توانند خطر نقض‌های بی‌صدا را کاهش دهند.

مورد Mandiant روشن می‌کند که وقتی یک دستیار هوش مصنوعی هک می‌شود، مهاجم یک خط مستقیم به زنجیره تأمین نرم‌افزار پیدا می‌کند. برخورد با پیشنهادات هوش مصنوعی به عنوان بخشی از مدل تهدید (threat model) — و نه یک مجوز رایگان — برای ایمن نگه داشتن مخازن کد ضروری خواهد بود.

نکته کلیدی: یک پیشنهاد تولیدشده توسط هوش مصنوعی، بیشتر از هر کد شخص ثالث دیگری قابل اعتماد نیست. آن را به‌طور دقیق تأیید، محدود و نظارت کنید، در غیر این صورت با خطر تبدیل یک دستیار مفید به مجرایی برای یک نقض گسترده در زنجیره تأمین روبرو خواهید شد.