
विज़न-लैंग्वेज वेब एजेंट्स पर विरोधात्मक छवि हमले, विज़ुअल ग्राउंडिंग से ब्राउज़र निष्पादन तक
विज़ुअल ग्राउंडिंग से ब्राउज़र निष्पादन तक प्रतिकूल छवियाँ वेब एजेंटों का अपहरण करती हैं
Wanjing Han, Levi Taiji Li, Mu Zhang, Yue Jiang, Guanhong Tao — University of Utah
WebMirage, विज़न-ग्राउंडेड वेब एजेंटों के लिए एक रेड-टीमिंग फ्रेमवर्क है। यह हमलावर-नियंत्रित वेबपेज छवियों (जैसे, कोई उत्पाद थंबनेल या प्रोफ़ाइल फ़ोटो) पर स्थानीयकृत प्रतिकूल गड़बड़ियाँ (perturbations) तैयार करता है, जिससे एजेंट हमलावर के एलिमेंट का चयन करता है और संबंधित ब्राउज़र क्रिया निष्पादित करता है, विभिन्न वेबपेज रेंडरिंग्स में भी। यह हमला विज़ुअल ग्राउंडिंग से ब्राउज़र निष्पादन तक एंड-टू-एंड रूप में तैयार किया गया है, न कि केवल मॉडल इन्फ़रेंस पर।
दो घटक इसे संभव बनाते हैं:
यह फ्रेमवर्क 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 कन्वर्सेशन फ़ाइल होती है। कन्वर्सेशन फ़ाइल में इमेज-टोकन प्लेसहोल्डर लक्ष्य बैकबोन से मेल खाना चाहिए:
| Backbone | Placeholder |
|---|---|
| MiniCPM-o | (<image>./</image>)\n |
| LLaVA | <image>\n |
| Phi-3 | <|image_1|>\n |
एंड-टू-एंड मूल्यांकन के लिए लक्ष्य एजेंट फ्रेमवर्क आवश्यक हैं।
scripts/seeact/ देखें।scripts/visualwebarena/ देखें।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}
}