کاهش آسیب‌پذیری‌های بیش از حد آژانس

شرح ریسک OWASP

عاملیت بیش از حد، آسیب‌پذیری‌ای است که زمانی رخ می‌دهد که به یک مدل زبان بزرگ (LLM) توانایی‌های غیرضروری یا بیش از حد مجاز برای تعامل با سایر سیستم‌ها اعطا می‌شود. هنگامی که یک LLM می‌تواند ابزارها، افزونه‌ها یا توابع خارجی ("عاملیت" آن) را فراخوانی کند، این آسیب‌پذیری به آن اجازه می‌دهد اقداماتی را انجام دهد که ناخواسته، غیرمجاز و بالقوه مضر هستند. یک مهاجم می‌تواند با استفاده از تزریق سریع یا سایر تکنیک‌های دستکاری، LLM را فریب دهد تا از عاملیت اعطا شده خود برای اهداف مخرب استفاده کند. مسئله اصلی فقط این نیست که LLM می‌تواند اقداماتی انجام دهد، بلکه این است که دامنه این اقدامات بسیار گسترده و ضعیف کنترل می‌شود.

چرا توسعه‌دهندگان اندروید باید اهمیت بدهند؟

اعطای اختیارات بیش از حد به یک LLM در برنامه اندروید شما می‌تواند منجر به حوادث امنیتی شدیدی شود:

  • دسترسی غیرمجاز به سیستم : یک مهاجم می‌تواند به LLM دستور دهد تا به فایل‌های موجود در دستگاه محلی مبتنی بر اندروید (به عنوان مثال، اسناد کاربر، داده‌های برنامه) یا منابع شبکه متصل دسترسی پیدا کند، آنها را تغییر دهد یا حذف کند، البته اگر مدل، مجوزها و مجوزهای اندروید مربوطه را داشته باشد.
  • استخراج داده‌ها : مدل LLM می‌تواند فریب داده شود تا داده‌های حساس را از پایگاه‌های داده محلی برنامه (مانند Room)، SharedPreferences یا APIهای داخلی بخواند و سپس آن اطلاعات را به یک منبع خارجی استخراج کند (برای مثال، ارسال آن با استفاده از یک فراخوانی API یا تابع ایمیل). این مدل همچنین می‌تواند اطلاعات حساسی را که در طول مرحله آموزش خود جذب کرده است، یا اطلاعات حساسی را که کاربر در prompt خود ارائه می‌دهد، نشت دهد.
  • به خطر افتادن سایر عملکردها/سیستم‌ها : اگر LLM بر سایر عملکردها (مثلاً ارسال پیامک، برقراری تماس، ارسال پست در رسانه‌های اجتماعی با استفاده از اهداف ضمنی، تغییر تنظیمات سیستم، انجام خریدهای درون برنامه‌ای) اختیار داشته باشد، یک مهاجم می‌تواند این عملکردها را برای ارسال هرزنامه، انتشار اطلاعات نادرست یا انجام تراکنش‌های غیرمجاز، که منجر به ضرر مالی مستقیم یا آسیب به کاربر می‌شود، ربوده و از کار بیندازد.
  • انکار سرویس : می‌توان به LLM دستور داد تا اقدامات فشرده‌سازی منابع را به طور مکرر در داخل برنامه یا علیه سرویس‌های backend انجام دهد، مانند اجرای کوئری‌های پیچیده پایگاه داده یا فراخوانی یک API در یک حلقه، که منجر به عدم پاسخگویی برنامه، تخلیه باتری، استفاده بیش از حد از داده یا حتی انکار سرویس برای سیستم‌های backend می‌شود.

راهکارهای مقابله با تهدیدات برای توسعه‌دهندگان برنامه‌های اندروید

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

جعبه ابزار هوش مصنوعی را محدود کنید (توابع جزئی در مقابل توابع باز):

  • حداقل ابزارها را فراهم کنید : مدیر برنامه‌ی کاربردی (LLM) فقط باید به ابزارهای خاصی (توابع، APIها، اهداف) که برای انجام کار خود در برنامه‌ی شما کاملاً به آنها نیاز دارد، دسترسی داشته باشد. اگر نیازی به مرور وب یا ارسال ایمیل ندارد، این قابلیت‌ها را در اختیار او قرار ندهید.
  • از ابزارهای ساده و تک منظوره استفاده کنید : بهتر است به LLM ابزاری بدهید که فقط بتواند یک کار خاص (مانند "خواندن نوع خاصی از تنظیمات کاربر") انجام دهد، نه یک ابزار قدرتمند و باز که می‌تواند هر کاری انجام دهد (مانند "اجرای هر دستور پوسته").

قدرت هوش مصنوعی را محدود کنید

  • مجوزهای دقیق اندروید : هنگامی که یک تابع فعال‌شده توسط LLM با منابع سیستم اندروید یا سایر برنامه‌ها تعامل دارد، تأیید کنید که برنامه شما فقط حداقل مجوزهای اندروید مورد نیاز را درخواست کرده و آنها را در اختیار دارد.
  • مجوزهای هر کاربر : وقتی LLM عملی را از طرف کاربر انجام می‌دهد، باید این کار را با مجوزها و زمینه خاص آن کاربر انجام دهد، نه با یک حساب کاربری گسترده‌تر و احتمالاً مدیریتی در سطح برنامه. این تأیید می‌کند که LLM نمی‌تواند کاری را انجام دهد که کاربر مجاز به انجام آن نیست.

یک نیروی انسانی را مسئول امور قرار دهید (رضایت کاربر برای اقدامات حیاتی)

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

اعتماد کنید اما تأیید کنید (اعتبارسنجی ورودی/خروجی و بک‌اندهای قوی)

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

خلاصه

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

منابع اضافی