فاز 15 · درس 11

ایجنت‌های مرورگر و وظایف وب با افق زمانی طولانی

نوع
مفهومی
زمان
حدود 45 دقیقه
زبان‌ها
Python (stdlib, indirect prompt-injection attack surface model)
پیش‌نیاز
فاز 15 · 10 (حالت‌های دسترسی)، فاز 15 · 01 (ایجنت‌های با افق زمانی طولانی)
یک مرورگر وب مینیمال با قفل‌های امنیتی و دیاگرام تفکیک مرز خواندن و نوشتن داده‌ها
فهرست مطالب
  1. صورت مسئله
  2. مفهوم
  3. چشم‌انداز سال 2026، هر سیستم در یک پاراگراف
  4. مقایسه‌ی BrowseComp در برابر OSWorld و WebArena
  5. دسته‌بندی سطح حمله
  6. چرا این مشکل «به‌طور کامل قابل وصله نیست»؟
  7. رویکرد دفاعی قابل پیاده‌سازی در محیط عملیاتی
  8. پیاده‌سازی عملی
  9. تحویل به پروداکشن
  10. تمرین‌ها
  11. اصطلاحات کلیدی
  12. برای مطالعه‌ی بیشتر

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

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

ایجنت ChatGPT (ژوئیه 2025) دو ابزار Operator و deep research را در قالب یک ایجنت مرورگر/ترمینال ادغام کرد و با ثبت امتیاز 68.9%، رکورد جدیدی (SOTA) در بنچ‌مارک BrowseComp به جا گذاشت. OpenAI در 31 اوت 2025 سرویس مستقل Operator را متوقف کرد؛ یکپارچه‌سازی در لایه‌ی محصول. خرید استارتاپ Vercept توسط Anthropic نیز امتیاز Claude Sonnet را در بنچ‌مارک OSWorld از زیر 15% به 72.5% رساند. نسخه‌ی WebArena-Verified (محصول ServiceNow، در ICLR 2026) نرخ منفی کاذب (False-negative) حدوداً 11.3 درصدی WebArena اولیه را اصلاح کرد و زیرمجموعه‌ی دشوار (Hard subset) شامل 258 وظیفه را ارائه داد. این ارقام واقعی هستند، اما سطح حمله (Attack surface) هم کاملاً واقعی است: مدیر بخش آمادگی (Preparedness) در OpenAI علناً اعلام کرد که تزریق غیرمستقیم پرامپت (Indirect prompt injection) به ایجنت‌های مرورگر «باگی نیست که بتوان آن را به‌طور کامل وصله کرد». حملات مستندشده‌ی سال‌های 2025 تا 2026 شامل این موارد است: Tainted Memories (نوعی CSRF در Atlas)، HashJack (توسط Cato Networks) و ربایش‌های تک‌کلیکی در Perplexity Comet.

صورت مسئله

ایجنت مرورگر، یک ایجنت با افق زمانی طولانی (Long-horizon) است که محتوای غیرقابل‌اعتماد را می‌خواند و دست به اقدامات اثرگذار می‌زند. هر صفحه‌ای که ایجنت باز می‌کند، ورودی‌ای است که کاربر آن را ننوشته. هر فرمی در هر صفحه، یک کانال بالقوه‌ی ارسال دستور است. مجموعه‌داده‌های حملات در سال‌های 2025 تا 2026 نشان می‌دهد که این تهدید اصلاً فرضی نیست: حمله‌ی Tainted Memories به مهاجم امکان می‌دهد از طریق یک صفحه‌ی دست‌کاری‌شده، دستورالعمل‌های مخرب را به حافظه‌ی ایجنت متصل کند؛ HashJack دستورها را درون فرگمنت‌های URL صفحاتی که ایجنت می‌بیند پنهان می‌سازد؛ و ربایش‌های Perplexity Comet تنها با یک کلیک اجرا می‌شوند.

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

در این درس، این سطح حمله را معرفی می‌کنیم، چشم‌انداز بنچ‌مارک‌ها (BrowseComp، OSWorld و WebArena-Verified) را بررسی می‌کنیم و یک سناریوی حداقلی از تزریق غیرمستقیم پرامپت را مدل‌سازی می‌کنیم تا بتوانید در درس‌های 14 و 18 منطق راهکارهای دفاعی واقعی را تحلیل کنید.

مفهوم

چشم‌انداز سال 2026، هر سیستم در یک پاراگراف

ایجنت ChatGPT (از OpenAI). ژوئیه 2025 عرضه شد. Operator (مرور وب) و Deep Research (تحقیق چندساعته) را در یک ساختار یکپارچه کرد. نسخه‌ی مستقل Operator در 31 اوت 2025 تعطیل شد. این ابزار با امتیاز 68.9% در BrowseComp رکورددار (SOTA) است و روی OSWorld و WebArena-Verified نیز ارقام قدرتمندی ثبت کرده است.

