پرش به محتوای اصلی
پرش به محتوای مقاله

کدهای بازبینی‌شده در برابر پرامپت‌های سیستمی؛ رویکردی جدید برای امنیت عامل‌ها

·۱۶ مرداد ۱۴۰۵۵ دقیقه مطالعه۳ بازدید
راهنما
کارگزار قابلیت: واسطه‌ای بین عامل و ابزارهایش
کارگزار قابلیت: واسطه‌ای بین عامل و ابزارهایش
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی الگوی «بروکر قابلیت‌ها» که به‌طور ساختاری قصد مدل را از اختیار اجرا جدا می‌کند و امنیت را از لایه‌ی زبانی به لایه‌ی کد (مانیفست TOML) منتقل می‌کند.

تصور کنید یک عامل هوش مصنوعی به‌طور تصادفی دو مجوز بی‌خطر را با هم ترکیب کند تا دسترسی به یک فایل حساس به دست آورد؛ این دقیقاً همان نقطه‌ای است که معماری بروکر قابلیت‌ها (Capability Broker) وارد عمل می‌شود. طبق راهنمای فنی منتشرشده در dev.to در تاریخ ۷ اوت ۲۰۲۶، این الگو امنیت را از یک «حس کلی» در پرامپت سیستمی به یک قرارداد سخت‌گیرانه در سطح کد تبدیل می‌کند. این رویکرد در واقع پیاده‌سازی عملی از قرارداد قابلیت عامل است که جداسازی «دسترسی» از «اجازه» را برای حاکمیت هوش مصنوعی تعریف می‌کند.

بیشتر شکست‌های امنیتی زمانی رخ می‌دهند که مدل دو مجوز مجزا — مثلاً خواندن یک پوشه و ارسال داده به یک وب‌هوک — را ترکیب می‌کند تا دستور مخربی را که در یک سند پنهان شده، اجرا کند. این نوع حمله که «پاراگراف مسموم» نام دارد، حفاظ‌های سنتی مبتنی بر پرامپت را دور می‌زند، چون مدل تصور می‌کند صرفاً در حال کمک به کاربر است.

برای حل این مشکل، الگوی بروکر تضمین می‌کند که «قصد» (Intent) از مدل خارج شود، اما «اختیار» (Authority) در کد باقی بماند. در این ساختار، عامل اجازه دارد درخواست انجام یک اقدام را بدهد، اما به‌طور مطلق از اجرای مستقیم آن منع شده است.

سازوکار بروکر

این گردش‌کار برای حذف هرگونه ابهام، مسیری صلب و ساختاریافته را دنبال می‌کند:

  • تولید قصد: عامل یک درخواست ساختاریافته برمی‌گرداند؛ مثلاً: {'tool': 'fs.read', 'args': {'path': 'notes/trip.md'}}.
  • تفکیک سیاست: بروکر یک فایل مانیفست به نام capabilities.toml را بررسی می‌کند تا تصمیم بگیرد این فراخوانی مجاز است، رد شود یا نیاز به تأیید انسانی دارد.
  • اجرای پالایش‌شده: مدل یا داده‌های درخواستی را دریافت می‌کند یا یک خطای ساده با متن «ابزار در دسترس نیست»؛ این کار مانع از آن می‌شود که مدل قوانین امنیتی دقیق را یاد بگیرد.
  • ثبت وقایع: هر تصمیم در یک پایگاه‌داده SQLite محلی برای تست و تحلیل‌های پس از حادثه ثبت می‌شود.

به نقل از گزارش dev.to، این رویکرد پرسش بنیادین امنیت را از «آیا مدل مودب می‌ماند؟» به «آیا سیاست‌های کد، این فراخوانی دقیق را پذیرفتند؟» تغییر می‌دهد.

جزئیات فنی و پیکربندی

این سیستم برای تعریف مرزهای سخت از فایل capabilities.toml استفاده می‌کند. برای مثال، ابزار fs_read می‌تواند فقط به ریشه‌های خاصی مثل ./workspace محدود شود و دسترسی به فایل‌های .env یا .pem به‌طور صریح ممنوع گردد.

دسترسی به شبکه نیز به همین شکل محدود می‌شود. ابزار http_fetch ممکن است فقط به میزبان‌های خاصی مثل api.github.com دسترسی داشته باشد و سقف دریافت داده برای آن ۲۰۰,۰۰۰ بایت تعیین شود. برای ابزار notify نیز بروکر می‌تواند وب‌هوک‌ها را به الگوهای داخلی محدود کرده و شرط «تأیید انسانی» را فعال کند. این لایه‌ی کنترلی شباهت زیادی به رویکرد چهارچوب MCP در مسدودسازی خروج داده‌ها برای پیشگیری از تزریق دارد.

