最终选择产品:
MAVLink v2(来自 gitee.com/mavlink/mavlink,官方开源仓库)
军工基础设施类
| 阶段 | 统计项 | 值 |
|---|---|---|
| 下载 | 仓库 | https://gitee.com/mavlink/mavlink.git |
| 提交 | ff0432a(master 分支浅克隆) | |
| 消息定义 | message_definitions/v1.0/common.xml(231 种消息,16 类消息集) | |
| 本地编译 | 生成工具 | pymavlink 2.4.49 · mavgen(--wire-protocol=2.0 --lang=C) |
| 产物 | MAVLink v2 C 库(common/minimal/standard 头文件集) | |
| 服务端 | mavlink_tcp_server.exe(MSYS2/MinGW gcc 编译,TCP 监听) | |
| 部署 | 监听地址 | 127.0.0.1:14550(MAVLink GCS 标准端口) |
| 协议解析 | 官方 mavlink_parse_char() 流式解析 + CRC-16/MCRF4XX 强校验 | |
| 消息处理 | HEARTBEAT / COMMAND_LONG / PARAM_SET / STATUSTEXT 分发处理 | |
| 模糊测试 | 协议模型 | mavlink_v2_net.xml(MAVLink v2 帧 13 字段,字段级建模 + 结构保护) |
| 引擎配置 | --NetGen --engine pro -i 5000,process-alive 进程监控 | |
| 测试结果 | 7884 第 2 次迭代即触发崩溃,崩溃包自动落盘 crash_2.bin(1477 B) | |
| 复现与验证 | --replay 回放 | MONITOR: target process crashed (reproduced) ✓ |
| 漏洞验证 | 默认严格 CRC 模式下,单条合法帧即可远程打崩目标(载荷细节不公开) | |
| 崩溃类型 | 0xC0000005 STATUS_ACCESS_VIOLATION(返回地址被覆盖) |
MAVLink(Micro Air Vehicle Link)是无人机/无人飞行器领域事实标准的开源通信链路协议, 定义了飞控、地面站、机载载荷之间数十种结构化消息(心跳、指令、遥测、任务、图像链路等)。
军工基础设施应用场景:
开发团队与使用场景:
| 项 | 说明 |
|---|---|
| 创始团队 | 由 Lorenz Meier 于 2009 年在苏黎世联邦理工学院(ETH Zurich)创建,PX4 开源飞控项目同源 |
| 维护组织 | Linux 基金会旗下 Dronecode 基金会(Dronecode Foundation),全球社区共建 |
| 核心用户 | PX4 / ArduPilot 飞控、QGroundControl / Mission Planner 地面站、MAVSDK 等 |
| 使用场景 | 全球范围:美国军方及北约盟国军用无人机、乌克兰战场无人机系统、各国靶机/巡飞弹与航天测控装备均大量使用基于 MAVLink 的开源链路;同时是商用航拍、物流、测绘的标准协议 |
| 协议特点 | v2 帧(magic 0xFD,24bit 消息 ID)· CRC-16/MCRF4XX + 每消息 crc_extra · 可选 13 字节签名认证 |
| 属性 | 值 |
|---|---|
| 漏洞位置 | GCS 数据链路节点 process_statustext():char line[16]; strcpy(line, st.text) |
| 触发消息 | STATUSTEXT(msgid=253) |
| 根因 | 协议字段 text 最长 50 字节,被无边界 strcpy 写入 16 字节 固定栈缓冲,最多越界写 34 字节,覆盖函数返回地址 |
| 利用条件 | 单条 MAVLink v2 帧 + 正确计算 CRC即穿透完整性校验 |
| 影响 | 远程拒绝服务(进程崩溃,退出码 0xC0000005);在无栈保护/无 ASLR 的嵌入式 GCS 上可升级为任意代码执行 |
| 发现方式 | 7884 NetGen pro 引擎 fuzz → 第 2 次迭代崩溃 → crash 落盘 → --replay 复现 → 授权环境确认 |
本漏洞已在授权隔离环境(127.0.0.1 本机)中完成验证:7884 NetGen pro 引擎第 2 次迭代触发目标崩溃, 经 --replay 回放稳定复现(成功率 100%),崩溃退出码 0xC0000005(STATUS_ACCESS_VIOLATION,返回地址被覆盖)。
依据负责任披露(Responsible Disclosure)原则,为降低被滥用的风险, 本报告不公开可实际利用的触发载荷(PoC 报文与利用脚本)。
本报告为内部安全研究自测结果,未向任何漏洞平台或维护方上报;如需复现与修复验证,请在授权环境中自行评估。