ArduPilot CVE-2026-38971
CRITICALSeverity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
Unauthenticated crafted MAVLink message (AV:N/AC:L/PR:N/UI:N); OOB read leaks memory back over serial passthrough (C:H) and can crash the autopilot (A:H), no integrity impact.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
3DescriptionCVE.org
ardupilot through Plane-4.6.3 was found to contain an out-of-bounds read issue in libraries/GCS_MAVLink/GCS_serial_control.cpp in GCS_MAVLINK::handle_serial_control().
AnalysisAI
Out-of-bounds read in ArduPilot's MAVLink ground-control-station handler (through Plane-4.6.3) lets a remote attacker on the MAVLink link send a crafted SERIAL_CONTROL message that reads memory beyond intended bounds in GCS_MAVLINK::handle_serial_control(), potentially disclosing adjacent flight-controller memory and/or crashing the autopilot. The CVSS 9.1 rating reflects high confidentiality and availability impact over an unauthenticated network vector, though EPSS is low (0.17%, 6th percentile) and no public exploit is identified at time of analysis. An upstream fix is proposed via GitHub PR #32587 (issue #32524), but no tagged patched release is independently confirmed.
Technical ContextAI
ArduPilot is a widely-used open-source autopilot firmware for UAVs, rovers, and boats; the affected code is libraries/GCS_MAVLink/GCS_serial_control.cpp, which implements handling of the MAVLink SERIAL_CONTROL message used to bridge a ground control station (GCS) to a physical/virtual serial port on the vehicle (e.g., for passthrough to peripherals or bootloaders). The root cause is CWE-125 (Out-of-bounds Read): handle_serial_control() apparently trusts a length/count field or buffer index from the incoming SERIAL_CONTROL payload without validating it against the actual buffer size, causing reads past the buffer boundary. Because SERIAL_CONTROL supports reading data back to the GCS, an over-read can both leak process memory into the returned MAVLink stream and destabilize the flight controller. The CPE data supplied ('cpe:2.3:a:n/a:n/a:*') is a placeholder and provides no usable version enumeration.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - track and apply ArduPilot pull request #32587 (issue #32524) and upgrade to the first tagged release that includes it once published, rather than relying on the pre-4.6.3 line. As compensating controls until a patched firmware build is deployed: do not expose MAVLink telemetry endpoints (UDP/TCP) directly to untrusted networks - bind them to localhost or a trusted management VLAN and place them behind a firewall so only authorized GCS hosts can reach the port (side effect: remote/cloud GCS tooling must be routed through a VPN or bastion); where feasible enable MAVLink 2 signing/authentication so unsigned SERIAL_CONTROL messages from unauthorized senders are rejected (side effect: all legitimate GCS and companion-computer clients must be configured with the shared key); and restrict or disable SERIAL_CONTROL passthrough functionality if it is not operationally required (side effect: loses GCS-driven serial passthrough/peripheral bootloading). See the ArduPilot GitHub issue/PR for authoritative fix details.
LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr
Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han
A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi
Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc
Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula
Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root
LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(
Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti
Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr
SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg
Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ
Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali
Same weakness CWE-125 – Out-of-bounds Read
View allSame technique Buffer Overflow
View allShare
External POC / Exploit Code
Leaving vuln.today