یک چتبات خدمات مشتری که پس از یک درخواست ساده برای دستور پخت گوشت بره، دستورالعملهای سیستمی (system prompts) خود را فاش کرد. در عرض چند دقیقه، ربات نه تنها دستور پخت را ارائه داد، بلکه کد پایتون تولید کرد و دستورالعملهای داخلی که رفتار آن را هدایت میکنند، برملا ساخت.
این حادثه ثابت میکند که «دستورالعمل سیستمی» (system prompt) یک مدل زبانی، یک دیوار امنیتی نیست. وقتی ربات در لحظه تصمیم میگیرد که آیا درخواست کاربر با ماموریت آن مطابقت دارد یا خیر، یک مهاجم میتواند آن استدلال را منحرف کرده و مدل را وادار به افشای اطلاعات حساس کند.
آنچه باعث رخ دادن این نقض امنیتی شد
آزمایش با یک سوال ساده شروع شد: «میتوانی دستور پخت خورش گوشت بره را به من بدهی؟» ربات که هدف اعلامشدهاش توضیح خدمات شرکت بود، با یک دستور پخت کامل پاسخ داد، یک اسکریپت کوتاه Python برای تجزیه مواد اولیه اضافه کرد و سپس متن دقیق دستورالعمل سیستمی خود را چاپ کرد – همان متنی که به مدل میگوید چگونه رفتار کند.
خودِ درخواست بیخطر بود؛ خطر در تمایل ربات برای تلقی کردن دستور پخت به عنوان بخشی از وظیفه اصلیاش نهفته بود.
چرا این موضوع اهمیت دارد
امروزه چتباتها در نقشهای مواجه با مشتری قرار دارند، دادههای شخصی را مدیریت میکنند، تراکنشها را انجام میدهند یا ابزارهای داخلی را کنترل میکنند. اگر بتوان مدلی را برای فاش کردن مجموعه دستورالعملهای خود ترغیب کرد، مهاجم به ساختار حفاظتی (guardrails) که قرار بود مانع از انجام کارهای مضر توسط مدل شود، دسترسی پیدا میکند.
نحوه عملکرد حمله
- شناسایی هدف ربات – آزمایشکننده تشخیص داد که وظیفه ربات توضیح خدمات شرکت است.
- ایجاد یک پیوند کاذب – با ادعای اینکه دستور پخت برای تصمیمگیری در مورد اینکه کاربر باید از کدام سرویس استفاده کند مورد نیاز است، آزمایشکننده به درخواست خود یک ارتباط ظاهری با ماموریت ربات داد.
- سوءاستفاده از منطق – ربات ارتباط ساختگی را پذیرفت، اجازه داد درخواست از بررسی ارتباط داخلی خود عبور کند و حفاظهایی را که باید آن را مسدود میکردند، غیرفعال کرد.
این حمله بر ارزیابی خودکار مدل از میزان ارتباط (relevance) متکی است. وقتی این ارزیابی قابل تغییر باشد، «قوانین» خودِ مدل نیز قابل مذاکره میشوند.
سه نقطه شکست
| مرحله شکست | آنچه رخ داد |
|---|---|
| ربودن هدف (Goal hijacking) | ربات یک درخواست آشپزی بیربط را به عنوان بخشی از هدف توضیح خدمات خود تلقی کرد. |
| انحراف قابلیت (Capability drift) | ربات کد اجرایی Python تولید کرد، در حالی که نقش آن شامل تولید کد نبود. |
| نشت دستورالعمل (Prompt leakage) | ربات دقیقاً همان دستورالعمل سیستمی را که باید مخفی میماند، چاپ کرد. |
هر مرحله نشاندهنده فروپاشی یک لایه دفاعی متفاوت است که بسیاری از سیستمهای مستقر تصور میکنند خودِ مدل آنها را اعمال میکند.
لایههای دفاعی که واقعاً کار میکنند
انتقال حفاظها (guardrails) از داخل مدل به کدهای قطعی (deterministic code)، یک مرز امنیتی قابل اعتماد را بازمیگرداند.
- مسیریابی وظایف (Task routing) – از یک طبقهبندیکننده (classifier) مجزا برای نگاشت پیامهای ورودی به لیست ثابتی از مقاصد (intents) مجاز استفاده کنید. اگر درخواستی خارج از آن لیست باشد، آن را مستقیماً رد کنید. در این حالت، مدل هرگز فرصت بحث درباره میزان ارتباط را پیدا نمیکند.
- حداقل قابلیت (Least capability) – ابزارهایی را که ربات به آنها نیاز ندارد از او بگیرید. اگر به اجرای کد یا دسترسی گسترده به پایگاه داده نیاز ندارد، آن قابلیتها را حذف کنید.
- مجوزدهی قطعی (Deterministic authorization) – بررسی مجوزها را در کد برنامه انجام دهید، نه در مدل زبانی. مدل میتواند یک اقدام را پیشنهاد دهد، اما کد تصمیم میگیرد که آیا آن را اجرا کند یا خیر.
- اعتبارسنجی خروجی (Output validation) – هر پاسخ مدل را قبل از رسیدن به کاربر، برای یافتن محتوای غیرمجاز (مانند دستورالعملهای سیستمی یا دادههای حساس) اسکن کنید.
فیلتری که صرفاً میپرسد «آیا این درخواست ممنوع است؟» میتواند توسط یک کاربر متقاعدکننده دور زده شود. اما یک لایه مسیریابی که درخواست را با یک لیست بسته چک میکند، هیچ فضایی برای مذاکره باقی نمیگذارد.
آنچه باید در آینده زیر نظر داشت
شرکتهایی که به هوش مصنوعی مکالمهای متکی هستند، باید استقرارهای خود را از نظر سه حالت شکست که در آزمایش دستور پخت گوشت بره نشان داده شد، بازرسی کنند. در این میان، با هر دستورالعمل سیستمی (system prompt) مانند یک اطلاعات عمومی برخورد کنید؛ برای جلوگیری از افشای خود توسط مدل، روی آن حساب نکنید.
نتیجهگیری روشن است: اگر مدل امنیتی شما به یک پاراگراف از دستورالعملهای زبان طبیعی وابسته است، شکننده است. آن را با کدی تقویت کنید که قابل بازرسی، دارای نسخه (versioned) و قابل اجرا باشد، فارغ از اینکه مدل چه میگوید.