مدل Claude Sonnet به‌همراه Vercept (از Anthropic). تمرکز خرید استارتاپ Vercept توسط Anthropic بر قابلیت‌های کار با کامپیوتر (Computer use) بود. این ادغام، امتیاز Claude Sonnet را در OSWorld از کمتر از 15% به 72.5% رساند. ابزار Claude Computer Use در قالب یک API ابزار ارائه می‌شود.

مدل Gemini 3 Pro به‌همراه Browser Use (از DeepMind). یکپارچه‌سازی با Browser Use امکانات کار با کامپیوتر را ارائه می‌دهد؛ در این میان چارچوب FSF v3 (آوریل 2026، درس 20) به‌طور خاص خودمختاری را در حوزه‌ی تحقیق و توسعه‌ی یادگیری ماشین ارزیابی می‌کند.

مجموعه‌ی WebArena-Verified (از ServiceNow، در ICLR 2026). مشکلی کاملاً مستند را حل می‌کند: WebArena اصلی حدود 11.3% نرخ منفی کاذب داشت (وظایفی که در واقعیت حل شده بودند اما شکست‌خورده ثبت می‌شدند). نسخه‌ی Verified با معیارهای موفقیت بازبینی‌شده توسط انسان دوباره نمره‌دهی کرده و یک زیرمجموعه‌ی دشوار شامل 258 وظیفه اضافه کرده است (مقاله‌ی ICLR 2026 در openreview.net/forum?id=94tlGxmqkN).

مقایسه‌ی BrowseComp در برابر OSWorld و WebArena

بنچ‌مارک آنچه می‌سنجد افق زمانی
BrowseComp یافتن حقایق مشخص در وب عمومی تحت فشار زمانی در حد چند دقیقه
OSWorld هدایت کامل یک دسکتاپ توسط ایجنت (ماوس، کیبورد، شل) ده‌ها دقیقه
WebArena-Verified انجام وظایف تراکنشی وب در سایت‌های شبیه‌سازی‌شده در حد چند دقیقه
زیرمجموعه‌ی دشوار وظایف WebArena-Verified با تغییر وضعیت در چندین صفحه ده‌ها دقیقه

این بنچ‌مارک‌ها ابعاد متفاوتی را می‌سنجند. نمره‌ی بالای BrowseComp نشان می‌دهد ایجنت حقایق را خوب پیدا می‌کند؛ اما به این معنا نیست که می‌تواند بلیط هواپیما رزرو کند. نمره‌ی OSWorld بیشتر شبیه این است که «آیا روی دسکتاپ من درست کار می‌کند؟». بنچ‌مارک WebArena-Verified هم به این معناست که «آیا می‌تواند یک جریان کاری را کامل به پایان برساند؟». برای هر تصمیمی در محیط عملیاتی (پروداکشن)، باید بنچ‌مارکی را ملاک بگیرید که با توزیع وظایف شما هم‌خوانی داشته باشد.

دسته‌بندی سطح حمله

  1. تزریق غیرمستقیم پرامپت (Indirect prompt injection). محتوای غیرقابل‌اعتماد صفحه شامل دستورالعمل است. ایجنت آن‌ها را می‌خواند و اجرا می‌کند. نمونه‌های عمومی: مقاله‌ی کای گرشاکه و همکاران در 2024، مقاله‌ی Tainted Memories در 2025 و حمله‌ی HashJack (توسط Cato Networks) در 2026.
  2. تزریق از طریق کوئری یا فرگمنت URL. بخش #fragment یا رشته‌ی کوئری (Query string) در یک آدرس خزش‌شده (Crawled URL) حاوی دستورهاست. این محتوا هرگز به‌صورت بصری رندر نمی‌شود، اما در کانتکست ایجنت قرار می‌گیرد.
  3. حملات متصل به حافظه (Memory-binding attacks). صفحه به ایجنت دستور می‌دهد تا داده‌ای را در حافظه‌ی پایدار بنویسد (درس 12 به وضعیت پایدار می‌پردازد). در نشست بعدی، حافظه بدون هیچ فعال‌ساز آشکاری، پی‌لود مخرب را اجرا می‌کند.
  4. حملات با الگوی CSRF در نشست‌های احرازهویت‌شده. کلاس حملات Tainted Memories: ایجنت در سایتی لاگین کرده است؛ صفحه‌ی مهاجم درخواست‌هایی با تغییر وضعیت ارسال می‌کند و ایجنت آن‌ها را با کوکی‌های کاربر اجرا می‌کند.
  5. ربایش تک‌کلیکی (One-click hijack). یک دکمه‌ی ظاهراً بی‌خطر، پی‌لودی را سوار می‌کند که ایجنت به دنبال آن می‌رود. کلاس حملات Comet.
  6. رخنه‌های پالیسی امنیت محتوا (CSP) در سطح میزبان ایجنت. لایه‌های رندر و ابزارها می‌توانند خودشان بردار حمله باشند؛ پشته‌ی مرورگر در دل یک ایجنت مرورگر بسیار وسیع است.

