Aperture
Every phantom bearing crosses the attacker's board and every phantom lies behind its plane. The phantom is the image seen through the mirror.
Paper under double-blind review
A mirror at the roadside can make a vehicle brake for its own reflection. MirrorGuard removes that phantom from the LiDAR stream, in software, from the data the sensor already ships.
A mirror at the roadside makes the vehicle brake for its own image in the middle of a right turn. We drove the closed loop in CARLA with Autoware again, now with a human-driven car following it. The follower model reacts to an unexpected stop after 1.75 s and keeps a 2.0 m standstill gap.
Without the defense, the follower hits the vehicle in all 5 counted attack drives, 1.60 to 1.70 s after the vehicle's hard brake, at 7.7 to 10.7 km/h relative speed. In the 12 other drives, 4 each on the clean road, with the board in place and the reflection off, and under attack with MirrorGuard, it never comes closer than its 2.0 m gap.
The band under each video gives its setup; each video ends with a replay of the contact at 0.4 times speed. Rendered after the drives at the recorded poses.
After the collision both vehicles are held at the contact position for illustration; the recorded drive went on, because the simulator has no damage model.
Traffic lights were held green only while the videos were rendered; Autoware in these drives uses no traffic lights.
Yahia et al. showed that planar mirrors at the roadside fold the sensor's own beams onto a real object, and the vehicle perceives the object's virtual image as an obstacle. The attack emits nothing and costs tens of dollars in materials. In the self-image variant the object is the vehicle itself.
On a real vehicle running Autoware, the phantom ended in an emergency stop at every tested mirror angle (Yahia et al.). The only countermeasure shown to work adds a thermal camera, a sensor deployed vehicles do not carry, and the single software-only cue tested, per-point intensity, was shown to fail.
What the attacker cannot change is what reflection forces on the phantom. MirrorGuard uses four physical signatures.
Every phantom bearing crosses the attacker's board and every phantom lies behind its plane. The phantom is the image seen through the mirror.
The board is opaque: a return whose beam crosses the board inside its outline cannot be a direct return. The test needs one scan and no history of the scene.
The pulse is reflected at the mirror twice, once out and once back, so a diffuse phantom surface returns dark: 0.14 to 0.17 of its range-matched background on the real six-tile recordings.
The board itself returns a specular glint: every labeled board reads 4.4 to 13.4 times its range-matched surroundings, above the 2.353 ceiling of diffuse structure in simulation.
MirrorGuard is a filter between the LiDAR driver and the perception stack. It consumes one scan at a time, as the range and reflectivity image the sensor already produces, and emits the same scan with the returns it attributes to a mirror image removed. Geometry proposes, opacity and darkness confirm, and the glint decides what may act as a mirror at all.
Finds the mirror board by its glint and the structures seen through it.
Tests each candidate by opacity and darkness and confirms it within five scans.
Completes the removal and releases the cleaned scan.
A scan in which no board is accepted and no track is carried passes unchanged.
Detector process path replayed over the nine real-world recordings on a quiet Intel Xeon Gold 5420+; the dominant stages run as native kernels that reproduce the Python decisions bit for bit.
One of the nine real-world outdoor recordings of the attack: an Ouster OS1-128 at 10 Hz passes a six-tile board at 45 degrees (recording 45-6mr). Play through the scans, orbit with the mouse or touch, and switch between what the sensor reports and what MirrorGuard releases.
From the paper's description of the real-world recordings and the recording's own sensor metadata.
On this recording, inside its declared window of 23 scans, MirrorGuard removes 95.97% of the 2383 labeled phantom points at 96.01% whole-frame precision, 100.00% on the driven path, and removes no labeled real return.
Point cloud downsampled for the web; phantom, board and removed returns are kept at full density. Hand labels are the benchmark ground truth and are used only to score the output.
Keyboard: space plays or pauses, the left and right arrows step one scan.
We closed the loop in CARLA with the shipped Autoware Universe planner driving the vehicle through the 45 degree self-image scene at a junction, with the attack injected live and MirrorGuard as a process on the same stream. Four conditions ran ten episodes each; one defended episode failed on infrastructure before any phantom scan and was not replaced.
Values read by script from the frozen design of the closed-loop series and the paper.
One episode per condition from the same block of the series. Each video shows the chase camera, the LiDAR scan as the sensor reports it and as Autoware receives it, the counts of phantom returns, and the speed profile; the band under it gives its setup.
Under attack, CenterPoint places a CAR box on the phantom in every frame of the approach, at a median score of 0.615, and the tracker's existence probability for it reaches 0.998 to 0.999. As the vehicle closes in, the visible slice of the phantom thins, the score falls below the 0.35 cut, and the tracker deletes the track 0.35 to 0.45 s after the last CAR box. The planner has already braked for it: the vehicle halts in the junction 0.10 to 0.40 s after the track is deleted. With MirrorGuard the phantom is never tracked.
Lines are medians and bands are episode ranges (10 attack, 9 defended, 10 clean episodes). Score and slice are drawn where at least 8 of the 10 attack episodes still show a phantom slice.
The cost is latency: MirrorGuard holds each scan for 0.6 s before passing it to the stack, so the defended vehicle receives a scan 0.716 to 0.730 s after its timestamp, against 0.029 to 0.042 s without the defense. With that hold its speed profile matches the clean run.
Pooled over the nine recordings: recall 96.12%, whole-frame precision 98.40%, path-only precision 100.00% (one unlabeled removal on the driven corridor across all nine recordings). The best learned baseline, trained on the simulated attacks, reaches 38.71% recall at 1.15% precision on the same recordings.
Scope: nine real-world recordings of one sensor at one site and a simulation of one town; MirrorGuard targets phantom addition, not object removal, and holds each scan for 0.6 s before release.
@inproceedings{anonymous2026mirrorguard,
title = {MirrorGuard: Software-Only Removal of Passive-Mirror Phantoms from Automotive LiDAR},
author = {Anonymous},
booktitle = {Under review},
year = {2026}
}
Withheld for review.