项目名称某无人机系统地面控制站软件GCSSV1.0测试事件报告标识TER-ST-FUNC-01-003编制单位XXX公司 软件测试部编制测试员B审核XXX测试经理批准XXX项目经理编制日期最后更新日期1 报告标识1.1 基本信息项内容测试事件报告标识符TER-ST-FUNC-01-003关联的测试计划STP-LEMF-UAS-2024-001关联的测试设计说明TDS-FUNC-01-202408关联的测试用例说明TC-FUNC-01-SET (TC-FUNC-01-14)关联的测试规程说明TP-FUNC-01-MANUAL (相关步骤)关联的测试日志TLog-ST-FUNC-01-20240810_14 (2024-08-13记录)被测软件名称某无人机系统地面控制站软件 (GCSS)被测软件版本/构建V1.0 (Build 20240810)测试阶段系统测试 (System Test)测试类型功能测试、健壮性测试事件发现日期2025年5月13日事件发现时间10:12 (北京时间)事件报告日期2025年5月13日事件状态已打开 (Open)-已分配 (Assigned)-已修复 (Fixed)-待验证 (Pending Verification)当前状态待验证 (Pending Verification)缺陷跟踪系统IDJira: LEMF-1031.2 变更历史版本修订日期修订人修订说明1.02025-05-13测试员B初始版本创建记录事件发现时的详细信息。1.12025-05-14测试员B补充了“6. 原因分析”中开发团队的初步调查结果。1.22025-05-16测试员B更新了“8. 建议措施”和“9. 状态”反映开发团队已提交修复版本。2 摘要2.1 事件概述在系统测试阶段执行测试用例“TC-FUNC-01-14接收异常/非法数据测试”时地面控制站软件GCSS在接收到一个特定格式的畸形MAVLink协议数据包数据包长度字段被篡改为超过协议最大允许值后发生访问冲突Access Violation异常导致软件进程崩溃。此缺陷属于严重级别直接影响软件的健壮性和可用性在真实环境中可能因通信干扰或恶意攻击导致控制站软件意外终止造成任务中断甚至安全事故。2.2 影响评估严重性等级2 - 严重 (Major)依据导致软件崩溃核心功能完全丧失在特定输入条件下可稳定复现属于安全性和健壮性范畴的缺陷。优先级高 (High)依据影响软件基本可用性在真实通信环境中存在出现的可能性如电磁干扰导致数据错乱必须在发布前修复。影响范围仅限于GCSS软件的MAVLink协议解析模块。不影响其他功能模块也不影响无人机飞控本身。3 事件描述3.1 事件发生环境表3-1事件发生时的测试环境配置类别配置项详细信息硬件环境测试主机TEST-STATION-01 (Intel i7-12700, 32GB RAM, Windows 11 Pro 22H2)软件环境操作系统Windows 11 Professional 22H2 (Build 22621.2428)软件环境运行时库Microsoft Visual C Redistributable 2015-2022软件环境虚拟串口com0com 3.0 (虚拟端口对: COM10 - COM11)被测软件GCSS V1.0Build 20240810安装路径C:\Program Files\SkyUAV\GCSS测试工具MAVLink Simulatorv2.1.3 (Python脚本已修改用于发送畸形包)测试工具Serial Port Monitorv9.0.586 (用于监控数据流)网络环境无测试在隔离的实验室局域网中进行无外部网络干扰。3.2 事件触发条件与步骤本事件在执行《测试用例说明》TC-FUNC-01-14的步骤4时触发。以下是严格按照《测试规程说明》和实际操作的详细步骤前提条件GCSS V1.0 (Build 20240810) 已成功安装并启动。虚拟串口对COM10(GCSS端) 和COM11(模拟器端) 已建立且可用。修改后的MAVLink Simulator已启动监听COM11波特率115200。该模拟器被编程为在连接建立后按指令发送特定的畸形数据包。GCSS已配置为连接COM10波特率115200。触发步骤步骤1在GCSS主界面点击“连接”按钮。成功与模拟器建立连接状态显示“已连接”指示灯为绿色。步骤2通过模拟器控制台发送指令send_malformed length_field_overflow。步骤3模拟器随即通过COM11向COM10发送一个畸形的MAVLink v1.0协议数据包。该数据包的结构如下十六进制和解释性表示原始字节流部分示例长度字段被恶意设置为300FE 2C FF 00 00 00 00 00 00 00 00 00 00 00 00 00 ... (后续填充至“长度”字段指示的大小)FE: MAVLink v1.0 协议起始标志位 (STX)。2C:“长度”字段 (LEN)值为 44 (0x2C)。这是一个正常的MAVLink消息如HEARTBEAT的长度。但在此测试中模拟器实际构造并发送的数据包在“长度”字段之后的总字节数远超此值模拟了长度字段被篡改或解析错误的场景。具体而言模拟器发送了一个总长度远大于44字节的数据流但在“长度”字段位置仍写为44导致后续的解析逻辑对缓冲区预判错误。FF: 序列号 (SEQ)。00: 系统ID (SYSID)。00: 组件ID (COMPID)。00 00: 消息ID (MSGID)此处为0 (HEARTBEAT)。... 后续数据模拟器发送了超过300字节的填充数据远超MAVLink v1.0协议255字节的最大载荷限制和缓冲区预期。步骤4GCSS的MAVLink协议解析线程在串口接收缓冲区中读取到此数据。解析器根据起始标志FE识别到一个新包开始然后读取“长度”字段0x2C十进制44。解析器随后尝试从缓冲区中读取“44字节载荷 2字节校验和”的数据。然而由于实际接收到的字节流结构混乱且可能不符合协议规范长度字段与后续实际数据流长度严重不匹配在计算校验和、定位下一个包的起始位置或进行内存拷贝时访问了非法内存地址。步骤5约1-2秒后GCSS主界面完全停止响应卡死。随后Windows操作系统弹出错误对话框提示“GCSS.exe 已停止工作”。详细问题信息显示为“异常代码: 0xc0000005 (访问冲突)”。步骤6用户点击“关闭程序”后GCSS进程被终止。测试无法继续进行。实际结果与预期对比预期结果GCSS应能安全处理此类畸形包例如丢弃该包重置解析状态并在内部日志中记录一个协议解析错误软件应保持运行不断开连接。实际结果GCSS进程因访问冲突异常而崩溃导致软件完全关闭。这违反了软件的健壮性要求。关键观察与证据图3-1GCSS进程崩溃时的Windows错误对话框此处应插入截图CRASH_ILLEGAL_LEN_20240813_1012.png图中显示“GCSS.exe 已停止工作”以及问题详细信息代码位置根据崩溃转储分析异常发生在动态链接库MAVLinkComm.dll内的函数MavlinkParser::parseBuffer()中具体是读取消息ID后进行缓冲区边界检查的一行汇编指令。Windows事件查看器日志日志名称: Application 来源: Application Error 日期: 2024-08-13 10:12:05 事件ID: 1000 任务类别: (100) 级别: 错误 关键字: 经典 用户: 暂缺 计算机: TEST-STATION-01 描述: 错误应用程序名称: GCSS.exe版本: 1.0.0.0时间戳: 0x66c3a1f2 错误模块名称: MAVLinkComm.dll版本: 1.0.0.0时间戳: 0x66c3a1e5 异常代码: 0xc0000005 错误偏移: 0x0000a1c3 错误进程ID: 0x3a4c 错误应用程序启动时间: 0x01d9e8f2a6b7a1d2 错误应用程序路径: C:\Program Files\SkyUAV\GCSS\GCSS.exe 错误模块路径: C:\Program Files\SkyUAV\GCSS\MAVLinkComm.dll 报告ID: 7b4c5d2a-1234-5678-abcd-1234567890ab3.3 事件影响对测试活动的影响直接导致测试用例 TC-FUNC-01-14 的执行被阻塞无法继续进行后续步骤如测试其他类型的非法数据。测试员必须重启GCSS和测试环境影响了测试效率。对被测软件的影响导致GCSS V1.0 (Build 20240810) 进程意外终止所有功能瞬间丧失。在真实任务场景中这将导致飞行器与控制站之间的双向通信中断。地面站无法接收飞行器遥测数据位置、状态、图像等。操作员无法向飞行器发送任何控制指令如返航、更改航点。可能引发飞行器触发失控保护逻辑存在安全风险。对项目的影响暴露了核心通信协议栈中存在严重的安全漏洞缓冲区溢出或边界检查不充分必须在版本发布前予以修复。此缺陷的严重性被评估为严重 (Major)。4 影响评估4.1 严重性等级评估根据《项目缺陷管理规范 V2.1》中的定义本次事件的严重性等级评估为2 - 严重 (Major)。评估依据如下表表4-1缺陷严重性等级评估矩阵评估维度等级描述本事件符合情况说明功能影响主要功能失效或严重错误导致系统/模块无法继续运行。完全符合GCSS进程崩溃所有与无人机的通信、监控、控制功能完全丧失。数据影响导致数据损坏或丢失且无法恢复。部分相关崩溃瞬间未持久化的实时数据如当前飞行状态、临时航点会丢失。但飞行器状态数据主要存储在飞控端地面站崩溃不直接影响飞控数据。系统稳定性导致系统崩溃、死机、重启或产生严重资源泄漏。完全符合软件进程因访问冲突异常而终止属于典型的系统级崩溃。安全性可能导致人身伤害、设备损坏、重大经济损失或严重违反安全法规。高度相关在无人机飞行任务中地面站是核心控制节点。其意外崩溃可能导致飞行器失控存在撞击风险可能造成财产损失甚至人身伤害。可恢复性需要人工干预才能恢复且恢复过程复杂或耗时。完全符合需要操作员手动重启GCSS软件并重新建立与无人机的连接。在飞行过程中此过程可能导致任务中断或飞行器进入失控保护模式。4.2 优先级评估本缺陷的优先级被评定为高 (High)。评估依据如下发生可能性在真实无线通信环境中由于电磁干扰、信号多径衰落、硬件故障等原因数据包发生位错误或结构畸变的概率虽然不高但确实存在。恶意攻击者也可能故意构造此类数据包进行拒绝服务攻击。影响范围影响所有依赖MAVLink通信的GCSS功能是核心基础功能。修复紧迫性该缺陷直接违反了软件健壮性Robustness的基本要求属于严重的安全隐患。在系统测试阶段发现此类问题必须在版本发布前彻底修复否则产品无法达到交付标准。项目阶段当前处于系统测试中期有足够的时间进行修复和回归测试但也不应拖延。4.3 影响范围分析受影响的软件版本GCSS V1.0 (Build 20240810) 及所有基于相同MAVLink通信模块的早期构建版本。受影响的硬件/平台所有运行GCSS的Windows平台x64。其他平台如Linux由于使用相同的通信库源代码理论上也存在相同风险需另行验证。受影响的用户场景所有通过串口、UDP、TCP等方式使用MAVLink v1.0协议与无人机通信的场景。在通信信号质量较差低信噪比的恶劣环境下作业时风险增高。在公开网络或安全性未知的网络中进行远程指挥控制时面临潜在的网络攻击风险。不受影响的部分MAVLink v2.0协议解析如果软件支持且独立实现。与通信无关的其他GCSS功能模块如地图显示、任务规划、数据回放等前提是这些模块不因主进程崩溃而连带失效。5 事件分析5.1 直接原因通过对崩溃转储文件GCSS_20240813_1012.dmp的分析和开发团队的代码审查确定了导致访问冲突异常的直接原因在MAVLinkComm.dll的MavlinkParser::parseBuffer()函数中存在以下有问题的代码段伪代码// 假设的缺陷代码逻辑 bool MavlinkParser::parseBuffer(uint8_t* buffer, size_t bufferLen) { size_t index 0; while (index bufferLen) { if (buffer[index] MAVLINK_STX_V1_0) { // 找到起始标志 uint8_t payload_len buffer[index 1]; // 读取长度字段 // 问题点未充分验证 (index payload_len MAVLINK_NUM_CHECKSUM_BYTES) 是否小于 bufferLen uint8_t msgId buffer[index 5]; // 读取消息ID假设payload_len3 // ... 后续处理可能基于payload_len进行内存拷贝 // 如果payload_len被恶意设置为一个很大的值例如300而buffer实际剩余长度不足 // 那么 buffer[index 5] 的读取操作就可能越界访问到未分配或受保护的内存地址。 index (payload_len MAVLINK_HEADER_LEN MAVLINK_NUM_CHECKSUM_BYTES); // 移动索引 } else { index; } } return true; }直接原因协议解析器在读取数据包长度字段后未对“当前索引 数据包宣称长度 校验和长度”的总和进行严格的边界检查以确认其不超过接收缓冲区的有效长度。当接收到一个声称长度很大但实际后续数据不足或结构混乱的畸形包时解析器在尝试访问消息ID或其他载荷数据时发生了缓冲区越界读操作触发了操作系统的访问保护异常0xc0000005。5.2 根本原因代码实现缺陷MavlinkParser类的parseBuffer函数在实现MAVLink协议状态机时安全性考虑不足。它过度信任来自通信链路的数据没有对协议字段特别是长度字段进行充分的合理性校验和边界防护。设计缺陷通信模块的设计未能遵循“防御性编程”原则。对于来自不可信源外部设备、网络的数据应假设其可能是恶意的或错误的必须在每一步解析都进行严格的验证。测试用例覆盖不足在单元测试和集成测试阶段未能设计出足够全面的异常数据测试用例特别是针对协议字段畸变、边界条件、压力测试等场景。导致该缺陷在开发阶段未被发现遗留至系统测试阶段。5.3 相关因素环境因素无。该缺陷在标准测试环境下稳定复现与环境无关。人为因素开发人员在实现协议解析逻辑时可能更关注正常流程的功能正确性而忽视了异常处理和数据验证的完备性。代码审查环节也可能未将此类安全性检查作为重点。工具因素使用的MAVLink库或代码生成工具可能未提供足够安全的默认解析模板或者开发团队在定制化修改时引入了该漏洞。6 建议措施6.1 短期措施立即执行缺陷修复负责人软件开发工程师XXX措施修改MAVLinkComm.dll中MavlinkParser::parseBuffer()函数的实现。在读取长度字段后立即计算完整数据包的预期结束位置expected_end current_index MAVLINK_HEADER_LEN payload_len MAVLINK_NUM_CHECKSUM_BYTES。在访问消息ID、载荷或校验和之前必须验证expected_end bufferLen。如果验证失败则丢弃从当前起始标志开始的数据将索引index向后移动一位并记录一个协议错误日志。交付物修复后的MAVLinkComm.dll文件及对应的源代码更改记录。截止日期2025年5月15日代码审查负责人技术负责人XXX措施组织对MAVLinkComm模块的所有协议解析相关代码进行专项安全审查重点检查所有缓冲区操作、整数溢出、循环边界等潜在风险点。交付物代码审查报告。截止日期2025年5月16日6.2 中期措施在本版本内完成补充单元测试与集成测试负责人开发工程师XXX、测试工程师测试员B措施为MavlinkParser类补充针对异常、畸形、边界数据包的单元测试用例。在集成测试中增加通信健壮性测试专项。交付物新增的自动化测试用例集及测试报告。截止日期2025年5月20日更新测试用例库负责人测试经理XXX措施将本次发现缺陷的测试场景畸形长度字段正式纳入系统测试用例库TC-FUNC-01-14并考虑扩展更多类型的协议模糊测试Fuzzing Test用例。交付物更新后的测试用例说明文档。截止日期2025年5月18日6.3 长期措施流程改进引入安全编码规范负责人质量部经理XXX措施制定并推行《C安全编码规范》明确要求对来自外部的所有输入进行验证、安全的缓冲区操作、整数溢出检查等。交付物公司级安全编码规范文档。截止日期2025年9月30日引入静态代码分析工具负责人配置管理工程师XXX措施在持续集成CI流水线中集成静态应用程序安全测试SAST工具如 Coverity, Klocwork对每次代码提交进行自动化的安全漏洞扫描。交付物集成方案和运行报告。截止日期2025年10月15日7 状态跟踪7.1 缺陷生命周期日期状态处理人说明2024-08-13 10:30新建 (New)测试员B在Jira系统中创建缺陷LEMF-103并提交本TER。2024-08-13 14:00已分配 (Assigned)开发经理分配给软件开发工程师XXX处理。2024-08-14 16:00处理中 (In Progress)XXX开发人员开始分析代码并定位问题。2024-08-15 11:00已修复 (Fixed)XXX提交修复后的代码至版本库构建了新的测试版本GCSS V1.0 (Build 20240815)。2024-08-16 09:00待验证 (Pending Verification)测试员B修复版本已部署至测试环境等待测试团队验证。计划2024-08-16已验证 (Verified)测试员B计划执行回归测试验证。计划2024-08-19已关闭 (Closed)测试经理计划在回归测试通过后关闭缺陷。7.2 回归测试计划为验证缺陷修复的有效性需执行以下回归测试重新执行原失败用例在GCSS V1.0 (Build 20240815)上严格复现TER-ST-FUNC-01-003中的步骤确认软件不再崩溃并能正确处理该畸形包记录日志并丢弃。扩展异常测试使用模糊测试工具生成更多随机、畸形的MAVLink数据包对修复后的模块进行压力测试持续运行至少24小时观察是否有新的崩溃或异常。正常功能回归执行测试集TC-FUNC-01-SET中的所有测试用例确保修复未引入新的功能缺陷。性能测试验证增加边界检查后协议解析的吞吐量和延迟是否在可接受范围内。8 批准本测试事件报告已编制完成用于记录和跟踪该严重缺陷。报告内容真实、准确原因分析清晰建议措施具体可行。编制人签字_________________测试员B日期2025年5月16日审核意见同意报告内容。该缺陷揭示了通信模块的重大安全隐患必须严格按照建议措施进行修复和验证。请测试团队重点跟进回归测试。审核人签字_________________XXX测试经理日期2025年5月16日批准意见批准本报告。要求开发团队立即修复测试团队严格验证。同时要求项目组以此为契机开展一次通信安全专项检查。批准人签字_________________XXX项目经理日期2025年5月16日9 附录附录A相关文档引用GB/T 9386-2008 《计算机软件测试文档编制规范》《LE-MF UAS 地面控制站软件需求规格说明书 V1.2》《LE-MF UAS 软件测试计划 V1.0》《MAVLink 微空中协议 V1.0 规范》Jira缺陷记录 LEMF-103 的完整历史与评论。附录B关键证据截图索引CRASH_ILLEGAL_LEN_20240813_1012.png- GCSS崩溃错误对话框。WINDOWS_EVENT_LOG_20240813.png- Windows应用程序错误事件日志详情。MAVLINK_MALFORMED_PACKET_HEX.png- 模拟器发送的畸形数据包十六进制内容来自Serial Port Monitor。CODE_SNIPPET_BUG.png- 存在缺陷的代码段截图来自源代码版本控制系统。JIRA_LEMF-103_STATUS.png- Jira系统中该缺陷的状态跟踪截图。附录C术语表GCSS:Ground Control Station Software地面控制站软件。MAVLink:Micro Air Vehicle Link一种用于无人机的小型化消息传递协议。访问冲突 (Access Violation):一种程序试图访问其没有权限访问的内存地址时引发的异常。缓冲区溢出 (Buffer Overflow):一种软件缺陷当程序向缓冲区内填充的数据超过了其容量时导致数据溢出到相邻内存区域。模糊测试 (Fuzzing):一种通过向程序提供大量非预期的、随机的或畸形的输入数据以发现其潜在漏洞的测试方法。回归测试 (Regression Testing):在软件修改后重新执行之前的测试用例以确保修改没有引入新的错误或导致原有功能失效。