敵対的画像が視覚的グラウンディングからブラウザ実行までWebエージェントをハイジャックする
Wanjing Han, Levi Taiji Li, Mu Zhang, Yue Jiang, Guanhong Tao — ユタ大学
WebMirageは、視覚的グラウンディングに基づくWebエージェント向けのレッドチーミングフレームワークです。攻撃者が制御するWebページ画像(例:商品サムネイルやプロフィール写真)に対して局所的な敵対的摂動を生成し、さまざまなWebページのレンダリングにおいて、エージェントに攻撃者の要素を選択させ、対応するブラウザアクションを実行させます。この攻撃は、モデル推論単体ではなく、視覚的グラウンディングからブラウザ実行までをエンドツーエンドで定式化されています。
これを実現する2つのコンポーネント:
このフレームワークは、6つのVLMバックボーン(LLaVA、MiniCPM-o、Phi-3 Visionなど)にわたってSeeActおよびVisualWebArenaエージェントに対して評価されています。完全な評価については論文を参照してください。
.
├── src/ # 摂動最適化、バックボーンごとに1つのサブディレクトリ
│ ├── LLaVA/
│ ├── MiniCPM-o/
│ └── Phi-3-vision/
├── scripts/ # 学習/評価の起動スクリプト、バックボーンごとに1つのサブディレクトリ
├── dataflow/ # エージェントのデータフロー解析用CodeQLクエリパック (DataflowAnalysis.ql)
├── data/ # 再構成された学習/テスト用スクリーンショットと会話テンプレート
└── test/ # 迅速な検証用に事前生成されたクリーンおよび摂動サンプル
このフレームワークを使用する前に、ベースモデルを手動でセットアップする必要があります。
バックボーンはライブラリ要件が競合するため、それぞれに専用の環境とローカルにダウンロードした重みが必要です。
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_multi_slot/ # クリーンなスクリーンショット、ターゲットは複数のスロット位置
├── perturbed_fix_slot/ # 摂動済みスクリーンショット (ε=16/255)、ターゲットは固定スロット
├── perturbed_multi_slot/ # 摂動済みスクリーンショット (ε=16/255)、ターゲットは複数スロット
├── conv.json # 会話データ (システムプロンプト、ユーザークエリ、グラウンディングプロンプト)
└── verify.py # クリーンと摂動に対して推論を実行し、結果を比較
fix_slotケースは周辺要素の変動(ターゲット位置は固定、周囲の要素が変化)をテストし、multi_slotケースは周辺要素の変動と位置のずれを同時にテストします。
conda activate phi3vision
# 固定スロット位置
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
# スロット位置を変化させる
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/を参照してください。dataflow/DataflowAnalysis.qlは、エージェントの後処理コードにおいて、どのモデル出力トークンが実行されるブラウザアクションに流れ込むかを追跡するために使用されるCodeQLクエリです。dataflow/codeql-pack.ymlのパック定義を使用して、CodeQL CLIで対象エージェントのソースに対して実行します。
論文内のすべての公開Webサイト実験では、クライアント側アセット置換を使用しています。敵対的画像はエージェントのローカルブラウザビュー内でのみ置換され、サードパーティサイトにコンテンツがアップロードされたり変更されたりすることはありません。このフレームワークは防御的研究のみに使用してください。
@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を参照してください。