CVE-2026-22027CryptoLib是一款NASA开发的软件库,实现了CCSDS空间数据链路安全协议-扩展程序(SDLS-EP),用于保护航天器与地面站之间的通信安全。在1.4.3版本之前,convert_hexstring_to_byte_array()函数在MariaDB SA接口中将解码后的字节写入调用者提供的缓冲区时,缺少容量检查。当从数据库导入SA字段(如IV、ARSN、ABM)时,数据库中格式错误或过大的十六进制字符串可能会溢出目标缓冲区,导致堆内存损坏。该漏洞需要攻击者具备数据库写入权限或能够篡改数据库内容,攻击复杂度较低,且无需用户交互即可触发。成功利用此漏洞可能导致数据完整性破坏和可用性影响,可能造成应用程序崩溃或执行任意操作。
漏洞根源在于CryptoLib的convert_hexstring_to_byte_array()函数缺乏边界检查机制。该函数接收一个十六进制字符串和目标缓冲区指针,将十六进制字符串解码为字节数组后直接写入缓冲区。在MariaDB SA接口调用此函数时,如果数据库中存储的十六进制字符串长度超过了目标缓冲区的实际容量,解码后的数据将超出缓冲区边界写入相邻堆内存区域。攻击者可以通过在数据库中插入精心构造的超长十六进制字符串(如IV、ARSN或ABM字段)来触发堆缓冲区溢出。漏洞利用需要满足以下条件:1) 攻击者需具备数据库写入权限或能篡改数据库内容;2) 目标系统需使用MariaDB SA接口导入SA字段;3) 目标缓冲区大小与输入数据长度不匹配。修复后的版本1.4.3增加了容量检查逻辑,在写入前验证数据长度是否超出缓冲区大小。