HELPV3 · CCSDS 空间包 / ECSS PUS 航天基础设施类软件模糊测试统计报告发现 1 个漏洞

7884 结构归纳推理引擎 V18 · NetGen 在线协议模糊测试 · 测试日期 2026-08-19 · 报告编号 7884-2026-PUS-001
标准制定者:CCSDS(空间数据系统咨询委员会,1982 年由美国 NASA 发起)  ·  ECSS:欧洲空间标准化合作组织(欧洲空间局 ESA 主导)  ·  开源实现:OpenSpaceCode(Apache-2.0)  ·  使用者:NASA · ESA · JAXA · CNSA · ISRO · ROSCOSMOS 等 26 国航天机构  ·  应用领域:卫星/空间站/深空探测遥测遥控 · 航天器集成测试与在轨运行 · 全球 1000+ 空间任务
发现漏洞:1 个 (CWE-121 栈缓冲区溢出 · 远程可触发 · 单条 83B 合法帧打崩目标进程)

1. 任务背景与目标选择

原始提示词:
  1. 阅读使用说明.TXT 了解 7884 结构归纳推理引擎使用方法。
  2. 从 github 或国内 gitee 下载一个开源软件,航空航天类,本地编译后在 127.0.0.1 配置好进行模糊测试,总结测试结果、生成漏洞报告。
7884 引擎(Normal/Fast/Gen/NetGen) 目标选定:CCSDS Space Packet + ECSS PUS(GitHub) 本地编译(MSYS2 gcc) 部署 127.0.0.1:10025 NetGen pro 模糊测试 崩溃 → 漏洞验证 → 漏洞报告

最终选择产品: CCSDS 133.0-B-2 Space Packet Protocol + ECSS-E-ST-70-41C PUS (官方开源实现 OpenSpaceCode/EmbeddedSpacePacket + OpenSpaceCode/EmbeddedPUS,经 ghproxy 镜像克隆) 航天基础设施类

2. 本次测试统计

