Executive Summary
A critical unauthenticated remote code execution vulnerability (CVE-2026-1579) has been disclosed in the MAVLink communication protocol, the de facto standard used by drones, unmanned aerial vehicles (UAVs), and ground control stations worldwide. The vulnerability carries a CVSS score of 9.8 (Critical) and arises from the protocol's lack of mandatory cryptographic authentication.
CVSS Score: 9.8 (Critical)
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
When MAVLink 2.0 message signing is not enabled — which is the default configuration for most deployments — any attacker with network access to the MAVLink interface can send arbitrary messages, including SERIAL_CONTROL, which provides interactive shell access to the flight controller.
Vulnerability Overview
| Attribute | Value |
|---|---|
| CVE ID | CVE-2026-1579 |
| CVSS Score | 9.8 (Critical) |
| Type | Missing Cryptographic Authentication |
| Attack Vector | Network |
| Attack Complexity | Low |
| Privileges Required | None |
| User Interaction | None |
| Scope | Unchanged |
| Confidentiality / Integrity / Availability | High / High / High |
| Published | 2026-03-31 |
| Source | NIST NVD |
Affected Systems
MAVLink is used in a wide range of platforms. Any system that:
- Uses MAVLink 2.0 without message signing enabled, OR
- Uses MAVLink 1.0 (which has no signing capability at all)
is considered vulnerable. This includes:
| Platform / Software | Notes |
|---|---|
| ArduPilot | Widely deployed in DIY drones, commercial UAVs |
| PX4 Autopilot | Open-source flight stack for drones |
| QGroundControl | Primary ground control station software |
| Mission Planner | Popular GCS for ArduPilot fleets |
| MAVProxy | Command-line GCS proxy |
| Custom MAVLink implementations | Any third-party integration using libmavconn |
MAVLink is also used in commercial drone platforms, military applications, agricultural UAVs, and infrastructure inspection drones.
Technical Details
What Is MAVLink?
MAVLink (Micro Air Vehicle Link) is a lightweight, header-only message marshaling library for micro air vehicles. Originally designed by Lorenz Meier at ETH Zürich in 2009, it is now the dominant communication protocol between drone autopilots and ground control stations.
MAVLink operates over UDP, serial links, TCP, and radio telemetry and enables:
- Flight parameter management
- Real-time telemetry streaming
- Waypoint mission upload/download
- Command and control messages
The Authentication Gap
MAVLink 2.0 introduced an optional packet signing mechanism using a shared secret and HMAC-based message authentication. However:
- Signing is not enabled by default in most autopilot firmware and GCS software
- MAVLink 1.0 has no signing support whatsoever
- Many deployments — particularly commercial and hobbyist systems — leave signing disabled for compatibility
SERIAL_CONTROL Message Exploit
The critical element of this vulnerability is the SERIAL_CONTROL MAVLink message (message ID 126). This message type allows:
SERIAL_CONTROL allows interactive shell access to the autopilot's
serial console. When sent without authentication, an attacker can:
1. Access the autopilot debug shell
2. Read and modify flight parameters
3. Execute arbitrary commands on the flight controller
4. Override safety systems
5. Take full control of the drone in flight
Because any party with network access to the MAVLink interface can inject these messages without any credential or signing requirement, the attack requires no prior authentication.
Attack Scenarios
Scenario A — Wi-Fi Proximity Attack:
1. Attacker within Wi-Fi range of a drone's companion computer
2. Joins the drone's access point (often open or WEP)
3. Sends SERIAL_CONTROL packet to flight controller port (default: 14550 UDP)
4. Achieves interactive shell on the flight controller
5. Can modify waypoints, disable safety checks, trigger emergency mode
Scenario B — Telemetry Radio Intercept:
1. Attacker uses SDR to monitor MAVLink telemetry frequency
2. Identifies MAVLink traffic from target UAV
3. Injects malicious SERIAL_CONTROL frames
4. Flight controller executes commands from attacker
Scenario C — Network-Connected GCS:
1. Ground control station connected to a corporate or operations network
2. Attacker gains access to the same network segment
3. Sends MAVLink commands directly to GCS or flight controller
4. Achieves full mission overrideImpact Assessment
| Impact Area | Description |
|---|---|
| Flight Control Takeover | Full override of autopilot navigation and commands |
| Safety System Bypass | Disable geofencing, RTL (Return-To-Launch), emergency stop |
| Physical Damage | Force crash, fly-away, or collision with people/property |
| Data Exfiltration | Extract flight logs, GPS tracks, captured imagery |
| Mission Sabotage | Modify waypoints or abort legitimate operations |
| Surveillance Misuse | Redirect camera payloads or exfiltrate live video feeds |
The impact extends beyond individual drones. In fleet operations — agriculture, infrastructure inspection, search and rescue — compromise of one unit or the ground control system could expose entire fleets.
Recommendations
Immediate Actions
- Enable MAVLink 2.0 message signing on all autopilot firmware and GCS software
- Generate and distribute unique signing keys for each drone-GCS pair
- Disable MAVLink 1.0 compatibility wherever possible; it has no signing support
- Segment drone communication networks — never expose MAVLink interfaces to untrusted networks
MAVLink Signing Configuration
For ArduPilot:
# Enable signing via parameter (MAVLink 2 required)
SERIAL_OPTIONS = 64 # Enable signing on target serial port
# Load signing key via GCS or MAVProxyFor PX4:
# Enable MAVLink message signing
param set MAV_SIGNING 1
# Configure signing key and target GCS system IDFor QGroundControl / Mission Planner:
Settings → MAVLink → Enable Signing → Generate Key Pair
Distribute public key to autopilot before flight
Network-Level Mitigations
- Firewall drone communication links to prevent external MAVLink access
- Use a VPN or encrypted tunnel for telemetry over public networks
- Disable SERIAL_CONTROL message forwarding on GCS if not required
- Enable host-based firewall on companion computersIf Signing Cannot Be Enabled Immediately
- Use a physically isolated network for all drone-GCS communication
- Disable SERIAL_CONTROL message type if interactive shell access is not needed in production
- Monitor for unexpected MAVLink traffic on operational networks
- Apply physical security to ground control stations and telemetry radios
Detection Indicators
| Indicator | Description |
|---|---|
| Unexpected SERIAL_CONTROL messages | Possible shell access attempts |
| MAVLink traffic from unknown system IDs | Unauthorized senders on the link |
| Anomalous parameter changes mid-flight | Potential in-flight compromise |
| Unexpected shell output in GCS logs | Post-exploitation evidence |
| Drone deviation from filed flight plan | Possible waypoint injection |
Post-Remediation Checklist
- Signing keys deployed and verified on all drone-GCS pairs
- MAVLink 1.0 compatibility disabled where operationally possible
- Network access to MAVLink interfaces restricted via firewall rules
- All flight controller firmware updated to latest stable release
- GCS software updated with signing support
- Incident response procedure documented for in-flight takeover scenarios
- Regular key rotation schedule established for operational fleets