Executive brief
EGO-Planner-v2 is a path-planning library used in autonomous aerial vehicle (UAV) swarms to avoid obstacles and coordinate multi-robot motion. A flaw in its replanning state machine can trap UAVs in repeated emergency-stop and recovery loops when near obstacles, causing them to fail to resume normal operation and preventing mission completion across the swarm.
Technical details
The vulnerability is a denial-of-service condition caused by unbounded oscillation in the finite state machine (FSM) controlling UAV recovery and replanning. The root cause involves three interacting components in ego_replan_fsm.cpp: checkCollisionCallback() runs continuously even during recovery states and repeatedly detects unresolved obstacle conflicts; execFSMCallback() transitions from EMERGENCY_STOP to GEN_NEW_TRAJ based only on velocity drop (odom_vel_.norm() < 0.1) without verifying the underlying conflict is resolved; and planFromGlobalTraj() failures trigger immediate retries without bounded backoff or cooldown. When a UAV remains near an obstacle or another UAV, these mechanisms interact to create a persistent recovery loop where safety checks continuously interrupt recovery attempts. In multi-UAV scenarios, several vehicles can simultaneously enter the same oscillatory recovery behavior, amplifying the denial of service. The vulnerability affects all versions up to commit 5c99a95880401e2599638d567abc0e240396cb42 and is triggered by proximity to obstacles or swarm members with no special authentication required.
Affected products
- ZJU-FAST-Lab EGO-Planner-v2 all versions up to commit 5c99a95880401e2599638d567abc0e240396cb42
Timeline
- 2026-09-10: disclosed