چرا این مشکل «به‌طور کامل قابل وصله نیست»؟

این حمله از نظر ساختاری هم‌ریخت با قابلیت‌های خود ایجنت است. ایجنت برای انجام کارش ناچار است محتوای غیرقابل‌اعتماد را بخواند. هر محتوایی که ایجنت می‌خواند ممکن است حاوی دستورالعمل باشد. هر دستورالعملی هم که ایجنت دنبال کند، ممکن است با خواسته‌ی واقعی کاربر هم‌راستا نباشد. راهکارهای دفاعی (مرزهای اعتماد، کلاسیفایرها، لیست سفید ابزارها، و حضور انسان در حلقه برای اقدامات اثرگذار) فقط هزینه‌ی حمله را بالا می‌برند و شعاع تخریب آن را کم می‌کنند؛ ولی این کلاس از حمله را به‌طور کامل مسدود نمی‌کنند.

این استدلال دقیقاً از همان الگوی قضیه‌ی لوب (Lob's theorem در درس 8) پیروی می‌کند: ایجنت نمی‌تواند اثبات کند که توکن بعدی حتماً امن است؛ فقط می‌تواند سیستمی بچیند که در آن توکن‌های ناامن راحت‌تر شناسایی شوند.

رویکرد دفاعی قابل پیاده‌سازی در محیط عملیاتی

  • مرز خواندن/نوشتن (Read / write boundary). خواندن هرگز نباید اثر جانبی داشته باشد. نوشتن (ارسال فرم، پست کردن محتوا، فراخوانی ابزارهای دارای اثرات جانبی) در صورتی که محتوای اولیه خارج از مرز اعتماد باشد، نیازمند تأیید مجدد انسان است.
  • لیست مجاز ابزارها به‌ازای هر وظیفه. ایجنت می‌تواند مرور وب انجام دهد؛ ولی اجازه‌ی تراکنش مالی ندارد، مگر اینکه آن ابزار صریحاً برای آن وظیفه فعال شده باشد. درس 13 به بحث بودجه‌ها می‌پردازد.
  • جداسازی نشست (Session isolation). نشست‌های ایجنت مرورگر فقط با دسترسی‌های دارای دامنه‌ی محدود اجرا می‌شوند. نه اعتبارسنجی محیط عملیاتی مجاز است و نه ایمیل شخصی. لاگ تمام درخواست‌های HTTP نیز باید برای ممیزی نگه‌داری شود.
  • پاک‌ساز محتوا (Content sanitizer). کدهای HTML دریافت‌شده پیش از الحاق به کانتکست مدل، از الگوهای مخرب شناخته‌شده پاک‌سازی می‌شوند. (این کار حملات ساده را مهار می‌کند، اما جلوی پی‌لودهای پیچیده را نمی‌گیرد.)
  • حضور انسان در حلقه (HITL) برای اقدامات اثرگذار. استفاده از الگوی پیشنهاد و سپس ثبت نهایی (Propose-then-commit) که در درس 15 بررسی می‌شود.
  • توکن‌های قناری در حافظه. اگر یکی از داده‌های ذخیره‌شده در حافظه فعال شود، کاربر متوجه آن خواهد شد (درس 14).
تزریق در ایجنت مرورگرخواندن نوعی کانال دستور است
BROWSER-AGENT INJECTIONA browser agent reads untrusted pages and takes consequential actions. Every page is an input the user did not write, so each line of content is a potential command aimed at the fuzzy read-versus-act boundary. Defenses bounce most attempts, but indirect prompt injection lives in that boundary and, as OpenAI put it, "is not a bug that can be fully patched."مرز خواندن ⇋ عملصفحهٔ غیرقابل‌اعتمادایجنتابزارها
یک ایجنت مرورگر صفحات غیرقابل‌اعتماد را می‌خواند و اقدامات پیامد‌داری انجام می‌دهد. هر صفحه ورودی‌ای است که کاربر آن را ننوشته است، بنابراین هر سطر از محتوا فرمانی بالقوه است که مرز مبهم میان خواندن و عمل کردن را هدف می‌گیرد. روش‌های دفاعی بیشتر تلاش‌ها را خنثی می‌کنند، اما تزریق غیرمستقیم پرامپت در همین مرز رخ می‌دهد و همان‌طور که OpenAI اشاره کرده، «باگی نیست که بتوان آن را به‌طور کامل وصله کرد».

پیاده‌سازی عملی

فایل code/main.py یک اجرای حداقلی از ایجنت مرورگر را روی سه صفحه‌ی ساختگی شبیه‌سازی می‌کند. یکی از صفحات سالم است، دیگری حاوی قطعه‌کدی با تزریق مستقیم پرامپت در متن آشکار است، و سومی به روش فرگمنت URL دست‌کاری شده (متن پنهان است اما در کانتکست ایجنت قرار می‌گیرد). این اسکریپت نشان می‌دهد که (الف) یک ایجنت ساده‌لوح چه می‌کند، (ب) مرز خواندن/نوشتن جلوی چه چیزی را می‌گیرد، (ج) پاک‌ساز چه مواردی را مهار می‌کند، و (د) چه مواردی از دست هر دو درمی‌روند.

تحویل به پروداکشن

مستند outputs/skill-browser-agent-trust-boundary.md دامنه‌ی استقرار یک ایجنت مرورگر فرضی را مشخص می‌کند: با کدام نواحی اعتماد تعامل دارد، مجاز به نوشتن چه داده‌هایی است، و پیش از اجرای اولین تسک، چه لایه‌های دفاعی باید مستقر شده باشند.

تمرین‌ها

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

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

  3. یک جریان کاری واقعی از ایجنت‌های مرورگر را که می‌شناسید انتخاب کنید (مثلاً «رزرو پرواز»). تمام عملیات خواندن و نوشتن را لیست کنید. مشخص کنید کدام نوشتن‌ها به حضور انسان در حلقه (HITL) نیاز دارند و چرا.

  4. مقاله‌ی WebArena-Verified در ICLR 2026 را بخوانید. دسته‌ای از وظایف را پیدا کنید که سیستم نمره‌دهی نسخه‌ی اولیه‌ی WebArena در آن‌ها نامعتبر بود و توضیح دهید مجموعه‌ی Verified چگونه این مشکل را برطرف می‌کند.

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

اصطلاحات کلیدی

اصطلاح در گفت‌وگوهای عامیانه معنای دقیق فنی
تزریق غیرمستقیم پرامپت «متن خراب در صفحه» محتوای غیرقابل‌اعتماد در صفحه‌ای که ایجنت می‌خواند، حاوی دستورالعمل‌هایی است که ایجنت آن‌ها را اجرا می‌کند
Tainted Memories «حمله به حافظه» ایجنت دستوری از سوی مهاجم را در حافظه‌ی پایدار می‌نویسد که در نشست بعدی اجرا می‌شود
HashJack «حمله با فرگمنت URL» پی‌لود در فرگمنت URL یا رشته‌ی کوئری پنهان شده و در کانتکست مدل هست اما در صفحه رندر بصری نمی‌شود
ربایش تک‌کلیکی «دکمه‌ی مخرب» یک المان بصری به‌ظاهر عادی، پی‌لود ادامه‌داری را با خود حمل می‌کند که ایجنت آن را اجرا خواهد کرد
BrowseComp «بنچ‌مارک جستجوی وب» یافتن حقایق مشخص در وب عمومی؛ با افق زمانی در مقیاس دقیقه
OSWorld «بنچ‌مارک دسکتاپ» کنترل کامل سیستم‌عامل؛ وظایف چندمرحله‌ای در رابط کاربری گرافیکی
WebArena-Verified «بنچ‌مارک اصلاح‌شده‌ی وظایف وب» نسخه‌ی بازنمره‌دهی‌شده‌ی WebArena توسط ServiceNow به‌همراه زیرمجموعه‌ی دشوار
مرز خواندن/نوشتن «فیلتر اثرات جانبی» عملیات خواندن هرگز عواقب اجرایی ندارد؛ نوشتن در صورت وجود محتوای خارج از مرز اعتماد، تأیید تازه می‌خواهد

برای مطالعه‌ی بیشتر

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

چرا تزریق غیرمستقیم پرامپت به ایجنت مرورگر به‌طور کامل قابل وصله نیست؟

چون این حمله با قابلیت پایه‌ای ایجنت هم‌ریخت است؛ مدل برای انجام وظیفه باید محتوای صفحات غیرقابل‌اعتماد را بخواند و از نظر معماری، هر توکنی که می‌خواند می‌تواند به‌صورت دستورالعمل تفسیر شود.

تفاوت بنچ‌مارک BrowseComp با WebArena-Verified چیست؟

بنچ‌مارک BrowseComp توانایی یافتن حقایق مشخص در وب عمومی را در مقیاس چند دقیقه می‌سنجد، اما WebArena-Verified اجرای موفق وظایف تراکنشی و تغییر وضعیت چندصفحه‌ای در سایت‌ها را ارزیابی می‌کند.

الگوی مرز خواندن و نوشتن (Read/Write Boundary) چه کمکی به امنیت ایجنت می‌کند؟

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

ما رو توی گوگل بیشتر ببین

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