CVE-2025-64096CryptoLib是NASA提供的软件解决方案,实现了CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP)协议,用于保障航天器飞行系统(cFS)与地面站之间的通信安全。该漏洞存在于1.4.2之前版本的Crypto_Key_update()函数(crypto_key_mgmt.c)中,由于缺少边界检查,远程攻击者可以通过构造带有伪造长度字段的TLV数据包来触发栈缓冲区溢出。攻击者利用pdu_len字段计算密钥数量,该值可能超出静态数组kblk[98]的大小限制,导致越界写入,进而可能造成内存损坏和远程代码执行。此漏洞影响使用CryptoLib进行安全通信的航天器系统,危害性极高。
漏洞位于CryptoLib的crypto_key_mgmt.c文件中的Crypto_Key_update()函数。该函数在处理TLV(Type-Length-Value)格式的数据包时,直接使用数据包中的pdu_len字段计算需要处理的密钥数量,而未进行边界验证。静态数组kblk的大小为98个元素,当攻击者构造的pdu_len值大于98时,函数会将数据写入数组边界之外的栈内存区域,形成栈缓冲区溢出。具体攻击过程:攻击者发送包含恶意pdu_len字段的TLV数据包,触发Crypto_Key_update()函数处理,该函数根据伪造的pdu_len值计算密钥索引,使用该索引访问kblk数组,导致越界写入。由于栈上通常包含函数返回地址等关键数据,攻击者可通过精心构造溢出数据覆盖这些地址,实现代码执行。漏洞已在1.4.2版本中通过增加边界检查修复。