2
官方开源库(空间包 + PUS)
12
7884-net 协议模型字段数
55+
pro 引擎变异策略
61/22
两轮 fuzz 崩溃命中迭代
1
确认漏洞(CWE-121 栈溢出)
100%
Replay 复现成功率
83 B
验证帧打崩(合法帧)
0xC0000005
目标崩溃退出码
阶段统计项
下载仓库 1https://github.com/OpenSpaceCode/EmbeddedSpacePacket.git(CCSDS 133.0-B-2)
仓库 2https://github.com/OpenSpaceCode/EmbeddedPUS.git(ECSS-E-ST-70-41C,Apache-2.0)
获取方式GitHub 直连不稳定,经 https://ghproxy.net/ 镜像克隆
本地编译工具链MSYS2/MinGW gcc(b:\Agent\work\m2\usr\bin
产物pus_tc_server.exe(PUS TC 上行链路网关,TCP 监听)
功能官方 sp_packet_parse() 解析空间包 + 官方 pus_tc_process() 分发 ST[01]/ST[17]/ST[20]
部署监听地址127.0.0.1:10025(地面站 TC 上行链路网关)
协议解析CCSDS 133.0-B-2 空间包 6B 主头 + ECSS-E-ST-70-41C PUS 10B TC 次头
服务注册ST[01] 请求验证(自动应答)· ST[17] 测试 · ST[20] 参数管理(2 个参数)
模糊测试协议模型pus_net.xml(空间包主头 + PUS 次头 + ST[20,3] 应用数据,12 字段,字段级建模 + 结构保护)
引擎配置--NetGen --engine pro -i 20000,process-alive 进程监控
测试结果两轮 fuzz 均触发崩溃(迭代 61 / 迭代 22),崩溃包自动落盘 crash_61.bin / crash_22.bin
复现与验证--replay 回放MONITOR: target process crashed (reproduced) ✓(验证帧已保存)
漏洞验证单条合法帧(64 字节超长参数值)远程打崩目标(载荷细节不公开)
崩溃类型0xC0000005 STATUS_ACCESS_VIOLATION(返回地址被覆盖)

3. 产品介绍 — CCSDS Space Packet / ECSS PUS

这不是玩具 —— 这是实际广泛应用的航天基础设施底层协议。 CCSDS 空间包协议与 ECSS PUS 是星地链路的"标准语":空间包的 6 字节主头把地球上每一个 航天器的遥测(TM)/遥控(TC)数据组织成统一格式,PUS 在其上定义标准化的业务服务 (请求验证、遥测采集、事件报告、测试、参数管理等),贯穿卫星研制、集成测试、发射与在轨运行全寿命周期。 全球 1000+ 空间任务 采用 CCSDS 标准,其链路安全直接关系 真实航天系统 的运行。

CCSDS(Consultative Committee for Space Data Systems,空间数据系统咨询委员会)1982 年由美国 NASA 发起成立,是航天通信与数据系统领域的国际多边标准组织, 制定 CCSDS 133.0-B-2《空间包协议》(2020-06 蓝皮书)等 61+ 项标准,同时作为 ISO TC20/SC13 工作组运行。

ECSS(European Cooperation for Space Standardization,欧洲空间标准化合作组织)欧洲空间局 ESA、欧洲各国航天局与欧洲航天工业协会(空客防务与航天、泰雷兹阿莱尼亚航天等)共建, 秘书处设于 ESA-ESTEC(荷兰诺德韦克)。其 ECSS-E-ST-70-41C《PUS 包利用标准》(2016-04) 定义了航天器星地监控所需的标准化服务类型与包结构,是欧洲航天任务的强制标准。

开源实现:本测试选用的 EmbeddedSpacePacketEmbeddedPUS 由 GitHub 组织 OpenSpaceCode 开发(Apache-2.0 许可),为面向小型学术航天任务的极简嵌入式 C99 实现: 零动态分配、无全局状态、100% 行/分支测试覆盖,代码防御良好 —— 本次漏洞位于网关应用层而非官方库

谁开发 · 哪个国家 · 谁使用(重点):

说明
标准发起国美国:CCSDS 1982 年由 NASA 发起(主席/秘书处长期由 NASA MSFC 承担); 欧洲:ECSS 由 ESA 主导,秘书处位于荷兰 ESA-ESTEC;国际:CCSDS 正式成员覆盖 11 个机构 / 26 个国家
正式成员机构(11)NASA(美国)· ESA(欧洲)· JAXA(日本)· CNSA(中国)· ROSCOSMOS(俄罗斯)· CNES(法国)· DLR(德国)· ASI(意大利)· CSA(加拿大)· UKSA(英国)· INPE(巴西)
观察员机构(28)ISRO(印度)· KARI(韩国)· NOAA(美国)· EUMETSAT(欧洲气象卫星组织)· CAST / CAS / CLTC(中国)· IKI / TsNIIMash(俄罗斯)· CSIRO(澳大利亚)· SUPARCO(巴基斯坦)· NICT(日本)等
产业参与141+ 商业伙伴(Commercial Associates),覆盖全球航天器制造与地面系统厂商; PUS 标准由 ESA + CNES + DLR + EUMETSAT + 空客(ASTRIUM)+ 泰雷兹(TAS)+ SPACEBEL 等联合制定
典型使用场景国际空间站等载人航天 · 深空探测(NASA/ESA 行星任务)· 对地观测与导航卫星(Copernicus/Galileo 等)· 商业小卫星与 CubeSat 社区(ESA PUS-C 培训面向成员国与 CubeSat 开发者)· 各国运载与测控地面系统
协议特点CCSDS SPP:6B 主头(版本 3b / 类型 1b / 次头标志 1b / APID 11b / 序列标志 2b / 序列计数 14b / 数据长度 16b), 协议级无 CRC/完整性校验(由下层链路或应用自选追加);PUS:ST[01] 请求验证 / ST[03] 遥测采集 / ST[05] 事件报告 / ST[17] 测试 / ST[20] 参数管理等标准服务

4. 漏洞发现(共 1 个 · 7884 pro 引擎两轮 fuzz 均命中)

漏洞 1(主要)· CWE-121 栈缓冲区溢出(Stack-based Buffer Overflow)

属性
漏洞位置PUS TC 上行链路网关应用层 setter_mission_name()char name[16]; strcpy(name, buf)
触发消息PUS TC[20,3] 参数设置(ST[20] 参数管理服务),PID=0x0101(MISSION_NAME)
根因协议参数值最长 64 字节,被无边界 strcpy 写入 16 字节 固定栈缓冲, 最多越界写约 49 字节,覆盖函数返回地址,函数返回时跳转到被污染地址
利用条件单条语法完全合法的 CCSDS 空间包 + PUS TC 帧(该协议族本就无完整性校验)
影响远程拒绝服务(进程崩溃,退出码 0xC0000005);在无栈保护 / 无 ASLR 的嵌入式地面站上可升级为任意代码执行
发现方式7884 NetGen pro 引擎 fuzz → 迭代 61 / 22 崩溃 → crash 落盘 → 构造合法帧 --replay 复现 → 授权环境确认
关键结论:CCSDS 空间包协议级不设 CRC / 完整性校验,PUS 只定义服务与包结构 —— 协议层无"合法性"防御可言。任何实现了 ST[20] 参数管理、却未在应用层校验参数值长度的地面站 / 星务软件, 均可被单条合法 TC[20,3] 帧远程打崩。

5. 漏洞验证说明(遵循负责任披露原则)

本漏洞已在授权隔离环境(127.0.0.1 本机)中完成验证:7884 NetGen pro 引擎两轮 fuzz 均触发目标崩溃 (迭代 61 / 22),经 --replay 回放稳定复现(成功率 100%),崩溃退出码 0xC0000005(STATUS_ACCESS_VIOLATION,返回地址被覆盖)。

依据负责任披露(Responsible Disclosure)原则,为降低被滥用的风险, 本报告不公开可实际利用的触发载荷(PoC 报文与利用脚本)。

本报告为内部安全研究自测结果,未向任何漏洞平台或维护方上报;如需复现与修复验证,请在授权环境中自行评估。