امنیت کدنویسی هوش مصنوعی: تزریق دستور (Prompt Injection) در فایل‌های پروژه شما پنهان شده است

دستیار کدنویسی هوش مصنوعی شما تمام فایل‌های مخزن (repository) شما را می‌خواند. این دستیار فایل README، فایل‌های تنظیمات (config) و قوانین شما را مطالعه می‌کند و از این فایل‌ها برای تصمیم‌گیری در مورد نحوه نوشتن کد استفاده می‌کند.

یک تهدید امنیتی جدید دقیقاً از همین رفتار سوءاستفاده می‌کند. محققان آسیب‌پذیری‌ای را در ۲۸ ابزار مختلف کدنویسی هوش مصنوعی کشف کرده‌اند. این حمله یک هک پیچیده نیست؛ بلکه یک فایل متنی ساده در مخزن شماست.

نحوه عملکرد حمله:

شما یک پروژه متن‌باز (open-source) را کلون می‌کنید. پروژه عادی به نظر می‌رسد. آن را در ویرایشگر هوش مصنوعی خود باز می‌کنید و درخواست یک قابلیت جدید می‌دهید. شما کاراکترهای مخفی یونیکد (Unicode) را در فایل‌های تنظیمات نمی‌بینید. این کاراکترها دستورالعمل‌ها را از دید شما پنهان می‌کنند اما به هوش مصنوعی دستور می‌دهند کار دیگری انجام دهد.

دستور مخفی به هوش مصنوعی می‌گوید که اعتبارنامه‌های (credentials) AWS شما را به یک سرور خارجی ارسال کند. هوش مصنوعی تصور می‌کند که این یک دستور مشروع در پروژه است و دستور را اجرا می‌کند. در نتیجه، اطلاعات حساس شما لو می‌رود.

چرا متوقف کردن این حمله دشوار است:

  • کاراکترهای مخفی: شما متن استاندارد را می‌بینید، اما هوش مصنوعی دستورات مخرب را از طریق کاراکترهای نامرئی یونیکد مشاهده می‌کند.
  • هر فایلی یک نقطه ورود است: یک فایل README یا یک کامنت در یک کتابخانه می‌تواند حاوی محموله (payload) مخرب باشد.
  • دسترسی‌های بالا: عوامل هوش مصنوعی (AI agents) اغلب با سطح دسترسی کاربر شما اجرا می‌شوند. آن‌ها می‌توانند کلیدهای SSH و توکن‌های API شما را بخوانند.
  • فراخوانی ابزارها (Tool calls): هوش مصنوعی از فراخوانی ابزارها برای اجرای دستورات استفاده می‌کند. این حمله این فراخوانی‌ها را هدف قرار می‌دهد تا آموزش‌های امنیتی را دور بزند.

چگونه از گردش کار خود دفاع کنید:

  • پاکسازی محتوای فایل‌ها: قبل از اینکه هوش مصنوعی فایل‌ها را بخواند، کاراکترهای مخفی و الگوهای رایج تزریق (injection) را حذف کنید.
  • استفاده از محیط‌های ایزوله (sandboxes): عوامل هوش مصنوعی را در کانتینرهایی اجرا کنید که به شبکه دسترسی ندارند و سیستم فایل آن‌ها فقط‌خواندنی (read-only) است.
  • تعیین سیاست‌های سخت‌گیرانه: یک لیست سفید (whitelist) از دستورات مجاز ایجاد کنید. برای هر دستوری که داده‌ها را جابه‌جا می‌کند یا فایل‌ها را حذف می‌کند، تایید انسانی را الزامی کنید.

می‌توانید قبل از شروع جلسات کدنویسی، یک اسکن سریع انجام دهید. فایل‌های خود را برای یافتن عبارات مشکوک مانند "ignore all previous" یا "curl" و "exfil" بررسی کنید.

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

شما چگونه ریسک‌های تزریق دستور (prompt injection) را در گردش کار هوش مصنوعی خود مدیریت می‌کنید؟

منبع: https://dev.to/tyson_cung/ai-coding-security-prompt-injection-is-hiding-in-your-project-files-4be9