آسیب‌پذیری‌های LLM ۱۰۱

اکثر نقص‌های امنیتی LLM هوشمندانه نیستند. آن‌ها از دو واقعیت خسته‌کننده درباره نحوه کارکرد مدل‌ها نشأت می‌گیرند. وقتی این‌ها را درک کنید، لیست ترسناک حملات بدیهی می‌شود.

واقعیت ۱: مدل تفاوتی بین دستورالعمل‌های شما و متن کاربر نمی‌بیند. آن یک جریان داده را می‌بیند. مدل نمی‌تواند به طور قابل اعتماد تشخیص دهد که به کدام بخش باید اعتماد کند.

واقعیت ۲: ابزارها بازی را تغییر می‌دهند. وقتی به یک مدل دسترسی به ایمیل، جستجو یا پایگاه‌های داده می‌دهید، مکان‌های جدیدی برای ورود متن‌های غیرقابل اعتماد اضافه می‌کنید. همچنین مدلی را که فقط می‌تواند صحبت کند، به مدلی تبدیل می‌کنید که می‌تواند عمل کند.

سعی نکنید با مدل وارد بحث و جدل شوید. شروع کنید به تغییر آنچه مدل اجازه انجام آن را دارد.

آسیب‌پذیری‌های کلیدی:

  • تزریق مستقیم (Direct Injection): کاربر عبارت "ignore previous instructions" را تایپ می‌کند تا قوانین شما را دور بزند. پرامپت سیستم (System Prompt) شما یک مرز امنیتی نیست.
  • جیل‌بریک‌ها (Jailbreaks): این‌ها به جای اپلیکیشن شما، آموزش‌های ایمنی را هدف قرار می‌دهند. مهاجمان از نقش‌آفرینی یا داستان‌پردازی برای دور زدن فیلترها استفاده می‌کنند.
  • نشت پرامپت سیستم (System Prompt Leakage): مهاجمان مدل را فریب می‌دهند تا دستورالعمل‌های خودش را چاپ کند. هرگز کلیدهای API یا اسرار را در یک پرامپت قرار ندهید.
  • تزریق غیرمستقیم (Indirect Injection): خطر واقعی. دستورالعمل‌های مخرب در ایمیل‌ها، فایل‌های PDF یا صفحات وب پنهان شده‌اند. مدل آن‌ها را به عنوان دستور اجرا می‌کند.
  • مسموم‌سازی RAG (RAG Poisoning): مهاجمان داده‌های مخرب را به پایگاه دانش شما اضافه می‌کنند. مدل این محتوا را بازیابی کرده و دستورات پنهان را اجرا می‌کند.
  • حملات چندوجهی (Multimodal Attacks): دستورالعمل‌ها درون تصاویر یا فایل‌های صوتی پنهان شده‌اند. فیلترهای متنی نمی‌توانند آن‌ها را ببینند.
  • سوءاستفاده از ابزار (Tool Abuse): یک تزریق موفق منجر به اقدامات واقعی مانند ارسال ایمیل یا اجرای کد می‌شود. این همان مشکل «نماینده گیج» (confused deputy) است.
  • سه‌گانه مرگبار (The Lethal Trifecta): خطرناک‌ترین حالت. یک عامل (agent) به داده‌های خصوصی دسترسی دارد، محتوای غیرقابل اعتماد را می‌بیند و راهی برای ارتباط با دنیای خارج دارد.
  • مسموم‌سازی حافظه (Memory Poisoning): مهاجمان دستورالعمل‌های مخرب را در حافظه بلندمدت مدل می‌نویسند تا حملات را در جلسات آینده فعال کنند.
  • انتشار چندعاملی (Multi-Agent Spread): خروجی یک عامل، دستورالعمل عامل دیگر است. یک حمله می‌تواند در کل سیستم شما حرکت کند.
  • مسموم‌سازی MCP (MCP Poisoning): توضیحات ابزار مخرب می‌تواند مدل را فریب دهد تا اعتبارنامه‌ها (credentials) را تحویل دهد.

راه حل، مدل بهتر نیست؛ بلکه معماری بهتر است.

  • از اصل حداقل امتیاز (least privilege) استفاده کنید.
  • برای اقدامات حساس، یک انسان را در چرخه (human in the loop) قرار دهید.
  • هرگز اجازه ندهید یک مسیر، همزمان حاوی داده‌های خصوصی، ورودی‌های غیرقابل اعتماد و یک مسیر خروجی باشد.

عامل‌های خود را طوری بسازید که انگار از قبل نفوذ شده‌اند. آنچه را که می‌توانند انجام دهند محدود کنید، نه فقط آنچه را که می‌توانند بگویند.

Source: https://dev.to/weboko/llm-vulnerabilities-101-3pcj

Optional learning community: https://t.me/GyaanSetuAi