PX4-Autopilot CVE-2025-15150
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local access to device
-
ExploitPlant oversized log filepath entry
-
ExecutionTrigger unbounded sscanf in MavlinkLogHandler
-
ImpactOverflow stack buffer, corrupt memory/crash autopilot
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, buffer size validation
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires local access to the PX4 device and the ability to influence the log directory listing that MavlinkLogHandler reads: the vulnerable code parses each log-index line with sscanf(line, "%" PRIu32 " %" PRIu32 " %s", ...) with NO field-width limit, writing an attacker-influenced filepath token into a fixed stack buffer (filepath[60] in the listing path, and the LogEntry.filepath buffer in log_entry_from_id). A filepath field longer than the destination buffer overflows it. Limiting factors: no remote/network vector (AV:L) and some privilege is required (PR:L) to place or control the oversized log entry; there is no user-interaction requirement (UI:N). This is not exploitable against a default configuration purely over the network - an attacker must already have local access or write influence over the log state the handler parses. |
| Impact | This is a genuine but low-to-moderate priority issue. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:L/UI:N) scores 4.8 (medium) and all three impact metrics are only Low (VC:L/VI:L/VA:L), with no scope/subsequent-system impact. The decisive limiting signal is the Local attack vector combined with required privileges (PR:L): the CVE text explicitly states 'the attack is only possible with local access', which is consistent with the CVSS vector - the two signals agree, not conflict. Publicly available exploit code exists (referenced GitHub issue #26118 and PR #26124), which raises practical reproducibility, but there is NO CISA KEV listing and NO EPSS score provided in the input, so there is no evidence of widespread or active exploitation. POC availability must not be conflated with active exploitation. Net: a real, patch-worthy defect in an embedded flight-controller code path, but the local-only vector and modest, non-escalating impact make it a routine-patch item rather than an emergency. No SSVC decision data or EPSS probability was supplied, so automatability and real-world exploitation likelihood cannot be independently graded from the input. |
| Exploit ScenarioDerived | An attacker with local access to the PX4 flight controller (or a process able to influence the on-device log directory/listing) plants a log entry whose filepath field exceeds the fixed destination buffer. When a MAVLink client requests a log listing, MavlinkLogHandler::state_listing / log_entry_from_id parses the line with an unbounded sscanf("%s") and overflows the stack buffer. Public exploit/POC material is referenced in the linked GitHub issue and pull request. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
A stack-based buffer overflow in PX4-Autopilot (PX4 drone autopilot firmware) up to and including version 1.16.0 allows a locally positioned attacker to corrupt memory in the MAVLink log handler. The flaw lies in MavlinkLogHandler::state_listing() and MavlinkLogHandler::log_entry_from_id(), where log-index lines are parsed with sscanf(line, "%u %u %s", ...) using an unbounded %s conversion that writes an attacker-influenced filepath token into fixed-size stack buffers (filepath[60] in the listing path and LogEntry.filepath in the entry path). Exploitation requires local access and the ability to influence the log directory content that the handler reads, and the assessed impact is limited (low confidentiality, integrity and availability), so this is a genuine but low-to-moderate priority issue. Publicly available exploit code exists (referenced via the upstream issue and pull request) and an upstream fix commit is available, though a tagged patched release was not independently confirmed from the provided data.
RemediationAI
The primary fix is to apply upstream commit 338595edd1d235efd885fd5e9f45e7f9dcf4013d (pull request https://github.com/PX4/PX4-Autopilot/pull/26124), which replaces the 60-byte filepath buffer with LOG_FILEPATH_SIZE = 256, adds a static_assert that PX4_MAX_FILEPATH >= LOG_FILEPATH_SIZE, and bounds both sscanf parses with a "%255s" width specifier so an oversized filepath token can no longer overflow the destination; this is classified as an upstream fix available via PR/commit, and a released patched version is not independently confirmed from the provided data, so build and flash PX4-Autopilot from the fixed commit or a later release that includes it. Where patching or rebuilding firmware is not immediately possible, compensating controls must target the local-access prerequisite: restrict physical and debug-port access to the flight controller, and prevent untrusted writers from creating or renaming log files (in particular do not allow attacker-supplied filenames or externally synchronized log directories to be placed under the device log directory PX4_STORAGEDIR/log). The trade-off is that tightening filesystem/log-directory write permissions on the autopilot can disrupt log synchronization tooling or MAVLink log-download workflows that rely on external writes, so those integrations must be re-validated. Critically, because both sscanf call sites are reachable through MAVLink log listing/entry handling, disabling or restricting the MAVLink log-listing/log-download interface on untrusted links reduces the reachable parse surface, at the cost of losing remote log retrieval until the firmware is updated. Refer to the upstream issue and PR (https://github.com/PX4/PX4-Autopilot/issues/26118 and https://github.com/PX4/PX4-Autopilot/pull/26124) and the VulDB entries (https://vuldb.com/?id.338527, https://vuldb.com/?submit.717323) for patch detail and tracking.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is the MAVLink log handler in the PX4 flight stack, which exposes log-file management over the MAVLink protocol used for ground-station communications. The handler reads the on-device log directory (PX4_STORAGEDIR "/log") and parses each listing line with sscanf using the format "%<PRIu32> %<PRIu32> %s", converting the third (filepath) token into a destination buffer. Because the %s conversion has no field-width limit, any filepath token longer than the destination overflows it - in MavlinkLogHandler::state_listing() the destination is a fixed stack buffer declared as char filepath[60], and in MavlinkLogHandler::log_entry_from_id() it is the filepath member of the LogEntry structure, whose declared size differs from the local listing buffer. This is a classic CWE-119 improper-restriction-of-operations-within-the-bounds-of-a-memory-buffer defect, in this case a stack overflow driven by unbounded string copying. The upstream fix increases the buffer to a shared constant LOG_FILEPATH_SIZE = 256, adds static_assert checks that PX4_MAX_FILEPATH is at least LOG_FILEPATH_SIZE, and hardcodes a 255-width specifier ("%255s") in both sscanf calls so the parsed token can no longer exceed the destination minus the null terminator. The MAVLink log-listing/log-download functionality is the delivery surface, consistent with the CPE identifier cpe:2.3:a:dronecode:px4_drone_autopilot:*:*:*:*:*:*:*:* covering PX4 drone autopilot builds up to 1.16.0. There is no remote/network vector and no user-interaction component: the attacker must already have local access or write influence over the log state that the handler parses.
Know when Px4 Drone Autopilot gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Local-only per the description (AV:L), requires some privilege/local control of log data (PR:L), no user interaction; stack overflow yields limited info/integrity/availability impact (C:L/I:L/A:L), scope unchanged.
Primary rating from Vendor (vuldb).
CVSS VectorVendor: vuldb
DescriptionCVE.org
A vulnerability was found in PX4 PX4-Autopilot up to 1.16.0. Affected by this issue is the function MavlinkLogHandler::state_listing/MavlinkLogHandler::log_entry_from_id of the file src/modules/mavlink/mavlink_log_handler.cpp. The manipulation results in stack-based buffer overflow. The attack is only possible with local access. The patch is identified as 338595edd1d235efd885fd5e9f45e7f9dcf4013d. It is best practice to apply a patch to resolve this issue.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Affected Products (CPE)CVE.org
More in Px4 Drone Autopilot
View allPX4-Autopilot provides PX4 flight control solution for drones. Rated critical severity (CVSS 9.8), this vulnerability is
PX4 Autopilot versions 1.12.x through 1.15.x can be forced into an unsafe re-arm state when pilots switch to Manual mode
PX4 Autopilot versions 1.12.x through 1.15.x contain a logic flaw in the mode switching mechanism. [CVSS 8.1 HIGH]
PX4-Autopilot v1.14.3 was discovered to contain a buffer overflow via the topic_name parameter at /logger/logged_topics.
An issue in PX4 Autopilot v.1.14.0 allows an attacker to manipulate the flight path allowing for crashes of the drone vi
A buffer overflow in PX4-Autopilot v1.12.3 allows attackers to cause a Denial of Service (DoS) via a crafted MavLink mes
PX4 Autopilot v.1.14 allows an attacker to fly the drone into no-fly zones by breaching the geofence using flaws in the
An issue in PX4 Autopilot v1.14 and before allows a remote attacker to execute arbitrary code and cause a denial of serv
PX4 autopilot is a flight control solution for drones. Rated medium severity (CVSS 4.3), this vulnerability is remotely
A Race Condition discovered in geofence.cpp and mission_feasibility_checker.cpp in PX4 Autopilot 1.14 and earlier allows
PX4 Autopilot 1.14 and earlier, due to the lack of synchronization mechanism for loading geofence data, has a Race Condi
Stack Buffer Overflow in PX4-Autopilot v1.14.3, which allows attackers to execute commands to exploit this vulnerability
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB