امنیت ابزار WebMCP

جولیا پاگنوکو
Julia Pagnucco
الکساندرا کلپر
Alexandra Klepper

منتشر شده: ۹ ژوئن ۲۰۲۶

شما می‌توانید از پروتکل زمینه مدل وب (Web Model Context Protocol) یا به اختصار WebMCP برای ساخت و ارائه ابزارهای ساختاریافته به عامل‌های هوش مصنوعی که در مرورگر اجرا می‌شوند، از جمله عامل‌هایی که توسط افزونه‌ها پشتیبانی می‌شوند، استفاده کنید. یک عامل از یک مدل زبان بزرگ (LLM)، قوانین، حافظه و ابزارها برای اجرای اقدامات از طرف کاربر استفاده می‌کند.

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

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

برای رفع این نگرانی‌ها، ما راهنمایی‌های اولیه‌ای در مورد امنیت برای آن دسته از ابزارهایی که با WebMCP ساخته می‌شوند، ارائه داده‌ایم.

از نکات حاشیه‌نویسی استفاده کنید

چند نکته وجود دارد که باید هنگام ساخت ابزارهای خود اضافه کنید:

  • در صورت لزوم untrustedContentHint استفاده کنید . اگر ابزاری محتوای تولید شده توسط کاربر (UGC) یا داده‌های با منبع خارجی را برمی‌گرداند، افزودن untrustedContentHint به ابزار را در نظر بگیرید. این فیلد صراحتاً محتوای داده را به عنوان غیرقابل اعتماد برچسب‌گذاری می‌کند تا به محافظت از یکپارچگی سایت شما کمک کند و در عین حال به عامل سیگنالی ارائه دهد که این داده‌ها نیاز به بررسی دقیق‌تری دارند.
  • از readOnlyHint روی ابزارهایی که وضعیتشان تغییر نمی‌کند استفاده کنید. این به عامل اجازه می‌دهد تا در مورد زمان درخواست تأیید کاربر، تصمیمات بهتری بگیرد.

ابزارهای خود را با دقت در معرض دید قرار دهید

API مربوط به WebMCP document.modelContext.registerTool فقط عملکرد ابزار را در اختیار عامل‌ها قرار می‌دهد. به طور پیش‌فرض، سایر وب‌سایت‌ها یا iframeهای بین‌منبعی نمی‌توانند ابزارهای شما را مشاهده یا با آنها تعامل داشته باشند.

شما می‌توانید با استفاده از گزینه exposedTo در registerTool دسترسی به مجموعه‌ای از منابع خاص و امن را برای ابزار خود فراهم کنید. این کار، ابزار شما را هنگام جاسازی در سایت شما و هنگامی که سایت شما در آن منبع جاسازی می‌شود، در معرض آن منابع قرار می‌دهد.

// https://partner.org

document.modelContext.registerTool({
  name: 'my_shared_tool',
  description: 'Shared across origins',
  // ...
}, {
  exposedTo: ['https://trusted.com', 'https://example.com']
});

ابزارهای خود را فقط در اختیار منابعی قرار دهید که به آنها اعتماد دارید. این امر به ویژه زمانی اهمیت دارد که ابزارها داده‌های کاربر را مدیریت می‌کنند یا به هر نحوی بر کاربر تأثیر می‌گذارند.

  • یک ابزار فقط خواندنی، مانند getFavoriteProducts ، می‌تواند اطلاعات مربوط به یک کاربر را فاش کند. شما باید این ابزارها را فقط در اختیار وب‌سایت‌هایی قرار دهید که در غیر این صورت مستقیماً این داده‌ها را با آنها به اشتراک می‌گذارید.
  • ابزارهایی که دسترسی خواندن و نوشتن دارند، از طرف یک کاربر اقدام می‌کنند. این ابزارها فقط باید در معرض منابعی قرار گیرند که شما هنگام اقدام از طرف کاربر خود، به آنها اعتماد دارید. برای مثال، ممکن است بخواهید postComment در معرض trustedExample.com قرار دهید، اما نمی‌خواهید آن را در معرض evilExample.com قرار دهید.

بودجه شخصیت‌ها را تعیین کنید

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

  • ۵۰۰ کاراکتر برای هر توضیح ابزار
  • ۱۵۰ کاراکتر برای هر توضیح پارامتر
  • 30 کاراکتر برای هر نام ابزار و نام پارامتر
  • محدودیت ۱.۵ هزار کاراکتر برای هر خروجی ابزار

احتمالاً بین عوامل مختلف تفاوت‌هایی وجود دارد و شاید بخواهید بودجه شخصیت‌های خود را با بازخورد کاربران تنظیم کنید.

مراحل بعدی

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

چگونه قصد دارید WebMCP را در برنامه خود پیاده‌سازی کنید؟ آیا نگرانی‌های دیگری، امنیتی یا موارد دیگر دارید؟ اگر در نسخه آزمایشی WebMCP ثبت نام می‌کنید، می‌خواهیم از تجربیات شما بدانیم:

اگر در حال ساخت یک عامل هستید، توصیه می‌کنیم ملاحظات امنیتی عامل برای WebMCP را مطالعه کنید.