BrowserGym extensions for DoomArena
Project description
BrowserGym+ AgentLab Threat Models
This repository contains tools and scripts for defining and testing threat models in the BrowserGym + AgentLab agentic framework. It allows researchers and developers to evaluate the security posture of LLM-powered web agents against various attack vectors such as security warning popups and malicious banner attacks.
Overview
The framework provides a structured way to:
- Simulate various attack scenarios against web agents
- Measure attack success rate (ASR), task success rate (TSR), and attack stealth rate
- Evaluate different LLM models' robustness against these attacks
- Generate comprehensive reports of attack effectiveness
This toolkit specifically focuses on testing agents in the BrowserGym setting.
Installation
- Run
pip install -e doomarena/browsergymfrom the root repo or dopip install doomarena-browsergymfor the latest release - Run your instance of webarena and set an environment variable
DOOMARENA_WEBARENA_BASE_URL="http://XXXX.com" - Run the tests
pytest doomarena/browsergym/tests(to exclude webarena use-m 'non local'flag)
Usage
You can run any of the following experiment scripts to test different attack scenarios:
run_banner_attack_webarena_reddit_notext.py- Test banner attacks without textrun_banner_with_alt_text_attack_webarena_reddit.py- Test banner attacks with alt textrun_popup_attack_webarena_reddit.py- Test security warning popup attacksrun_bgym_experiment.py- Run a general BrowserGym experiment with customizable parameters
For example:
python -m scripts.browsergym.scripts.run_bgym_experiment
Experiment Configuration Parameters
When running experiments, you can customize various parameters to configure how the tests are executed. Here's an explanation of the key parameters that can be set:
# Example usage:
run_bgym_experiment(
base_url="http://webarena2.eastus.cloudapp.azure.com",
bgym_experiments=bgym_experiments,
relaunch=False,
n_jobs=0, # set to 1 for headless, more for parallel headless with "ray"
max_steps=15, # lower for faster testing, use 15 for full task
skip_reset_and_massage=True,
)
-
base_url: The URL of the BrowserGym server where the experiments will run.
-
bgym_experiments: A list of experiment configurations defining which benchmarks, tasks, agents, and attacks to run.
-
relaunch: When set to
True, forces rerunning of experiments even if results already exist but were aborted. Default isFalseto avoid duplicate runs. -
n_jobs: Controls parallelization of experiment execution:
0: Runs with visible browser UI (non-headless mode); useful for demo/debugging1: Runs in headless mode (no UI) with a single process>1: Runs in parallel headless mode using Ray with the specified number of workers
-
max_steps: Maximum number of steps each agent is allowed to take per task. Lower values (5-10) are useful for quick testing, while higher values (30) are recommended for full task completion evaluation.
-
skip_reset_and_massage: When set to
True, skips environment reset to speed up debugging. This should always be set toFalsewhen making experiments.
Results
Experiment results are stored in the results/browsergym directory, organized by the datetime when they were created. Each results directory contains:
- Detailed information about benchmarks, attacks, and tasks
- CSV files with metrics including:
- Attack Success Rate (ASR)
- Task Success Rate (TSR)
- Attack Stealth Rate
- Input/output token usage
- Step counts
- Agent model information
You can drill down into individual tasks using standard BrowserGym tools to further analyze agent behavior during the attacks.
Attack Types
The framework currently supports several attack types:
- Security Warning Popup Attacks - Simulates malicious popups that attempt to deceive agents
- Banner Attacks - Tests agents against misleading banner elements
- SVG Attacks - Evaluates agent behavior with potentially malicious SVG elements
Project Structure
├── README.md
├── __init__.py
├── attack_gateway.py
├── attack_scripts.py
├── attacked_browser_env_args.py
├── bgym_requirements.txt
├── init_scripts.py
├── scripts
│ ├── __init__.py
│ ├── bgym_analysis.py
│ ├── run_banner_attack_webarena_reddit_notext.py
│ ├── run_banner_with_alt_text_attack_webarena_reddit.py
│ ├── run_bgym_experiment.py
│ ├── run_parallel_bgym_experiment.py
│ ├── run_popup_attack_webarena_reddit.py
│ ├── sweep_bgym.py
│ └── test_task.py
└── webarena_subsets.py
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file doomarena_browsergym-0.0.2.tar.gz.
File metadata
- Download URL: doomarena_browsergym-0.0.2.tar.gz
- Upload date:
- Size: 43.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b944569e7deb7282d1106ab9985f2b651fa7a4b38dc8035d615d2cf6ba8a9905
|
|
| MD5 |
cdcb5efc9ffd952cd5496f87e38afef2
|
|
| BLAKE2b-256 |
763985b49ccf64add50170d50265407a6cec2810ae967f71f12be557963969d1
|
File details
Details for the file doomarena_browsergym-0.0.2-py3-none-any.whl.
File metadata
- Download URL: doomarena_browsergym-0.0.2-py3-none-any.whl
- Upload date:
- Size: 46.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
180af6282f3ae9f7d14b3f79d95bbafe71c751349b1bc9d7d52f5da96f2c4c35
|
|
| MD5 |
033e9cf7650d9f6ecb05de9fed089d26
|
|
| BLAKE2b-256 |
18127b6cd4153c26e63a921f6c6406d4a00e3e3fd94863c9e4029d3e6f027b02
|