Official code repository for our CVPR 2026 accepted paper "When Robots Obey the Patch: Universal Transferable Patch Attacks on Vision-Language-Action Models".

UPA-RFAS is a research code release for patch-based adversarial attacks against vision-language-action policies, with an OpenVLA / OpenVLA-OFT evaluation pipeline on LIBERO.
This repository contains:
GitHub renders GIF previews directly in the repository homepage. Click any preview below to open the corresponding MP4 file.
.
├── adversarial_patches/ # released patch checkpoints used for evaluation
├── figs/ # figures for the project page / README
├── openvla-oft/ # OpenVLA-OFT-based evaluation code
├── videos/ # demo videos shown in the README
├── white_patch/ # attack and patch optimization modules
├── trans.py # training entry for adversarial patch optimization
└── sbatch_train.sh # example training script
This codebase is built on top of roboticAttack and openvla-oft.
Please prepare the environment by following those upstream repositories first, especially:
openvla-oftdlimp dependency if your local setup requires itThe following patch checkpoints are included in this repository:
adversarial_patches/patch_sim_v1.ptadversarial_patches/patch_sim_v2.ptadversarial_patches/patch_phy.ptThey can be passed directly to --patch_path during evaluation.
trans.py is the main entry for adversarial patch optimization.
Example:
bash sbatch_train.sh
The provided script is a cleaned slurm-based public template. Adjust the dataset path, environment name, and cluster options to match your machine.
Training data is resolved from either:
--server /path/to/project_root and then ${server}/openvla-main/datasetOPENVLA_DATA_ROOTWe provide a concise OpenVLA-OFT evaluation script in openvla-oft/sbatch_test.sh.
Example:
cd openvla-oft
bash sbatch_test.sh
The script evaluates released adversarial patches on multiple LIBERO task suites with OpenVLA-OFT checkpoints from Hugging Face, and the default patch_path now points to files under adversarial_patches/.
For a single run, you can also call the evaluator directly:
cd openvla-oft
python experiments/robot/libero/run_libero_eval.py \
--pretrained_checkpoint moojink/openvla-7b-oft-finetuned-libero-spatial \
--task_suite_name libero_spatial \
--patch_path ../adversarial_patches/patch_sim_v1.pt
This repository builds upon:
We thank the original authors for open-sourcing their code and models.
If you find our work helpful, please consider citing:
@article{lu2025when,
title={When Robots Obey the Patch: Universal Transferable Patch Attacks on Vision-Language-Action Models},
author={Lu, Hui and Yu, Yi and Yang, Yiming and Yi, Chenyu and Zhang, Qixin and Shen, Bingquan and Kot, Alex C. and Jiang, Xudong},
journal={arXiv preprint arXiv:2511.21192},
year={2025}
}
Python
98.7%
Shell
1.3%
Official code repository for our CVPR 2026 accepted paper "When Robots Obey the Patch: Universal Transferable Patch Attacks on Vision-Language-Action Models".

UPA-RFAS is a research code release for patch-based adversarial attacks against vision-language-action policies, with an OpenVLA / OpenVLA-OFT evaluation pipeline on LIBERO.
This repository contains:
GitHub renders GIF previews directly in the repository homepage. Click any preview below to open the corresponding MP4 file.
.
├── adversarial_patches/ # released patch checkpoints used for evaluation
├── figs/ # figures for the project page / README
├── openvla-oft/ # OpenVLA-OFT-based evaluation code
├── videos/ # demo videos shown in the README
├── white_patch/ # attack and patch optimization modules
├── trans.py # training entry for adversarial patch optimization
└── sbatch_train.sh # example training script
This codebase is built on top of roboticAttack and openvla-oft.
Please prepare the environment by following those upstream repositories first, especially:
openvla-oftdlimp dependency if your local setup requires itThe following patch checkpoints are included in this repository:
adversarial_patches/patch_sim_v1.ptadversarial_patches/patch_sim_v2.ptadversarial_patches/patch_phy.ptThey can be passed directly to --patch_path during evaluation.
trans.py is the main entry for adversarial patch optimization.
Example:
bash sbatch_train.sh
The provided script is a cleaned slurm-based public template. Adjust the dataset path, environment name, and cluster options to match your machine.
Training data is resolved from either:
--server /path/to/project_root and then ${server}/openvla-main/datasetOPENVLA_DATA_ROOTWe provide a concise OpenVLA-OFT evaluation script in openvla-oft/sbatch_test.sh.
Example:
cd openvla-oft
bash sbatch_test.sh
The script evaluates released adversarial patches on multiple LIBERO task suites with OpenVLA-OFT checkpoints from Hugging Face, and the default patch_path now points to files under adversarial_patches/.
For a single run, you can also call the evaluator directly:
cd openvla-oft
python experiments/robot/libero/run_libero_eval.py \
--pretrained_checkpoint moojink/openvla-7b-oft-finetuned-libero-spatial \
--task_suite_name libero_spatial \
--patch_path ../adversarial_patches/patch_sim_v1.pt
This repository builds upon:
We thank the original authors for open-sourcing their code and models.
If you find our work helpful, please consider citing:
@article{lu2025when,
title={When Robots Obey the Patch: Universal Transferable Patch Attacks on Vision-Language-Action Models},
author={Lu, Hui and Yu, Yi and Yang, Yiming and Yi, Chenyu and Zhang, Qixin and Shen, Bingquan and Kot, Alex C. and Jiang, Xudong},
journal={arXiv preprint arXiv:2511.21192},
year={2025}
}
Python
98.7%
Shell
1.3%