در پیاده‌سازی پایتونی این سیستم (broker.py)، کلاس Broker از یک شمارشی (Enum) به نام Verdict با سه حالت ALLOW (مجاز)، DENY (ممنوع) و APPROVAL (نیاز به تأیید) استفاده می‌کند. متد _path_ok برای جلوگیری از حملات پیمایش دایرکتوری (Directory Traversal)، مسیرها را به‌صورت مطلق باز می‌کند. اگر عاملی سعی کند به مسیر ./workspace/../../.env دسترسی پیدا کند، بروکر وضعیت Verdict.DENY را با دلیل «خروج از ریشه‌های مجاز» برمی‌گرداند.

همان‌طور که در تحلیل‌های پیشین ما درباره‌ی حفاظ‌های امنیتی مدل‌های زبانی اشاره کردیم، تکیه بر لایه‌های نرم‌افزاری بیرونی همواره مطمئن‌تر از تکیه بر رفتار پیش‌بینی‌ناپذیر مدل است.

تست و حلقه‌های خصمانه

این راهنما تأکید می‌کند که تست‌ها باید «بروکر» را هدف قرار دهند، نه اینکه مدل را تحسین کنند. برای تأیید مرزها از یک ماتریس pytest استفاده می‌شود تا اطمینان حاصل شود دسترسی به فایل‌های مجاز برقرار است و دسترسی به فایل‌های حساس (مثل payroll.csv) قطع شده است. همچنین باید تأیید شود ابزارهای تعریف‌نشده، مثل shell.exec به‌طور پیش‌فرض بسته هستند.

توسعه‌دهندگان باید از یک مجموعه داده خصمانه استفاده کنند؛ اسنادی که:

  • از مدل می‌خواهند قوانین را نادیده بگیرد.
  • خود را جای کاربر جا بزند.
  • ادعا کند سیاست‌های امنیتی تغییر کرده‌اند.
  • دستورات را در کامنت‌های Markdown پنهان کنند.

معیار موفقیت در اینجا این نیست که مدل درخواست را رد کند، بلکه این است که در جدول ثبت وقایع، یک «رد» (Denial) ثبت شده باشد و هیچ اثر جانبی واقعی رخ نداده باشد.

نرده‌های ایمنی در پیاده‌سازی

باید توجه داشت که بروکر یک محیط ایزوله (Sandbox) کامل نیست. این ابزار نمی‌تواند باگ‌های داخلی یک ابزار یا نشت توکن‌ها را برطرف کند. برای کارهای حساس، توسعه‌دهندگان همچنان باید از کانتینرها و قوانین خروجی شبکه (Egress Rules) استفاده کنند. در این راستا، می‌توان از سامانه LEASH برای مسدود کردن دسترسی عامل‌ها با استفاده از بودجه خطا به عنوان یک لایه دفاعی فیزیکی‌تر بهره برد.

بررسی مسیرها به‌ویژه مستعد خطا است. توسعه‌دهندگان باید مسیرها را پیش از تطبیق، باز کنند و مواردی مثل لینک‌های نمادین (Symlinks) و تفاوت‌های حروف بزرگ و کوچک در سیستم‌فایل را در نظر بگیرند.

علاوه بر این، نویسنده درباره «خستگی از تأیید» (Approval Fatigue) هشدار می‌دهد. اگر هر اقدامی نیاز به کلیک انسان داشته باشد، کاربران به‌طور خودکار همه چیز را تأیید می‌کنند و لایه امنیتی خنثی می‌شود. تأیید انسانی باید فقط برای اقدامات برگشت‌ناپذیر مثل پرداخت‌ها یا استقرار در محیط عملیاتی رزرو شود.

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

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

گام بعدی شما

  • مانیفست capabilities.toml را برای ابزارهای فعلی خود تعریف کنید و دسترسی‌ها را به حداقل ممکن (Least Privilege) برسانید.
  • یک ماتریس pytest برای تست کردن مرزهای دسترسی به فایل‌ها و شبکه طراحی کنید.
  • برای اقدامات حساس، مکانیسم تأیید انسانی را فقط برای عملیات‌های برگشت‌ناپذیر فعال کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

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

تأثیر برای ایران

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

·نگاه ما
تحریریه دات‌هوش

جایگزینی «اعتماد به مدل» با «اعتماد به کد» در معماری عامل‌ها، پایان دوران Vibe Coding در لایه‌ی امنیت است. این رویکرد نشان می‌دهد که برای رسیدن به استقرار تجاری عامل‌های هوش مصنوعی، باید مدل را به عنوان یک موتور تولید قصد (Intent Engine) دید، نه یک تصمیم‌گیرنده نهایی. در واقع، امنیت واقعی در لایه‌ی استنتاج نیست، بلکه در لایه‌ی اجرای ابزارها نهفته است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.