ارزیابی امنیت اپلیکیشن LLM

ارزیابی امنیت برای اپلیکیشن‌های مبتنی بر LLM شامل ریسک‌های prompt engineering و آسیب‌پذیری‌های یکپارچه‌سازی

درباره این سرویس

ارزیابی امنیت اپلیکیشن LLM ما، اپلیکیشنی را می‌آزماید که یک مدل زبانی بزرگ را در خود جای داده است؛ نه مدل را به‌تنهایی، بلکه کل زنجیره‌ی گرد آن: پرامپت‌ها، بستر و داده‌ی بازیابی‌شده در RAG، ابزارهایی که مدل می‌تواند فراخوانی کند، شیوه‌ای که به خروجی مدل در مراحل بعد اعتماد می‌شود، و مرزهای میان کاربران. یک LLM سطح حمله‌ی تازه‌ای روی امنیت معمول اپلیکیشن می‌افزاید، پس هر دو را تست می‌کنیم. مبنای کار، فهرست OWASP Top 10 for LLM Applications و راهنمای OWASP AI Testing Guide است و از MITRE ATLAS و چارچوب مدیریت ریسک هوش مصنوعی NIST بهره می‌گیریم. هر یافته با یک نمونه‌ی تکرارپذیر اثبات می‌شود، در کنار اثر واقعی‌اش با CVSS رتبه می‌گیرد و با یک رفع مشخص نوشته می‌شود.

چه چیزی شامل می‌شود

تست تزریق پرامپت مستقیم و jailbreak در برابر نرده‌های محافظِ اپلیکیشن

تزریق پرامپت غیرمستقیم از راه محتوای بازیابی‌شده، اسناد و منابع RAG

مدیریت ناامن خروجی: خروجی مدل که بدون کدگذاری به HTML، SQL، یک shell یا سامانه‌ی دیگر می‌رسد

افشای اطلاعات حساس: داده‌ی آموزش، بستر سامانه، secretها و داده‌ی کاربران دیگر

نشت پرامپت سامانه و دستورالعمل‌ها

اختیار بیش از حد: ابزارها، افزونه‌ها و اقداماتی که مدل می‌تواند بیش از نیاز راه بیندازد

ضعف‌های بردار و embedding: بازیابی اسناد غیرمجاز و مسموم‌سازی داده‌ی RAG

احراز هویت، مجوزدهی و جداسازی میان کاربرانِ مدل

مصرف بی‌حدومرز: هزینه و منع سرویس از راه پرامپت‌های بی‌محدودیت

بازبینی زنجیره‌ی تأمین و ارائه‌دهنده: مدل، افزونه‌ها و مسیری که پرامپت و خروجی می‌پیمایند

چگونه کار می‌کند

1
کشف معماری
نگاشت می‌کنیم که LLM چگونه به اپلیکیشن سیم‌کشی شده است: ساختار پرامپت، منابع بازیابی و RAG، ابزارها یا افزونه‌هایی که مدل می‌تواند فراخوانی کند، ارائه‌دهنده‌ی مدل، و مرزهای اعتماد میان کاربران. همین نشان می‌دهد دستورهای تزریق‌شده از کجا می‌توانند وارد شوند و به چه چیزی برسند.
2
تزریق پرامپت و jailbreak
تزریق مستقیم را می‌آزماییم (ورودی کاربری که دستور سامانه را دور می‌زند) و تزریق غیرمستقیم را، که در آن بار حمله سوار بر یک سند، یک صفحه‌ی وب یا یک منبع RAG وارد می‌شود که مدل بعداً آن را می‌خواند. پرسش این است که وقتی دستور و محتوا با هم اختلاف دارند، نرده‌های محافظ پابرجا می‌مانند یا نه.
3
مدیریت خروجی و اعتماد در مراحل بعد
خروجی مدل را تا جایی که اپلیکیشن از آن استفاده می‌کند دنبال می‌کنیم. اگر به‌عنوان HTML رندر شود، در یک کوئری قرار گیرد، به یک shell سپرده شود یا بدون پردازش به سرویس دیگری داده شود، مدل به یک بردار تزریق برای بقیه‌ی سامانه تبدیل می‌شود؛ نقص‌های کلاسیک وب با یک مبدأ تازه.
4
داده، دسترسی و اختیار
بررسی می‌کنیم مدل به چه چیزی و از طرف چه کسی دسترسی دارد: این‌که آیا پرامپت یک کاربر می‌تواند داده‌ی کاربر دیگر را بیرون بکشد، آیا بازیابی RAG مجوزها را رعایت می‌کند، آیا ابزارهایی که مدل می‌تواند فراخوانی کند به کمترین دسترسی محدود شده‌اند، و پرامپت‌ها و خروجی‌ها کجا ثبت یا به ارائه‌دهنده‌ی ثالث فرستاده می‌شوند.
5
اعتبارسنجی، گزارش‌دهی و تست مجدد
هر یافته با یک نمونه‌ی تکرارپذیر اثبات می‌شود، با CVSS و اثر واقعی رتبه می‌گیرد، به فهرست OWASP Top 10 for LLM Applications نگاشت می‌شود و با یک رفع مشخص نوشته می‌شود. پس از رفع، دوباره تست می‌کنیم تا مطمئن شویم رفع‌ها پابرجا هستند.
خروجی‌ها
  • خلاصه‌ی اجرایی با نمای کلی ریسک برای تصمیم‌گیرندگان
  • گزارش فنی تفصیلی، هر یافته با اثبات مفهوم تکرارپذیر
  • یافته‌های تزریق پرامپت و jailbreak، مستقیم و غیرمستقیم
  • یافته‌های مدیریت خروجی و اعتماد در مراحل بعد همراه با رفع‌های مشخص
  • یافته‌های دسترسی به داده، جداسازی کاربران و اختیار
  • نگاشت یافته‌ها به OWASP Top 10 for LLM Applications، همراه با CVSS و اثر کسب‌وکار
  • راهنمای رفع اولویت‌دار برای اپلیکیشن و نرده‌های محافظ آن
  • تست مجدد پس از رفع

