CVE-2026-22697CryptoLib是一款基于CCSDS空间数据链路安全协议-扩展程序(SDLS-EP)的纯软件加密解决方案,用于保护运行核心飞行系统(cFS)的航天器与地面站之间的通信安全。在1.4.3版本之前,CryptoLib的KMC加密服务集成存在堆缓冲区溢出漏洞。该漏洞源于Base64解码器在处理KMC服务返回的Base64编码密文/明文字段时,使用预期输出长度(len_data_out)来分配目标缓冲区大小,但Base64解码器根据实际Base64输入长度写入输出,且不强制执行任何目标大小限制。当KMC JSON响应中包含超长的Base64字符串时,会导致堆上的越界写入,可能造成进程崩溃,并在特定条件下可能导致代码执行。此漏洞已通过版本1.4.3进行修复。
漏洞的根本原因在于Base64解码过程中的长度计算与缓冲区分配逻辑不一致。具体来说:1) KMC服务返回的JSON响应中包含Base64编码的密文或明文字段;2) CryptoLib使用预期输出长度(len_data_out)来分配堆缓冲区,该值通常小于实际的Base64编码数据长度;3) Base64解码器根据实际输入的Base64字符串长度计算输出大小并执行写入操作;4) 由于缺乏边界检查,写入操作会超出预设缓冲区边界。攻击者可通过构造包含超长Base64字符串的恶意KMC响应来触发此漏洞。解码过程中的越界写入可能导致相邻堆内存被破坏,引发进程崩溃。更严重的是,在满足特定内存布局条件时,攻击者可能利用此漏洞实现任意代码执行。