DOI: 10.5281/zenodo.15120571
title: Artifacts from "Invisible but Detected: Physical Adversarial Shadow Attack and Defense on LiDAR Object Detection"

description: README

This repository contains the data and code from our paper, "Invisible but Detected: Physical Adversarial Shadow Attack and Defense on LiDAR Object Detection," accepted to USENIX Security 2025.We hope these resources will facilitate a deeper understanding of our research and support further exploration in this field.

Contents

Data

This repository provides various types of point cloud data used in our research. These datasets include both physical and simulation environments, as outlined below:



flat.zip:



Corresponds to Section 4 of the paper, it is point cloud data obtained in an environment free of surrounding objects, utilized for optimizing the shadow shape.



section5.zip:



Corresponds to Section 5 of the paper, containing measurement point clouds (pcd) for each Shadow Material placed at various distances from the LiDAR.



section6.x.zip:



Corresponds to Section 6 of the paper, including measurement point clouds (pcd) from all experiments (see below).




Overview of the experiments in Section 6:



Section 6.1: Evaluates the effective attack range and analyzes the impact of the distance between the Shadow Material and LiDAR on the attack success rate.

Section 6.2: Assesses the robustness of the attack against diverse surrounding environments (different scenes).

Section 6.3: Evaluates the impact of the attack on various object detection models (PointPillars, SECOND-IoU, PointRCNN).

Section 6.4: Analyzes the attack’s effect on different LiDAR sensors (OS1-64, VLS-128, Pandar 40P).

Section 6.5: Evaluates the impact of changes in the spatial relationship between the LiDAR and the Shadow Material.

Section 6.6: Verifies the feasibility of the attack in real-world scenarios.


Code

To support the replication and further development of our research, we will provide the code used in our simulations and for replicating the Shadow Hack. The code includes components such as scripts for simulation setup, attack evaluation, and defense evaluation, as outlined below:



optimization.py:



Optimization code for Shadow Material shapes running on OpenPCDet (Python).



defense.py:



Code for BBValidator running on OpenPCDet (Python).



TrapezoidPlane.cs, texture_intensity.png, shadow_ws:

Code for reproducing Shadow Material (materials not detectable by LiDAR) in AWSIM (C#), ROS2 node (Python).


Demo

All point cloud data used in the experiments throughout the paper are stored in the /SectionXX folder, which corresponds to the subsection numbers in our paper. These folders contain all the point cloud data collected during the experiments described in each subsection. All data are in a binary format compliant with the KITTI dataset.

These data can be used to obtain inference results by inputting them into OpenPCDet following the steps below.

Requirements



Ubuntu 20.04 or 22.04

Python 3.6+

PyTorch 1.1 or higher

CUDA 9.0 or higher

spconv v1.0 (commit 8da6f96) or spconv v1.2 or spconv v2.x


(Our Setup)



Ubuntu 20.04

Pytorch 2.3.1

CUDA 12.4

spconv 2.3.6


Install OpenPCDet

Follow this document.    https://github.com/open-mmlab/OpenPCDet/blob/master/docs/INSTALL.md



Clone the repository.git clone https://github.com/open-mmlab/OpenPCDet.git

Move to the directory.cd OpenPCDet

Install pcdet libraly.python3 setup.py develop

4. Install Open3Dpip3 install open3d


Download Models

Download models from OpenPCDet repository.    https://github.com/open-mmlab/OpenPCDet/tree/master?tab=readme-ov-file#model-zoo

Get Results



Move to the directory.cd OpenPCDet/tools

Run the inference.python3 demo.py --cfg_file cfgs/kitti_models/{MODEL NAME}.yaml --ckpt {DOWNLOADED MODEL} --data_path {POINT_CLOUD_DATA}


 

Optimizing Shadow Shape & BBValidator Demo

The optimization.py and defense.py files in the code folder work with OpenPCDet. Complete the setup as described in the Demo section, and move optimization.py and defense.py to OpenPCDet/tools.

Optimizing Shadow Shape



Download flat/0.bin. This is a point cloud data collected in an empty environment for optimization purposes.

Run the optimizationpython3 optimize.py --cfg_file cfgs/kitti_models/{MODEL NAME}.yaml --ckpt {DOWNLOADED MODEL} --data_path "~/data/flat/0.bin"


BBValidator Demo

Similar to the Demo section, you can run the inference to perform it with the defense method enabled. You can specify $N_{thresh}$ and $dh$ as options.python3 defense.py --cfg_file cfgs/kitti_models/{MODEL NAME}.yaml --ckpt {DOWNLOADED MODEL} --data_path {POINT_CLOUD_DATA} --threshold 8 --dh 0.05

 

Shadow Hack Simulation on AWSIM

With the steps described so far, you can reproduce the results of the paper. However, if you wish to conduct similar simulation experiments using AWSIM, please follow the steps below.

AWSIM Setup

Following below tutorial, set up a AWSIM Unity project.    https://tier4.github.io/AWSIM/GettingStarted/SetupUnityProject/

Shadow Material Setup



Create a 3D object plane in the AWSIM environment.

Attach texture_intensity.png and TrapezoidPlane.cs on the plane.

In new terminal, download shadow_ws and build it runnining this command.colcon build

Run this command.source install/setup.bash

Run this command.ros2 run point_cloud_filter point_cloud_filter_node

Run your AWSIM project. You can get point clouds on the ROS2 topic /sensing/lidar/top/pointcloud_raw.