چرا وادی ایمن حافظ

امنیت هوش مصنوعی و اپلیکیشن با هم
یک اپلیکیشن LLM در درزِ میان مدل و اپلیکیشن معمول شکست می‌خورد. هر دو را می‌آزماییم: پرامپت و نرده‌های محافظ، و نقص‌های تزریق، کنترل دسترسی و خروجی گرد آن‌ها؛ چون مهاجم به آن مرز پایبند نیست.
کل زنجیره، نه فقط پرامپت
زنجیره‌ی ورودی تا مدل تا خروجی تا مراحل بعد را می‌آزماییم: دستورها چگونه وارد می‌شوند، مدل چگونه قابل هدایت است، و خروجی آن پس از آن‌که اپلیکیشن به آن اعتماد کرد، مجاز به چه کاری است.
عمق تزریق غیرمستقیم و RAG
دشوارترین نقص‌های LLM در تزریق غیرمستقیم و بازیابی پنهان‌اند: باری در سندی که مدل بعداً می‌خواند، یا کوئری RAG که داده‌ای را برمی‌گرداند که کاربر هرگز نباید ببیند. این مسیرها را می‌آزماییم، نه فقط جعبه‌ی گفت‌وگو را.
نگاشت‌شده و قابل اجرا
هر یافته به فهرست OWASP Top 10 for LLM Applications گره می‌خورد، با یک نمونه‌ی تکرارپذیر اثبات می‌شود و با یک رفع مشخص برای اپلیکیشن و نرده‌های محافظ آن همراه است.

سوالات متداول

ارزیابی امنیت اپلیکیشن LLM چیست؟

اپلیکیشنی را که یک مدل زبانی بزرگ را در خود جای داده ارزیابی می‌کند و تزریق پرامپت (مستقیم و غیرمستقیم)، مدیریت ناامن خروجی، افشای اطلاعات حساس، اختیار بیش از حد، ضعف‌های RAG و embedding، جداسازی کاربران و مصرف بی‌حدومرز را می‌آزماید؛ بر پایه‌ی OWASP Top 10 for LLM Applications و راهنمای OWASP AI Testing Guide، و هر یافته اثبات و رتبه‌بندی می‌شود.

این چگونه با ارزیابی مدل LLM متفاوت است؟

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

تزریق پرامپت غیرمستقیم چیست؟

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

آیا RAG و پایگاه‌های بردار را تست می‌کنید؟

بله. می‌آزماییم که آیا بازیابی مجوزهای کاربر را رعایت می‌کند (تا یک کاربر نتواند اسناد کاربر دیگر را بازیابی کند)، آیا منبع RAG قابل مسموم‌سازی است تا مدل را هدایت کند، و آیا محتوای embed‌شده می‌تواند یک تزریق غیرمستقیم را حمل کند. بازیابی یکی از رایج‌ترین جاهایی است که یک اپلیکیشن LLM داده نشت می‌دهد.

اختیار بیش از حد چیست و چرا مهم است؟

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

داده‌ی ما و حریم خصوصی ارائه‌دهنده‌ی مدل را چگونه مدیریت می‌کنید؟

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

آیا تست برای یک اپلیکیشن تولید در حال کار ایمن است؟

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

شدت یافته‌ها چگونه تعیین می‌شود؟

هر یافته یک امتیاز CVSS برای یک مبنای مشترک می‌گیرد که با اثر واقعی تعدیل می‌شود: به چه داده یا اقدامی می‌رسد، چقدر آسان، و آیا از مرز یک کاربر یا مستأجر می‌گذرد، و به فهرست OWASP Top 10 for LLM Applications نگاشت می‌شود. به همین دلیل دو مسئله با امتیاز یکسان ممکن است اولویت متفاوت بگیرند.

ارزیابی چقدر طول می‌کشد و آیا تست مجدد انجام می‌شود؟

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

آماده شروع هستید؟
با تیم ما تماس بگیرید تا در مورد نیازهای ارزیابی امنیتی شما صحبت کنیم