ایجنتهای مرورگر (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 هم به این معناست که «آیا میتواند یک جریان کاری را کامل به پایان برساند؟». برای هر تصمیمی در محیط عملیاتی (پروداکشن)، باید بنچمارکی را ملاک بگیرید که با توزیع وظایف شما همخوانی داشته باشد.
دستهبندی سطح حمله
- تزریق غیرمستقیم پرامپت (Indirect prompt injection). محتوای غیرقابلاعتماد صفحه شامل دستورالعمل است. ایجنت آنها را میخواند و اجرا میکند. نمونههای عمومی: مقالهی کای گرشاکه و همکاران در 2024، مقالهی Tainted Memories در 2025 و حملهی HashJack (توسط Cato Networks) در 2026.
- تزریق از طریق کوئری یا فرگمنت URL. بخش
#fragmentیا رشتهی کوئری (Query string) در یک آدرس خزششده (Crawled URL) حاوی دستورهاست. این محتوا هرگز بهصورت بصری رندر نمیشود، اما در کانتکست ایجنت قرار میگیرد. - حملات متصل به حافظه (Memory-binding attacks). صفحه به ایجنت دستور میدهد تا دادهای را در حافظهی پایدار بنویسد (درس 12 به وضعیت پایدار میپردازد). در نشست بعدی، حافظه بدون هیچ فعالساز آشکاری، پیلود مخرب را اجرا میکند.
- حملات با الگوی CSRF در نشستهای احرازهویتشده. کلاس حملات Tainted Memories: ایجنت در سایتی لاگین کرده است؛ صفحهی مهاجم درخواستهایی با تغییر وضعیت ارسال میکند و ایجنت آنها را با کوکیهای کاربر اجرا میکند.
- ربایش تککلیکی (One-click hijack). یک دکمهی ظاهراً بیخطر، پیلودی را سوار میکند که ایجنت به دنبال آن میرود. کلاس حملات Comet.
- رخنههای پالیسی امنیت محتوا (CSP) در سطح میزبان ایجنت. لایههای رندر و ابزارها میتوانند خودشان بردار حمله باشند؛ پشتهی مرورگر در دل یک ایجنت مرورگر بسیار وسیع است.
چرا این مشکل «بهطور کامل قابل وصله نیست»؟
این حمله از نظر ساختاری همریخت با قابلیتهای خود ایجنت است. ایجنت برای انجام کارش ناچار است محتوای غیرقابلاعتماد را بخواند. هر محتوایی که ایجنت میخواند ممکن است حاوی دستورالعمل باشد. هر دستورالعملی هم که ایجنت دنبال کند، ممکن است با خواستهی واقعی کاربر همراستا نباشد. راهکارهای دفاعی (مرزهای اعتماد، کلاسیفایرها، لیست سفید ابزارها، و حضور انسان در حلقه برای اقدامات اثرگذار) فقط هزینهی حمله را بالا میبرند و شعاع تخریب آن را کم میکنند؛ ولی این کلاس از حمله را بهطور کامل مسدود نمیکنند.
این استدلال دقیقاً از همان الگوی قضیهی لوب (Lob's theorem در درس 8) پیروی میکند: ایجنت نمیتواند اثبات کند که توکن بعدی حتماً امن است؛ فقط میتواند سیستمی بچیند که در آن توکنهای ناامن راحتتر شناسایی شوند.
رویکرد دفاعی قابل پیادهسازی در محیط عملیاتی
- مرز خواندن/نوشتن (Read / write boundary). خواندن هرگز نباید اثر جانبی داشته باشد. نوشتن (ارسال فرم، پست کردن محتوا، فراخوانی ابزارهای دارای اثرات جانبی) در صورتی که محتوای اولیه خارج از مرز اعتماد باشد، نیازمند تأیید مجدد انسان است.
- لیست مجاز ابزارها بهازای هر وظیفه. ایجنت میتواند مرور وب انجام دهد؛ ولی اجازهی تراکنش مالی ندارد، مگر اینکه آن ابزار صریحاً برای آن وظیفه فعال شده باشد. درس 13 به بحث بودجهها میپردازد.
- جداسازی نشست (Session isolation). نشستهای ایجنت مرورگر فقط با دسترسیهای دارای دامنهی محدود اجرا میشوند. نه اعتبارسنجی محیط عملیاتی مجاز است و نه ایمیل شخصی. لاگ تمام درخواستهای HTTP نیز باید برای ممیزی نگهداری شود.
- پاکساز محتوا (Content sanitizer). کدهای HTML دریافتشده پیش از الحاق به کانتکست مدل، از الگوهای مخرب شناختهشده پاکسازی میشوند. (این کار حملات ساده را مهار میکند، اما جلوی پیلودهای پیچیده را نمیگیرد.)
- حضور انسان در حلقه (HITL) برای اقدامات اثرگذار. استفاده از الگوی پیشنهاد و سپس ثبت نهایی (Propose-then-commit) که در درس 15 بررسی میشود.
- توکنهای قناری در حافظه. اگر یکی از دادههای ذخیرهشده در حافظه فعال شود، کاربر متوجه آن خواهد شد (درس 14).
پیادهسازی عملی
فایل code/main.py یک اجرای حداقلی از ایجنت مرورگر را روی سه صفحهی ساختگی شبیهسازی میکند. یکی از صفحات سالم است، دیگری حاوی قطعهکدی با تزریق مستقیم پرامپت در متن آشکار است، و سومی به روش فرگمنت URL دستکاری شده (متن پنهان است اما در کانتکست ایجنت قرار میگیرد). این اسکریپت نشان میدهد که (الف) یک ایجنت سادهلوح چه میکند، (ب) مرز خواندن/نوشتن جلوی چه چیزی را میگیرد، (ج) پاکساز چه مواردی را مهار میکند، و (د) چه مواردی از دست هر دو درمیروند.
تحویل به پروداکشن
مستند outputs/skill-browser-agent-trust-boundary.md دامنهی استقرار یک ایجنت مرورگر فرضی را مشخص میکند: با کدام نواحی اعتماد تعامل دارد، مجاز به نوشتن چه دادههایی است، و پیش از اجرای اولین تسک، چه لایههای دفاعی باید مستقر شده باشند.
تمرینها
-
اسکریپت
code/main.pyرا اجرا کنید. مشخص کنید پاکساز جلوی کدام حمله را میگیرد که مرز خواندن/نوشتن مانع آن نمیشود، و کدام حمله فقط با مرز خواندن/نوشتن مهار میشود. -
پاکساز را طوری توسعه دهید که یک دسته از حملات تزریق فرگمنت URL به سبک HashJack را شناسایی کند. سپس نرخ مثبت کاذب آن را روی URLهای سالمی که فرگمنتهای استاندارد دارند بسنجید.
-
یک جریان کاری واقعی از ایجنتهای مرورگر را که میشناسید انتخاب کنید (مثلاً «رزرو پرواز»). تمام عملیات خواندن و نوشتن را لیست کنید. مشخص کنید کدام نوشتنها به حضور انسان در حلقه (HITL) نیاز دارند و چرا.
-
مقالهی WebArena-Verified در ICLR 2026 را بخوانید. دستهای از وظایف را پیدا کنید که سیستم نمرهدهی نسخهی اولیهی WebArena در آنها نامعتبر بود و توضیح دهید مجموعهی Verified چگونه این مشکل را برطرف میکند.
-
یک توکن قناری در حافظه برای یک سناریوی ایجنت مرورگر طراحی کنید. چه چیزی ذخیره میکنید، در کجا قرار میدهید و چه رخدادی هشدار را فعال میکند؟
اصطلاحات کلیدی
| اصطلاح | در گفتوگوهای عامیانه | معنای دقیق فنی |
|---|---|---|
| تزریق غیرمستقیم پرامپت | «متن خراب در صفحه» | محتوای غیرقابلاعتماد در صفحهای که ایجنت میخواند، حاوی دستورالعملهایی است که ایجنت آنها را اجرا میکند |
| Tainted Memories | «حمله به حافظه» | ایجنت دستوری از سوی مهاجم را در حافظهی پایدار مینویسد که در نشست بعدی اجرا میشود |
| HashJack | «حمله با فرگمنت URL» | پیلود در فرگمنت URL یا رشتهی کوئری پنهان شده و در کانتکست مدل هست اما در صفحه رندر بصری نمیشود |
| ربایش تککلیکی | «دکمهی مخرب» | یک المان بصری بهظاهر عادی، پیلود ادامهداری را با خود حمل میکند که ایجنت آن را اجرا خواهد کرد |
| BrowseComp | «بنچمارک جستجوی وب» | یافتن حقایق مشخص در وب عمومی؛ با افق زمانی در مقیاس دقیقه |
| OSWorld | «بنچمارک دسکتاپ» | کنترل کامل سیستمعامل؛ وظایف چندمرحلهای در رابط کاربری گرافیکی |
| WebArena-Verified | «بنچمارک اصلاحشدهی وظایف وب» | نسخهی بازنمرهدهیشدهی WebArena توسط ServiceNow بههمراه زیرمجموعهی دشوار |
| مرز خواندن/نوشتن | «فیلتر اثرات جانبی» | عملیات خواندن هرگز عواقب اجرایی ندارد؛ نوشتن در صورت وجود محتوای خارج از مرز اعتماد، تأیید تازه میخواهد |
برای مطالعهی بیشتر
- OpenAI — Introducing ChatGPT agent — ادغام Operator و deep research؛ رکورد جدید در BrowseComp.
- OpenAI — Computer-Using Agent — پیشینهی Operator و معماریای که به ایجنت ChatGPT تبدیل شد.
- Zhou et al. — WebArena — بنچمارک اصلی و اولیه.
- WebArena-Verified (OpenReview) — مقالهی ICLR 2026 دربارهی زیرمجموعهی اصلاحشده.
- Anthropic — Measuring agent autonomy in practice — شامل بحثهای پیرامون سطح حملهی ایجنتهای کار با کامپیوتر.
