
هجمات الصور الخصومية على وكلاء الويب البصريين-اللغويين، من الإرساء البصري إلى التنفيذ في المتصفح
صور خصومية تختطف وكلاء الويب من التأريض البصري إلى التنفيذ في المتصفح
Wanjing Han, Levi Taiji Li, Mu Zhang, Yue Jiang, Guanhong Tao — جامعة يوتا
WebMirage هو إطار عمل للفريق الأحمر (red-teaming) لوكلاء الويب المعتمدين على الرؤية. يقوم بصياغة اضطرابات خصومية موضعية على صور صفحات الويب التي يتحكم بها المهاجم (مثل صورة مصغرة لمنتج أو صورة ملف شخصي) مما يجعل الوكيل يختار عنصر المهاجم وينفذ إجراء المتصفح المقابل، عبر عمليات عرض مختلفة لصفحة الويب. تُصاغ الهجمة من البداية إلى النهاية، من التأريض البصري إلى التنفيذ في المتصفح، بدلاً من أن تكون عند استدلال النموذج وحده.
مكوّنان يجعلان هذا العمل ممكنًا:
يُقيَّم الإطار مقابل وكلاء SeeAct وVisualWebArena عبر ستة نماذج أساسية من VLM (LLaVA وMiniCPM-o وPhi-3 Vision وغيرها). راجع الورقة البحثية للتقييم الكامل.
.
├── src/ # Perturbation optimization, one subdirectory per backbone
│ ├── LLaVA/
│ ├── MiniCPM-o/
│ └── Phi-3-vision/
├── scripts/ # Training / evaluation launch scripts, one subdirectory per backbone
├── dataflow/ # CodeQL query pack for agent dataflow analysis (DataflowAnalysis.ql)
├── data/ # Recomposed training / test screenshots and conversation templates
└── test/ # Pre-generated clean and perturbed samples for quick verification
يجب إعداد النماذج الأساسية يدويًا قبل استخدام هذا الإطار.
نظرًا لأن النماذج الأساسية لديها متطلبات مكتبات متعارضة، يحتاج كل منها إلى بيئته الخاصة وأوزان مُنزَّلة محليًا.
conda create -n minicpm)، وثبّت التبعيات.conda create -n llava).transformers المتوافق في بيئة مخصصة.Phi-3-vision-128k-instruct محليًا.يشغّل اختبار بسيط الاستدلال على لقطات شاشة نظيفة ومضطربة ويقارن اختيارات الوكيل جنبًا إلى جنب.
ملاحظة: يتطلب هذا الاختبار Phi-3 Vision (راجع المتطلبات الأساسية §3). الصور المضطربة المقدمة حُسِّنت لـ Phi-3؛ يمكن توليد بيانات اختبار للنماذج الأساسية الأخرى باستخدام نصوص التدريب في
scripts/.
توجد حالات الاختبار المُولَّدة مسبقًا في test/:
test/
├── clean_fix_slot/ # Clean screenshots, target in a fixed slot position
├── clean_multi_slot/ # Clean screenshots, target across multiple slot positions
├── perturbed_fix_slot/ # Perturbed screenshots (ε=16/255), target in a fixed slot
├── perturbed_multi_slot/ # Perturbed screenshots (ε=16/255), target across multiple slots
├── conv.json # Conversation data (system prompt, user query, grounding prompt)
└── verify.py # Runs inference on clean vs. perturbed and compares results
تختبر حالات fix_slot تنوّع الرفاق (موضع الهدف ثابت، والعناصر المحيطة متنوعة)؛ وتختبر حالات multi_slot تنوّع الرفاق والإزاحة الموضعية في آنٍ واحد.
conda activate phi3vision
# Fixed slot position
python test/verify.py \
--model-path /path/to/Phi-3-vision-128k-instruct \
--conv-path test/conv.json \
--clean-image test/clean_fix_slot/sample_0.png \
--perturbed-image test/perturbed_fix_slot/sample_0.png
# Varying slot positions
python test/verify.py \
--model-path /path/to/Phi-3-vision-128k-instruct \
--conv-path test/conv.json \
--clean-image test/clean_multi_slot/sample_0.png \
--perturbed-image test/perturbed_multi_slot/sample_0.png
يطبع النص جدول مقارنة يُظهر، لكل حالة اختبار، العنصر المختار تحت الإدخال النظيف مقابل المضطرب. على لقطات الشاشة النظيفة يجب أن يختار الوكيل المرشح الأفضل تطابقًا؛ وعلى لقطات الشاشة المضطربة يجب أن يختار باستمرار المرشح الذي يتحكم به المهاجم.
مع وجود بيئة Conda مخصصة لكل نموذج أساسي، يستخدم سير العمل أدناه LLaVA كمثال.
تشير النصوص إلى كود LLaVA الرسمي من دليل المنزل (~/):
cd ~
git clone https://github.com/haotian-liu/LLaVA.git
افتح scripts/LLaVA/train_with_mask.sh واضبط كل مسار (أوزان النموذج، بيانات التدريب، قالب المحادثة، القناع، دليل الإخراج) ليتوافق مع إعدادك المحلي.
bash scripts/LLaVA/train_with_mask.sh
توجد بيانات التدريب تحت data/<scenario>/، مع لقطات شاشة مُعاد تركيبها وملف محادثة train_samples.json. يجب أن يتطابق العنصر النائب لرمز الصورة في ملف المحادثة مع النموذج الأساسي المستهدف:
| النموذج الأساسي | العنصر النائب |
|---|---|
| MiniCPM-o | (<image>./</image>)\n |
| LLaVA | <image>\n |
| Phi-3 | <|image_1|>\n |
يتطلب التقييم من البداية إلى النهاية أطر عمل الوكيل المستهدفة.
scripts/seeact/.scripts/visualwebarena/ لنصوص التقييم بوضعي الملاحظة Accessibility Tree وSet-of-Mark.dataflow/DataflowAnalysis.ql هو استعلام CodeQL المستخدم لتتبع رموز إخراج النموذج التي تتدفق إلى إجراء المتصفح المنفَّذ في كود المعالجة اللاحقة للوكيل. شغّله مقابل مصدر الوكيل المستهدف باستخدام CodeQL CLI مع تعريف الحزمة في dataflow/codeql-pack.yml.
تستخدم جميع تجارب المواقع العامة في الورقة البحثية استبدال الأصول من جانب العميل: تُستبدل الصور الخصومية في عرض المتصفح المحلي للوكيل فقط، ولا يُرفع أي محتوى إلى أي موقع طرف ثالث أو يُعدَّل عليه. يُرجى استخدام هذا الإطار لأغراض البحث الدفاعي فقط.
@article{han2026webmirage,
title = {Adversarial Images Hijack Web Agents from Visual Grounding to Browser Execution},
author = {Han, Wanjing and Li, Levi Taiji and Zhang, Mu and Jiang, Yue and Tao, Guanhong},
journal = {arXiv preprint arXiv:XXXX.XXXXX},
year = {2026}
}
MIT. راجع LICENSE.