CVE-2025-61910CVE-2025-61910是NASA喷气推进实验室(JPL)开发的ION-DTN(Interplanetary Overlay Network,星际覆盖网络)软件中的一个高危拒绝服务漏洞。ION-DTN是NASA用于深空通信的延迟/中断容忍网络(Delay/Disruption Tolerant Networking, DTN)协议的开源实现,广泛应用于太空任务中的数据传输。该漏洞存在于ION-DTN 4.1.3s版本中,CVSS评分为7.5,属于高危级别。
漏洞的根本原因是ION-DTN在解析BPv7(Bundle Protocol version 7)数据包的扩展块(extension block)时,由于对块长度字段的处理不当,导致无符号整数到有符号整数的隐式转换错误。当攻击者构造一个包含畸形扩展块的BPv7 bundle时,ION-DTN会尝试分配一个异常巨大的内存块,最终导致接收线程崩溃并终止服务。
该漏洞可被远程未认证攻击者利用,攻击者只需通过网络发送一个精心构造的恶意bundle,即可导致目标ION-DTN节点的服务中断。由于DTN网络通常用于关键的太空通信基础设施,此类拒绝服务攻击可能严重影响深空任务的正常执行。截至漏洞披露时,官方尚未发布任何已知修复版本,受影响的系统仍处于暴露状态。
该漏洞的技术根源在于ION-DTN 4.1.3s中`bpv7/library/bei.c`文件的第764行附近的代码逻辑。具体而言:
1. **畸形扩展块构造**:攻击者构造一个BPv7 bundle,其扩展块以字节序列`0x85070201005bbb0e20b4ea001a000927c0...`开头。第一个字节`0x85`表示这是一个包含5个元素的CBOR数组,其中前4个元素为数字(`0x07`、`0x02`、`0x01`、`0x00`),第5个元素为长度为27的字节字符串。
2. **整数转换溢出**:在解析该扩展块时,ION从CBOR数据中获取`blockLength`(无符号32位整数),随后将其传递给有符号32位整数变量`blkSize`。由于`blockLength`的值较大(如0x5bbb0e20),转换后`blkSize`变为负数-369092043。
3. **内存分配异常**:`blkSize`随后被传递给`MTAKE(blkSize)`宏。在64位系统中,负数`blkSize`被隐式转换为64位无符号值,产生一个极其巨大的数值(如接近2^64),导致系统尝试分配不切实际的内存量。
4. **拒绝服务触发**:由于无法满足如此巨大的内存分配请求,系统报错并导致接收线程终止,从而实现拒绝服务攻击。
值得注意的是,如果将第5个元素(字节字符串)替换为数字,则该漏洞不再被触发,这表明问题出在对第5个元素的处理逻辑上。