CVE-2026-34219libp2p-rust是libp2p网络栈的Rust语言官方实现。在0.49.4版本之前,其Gossipsub协议实现中存在一个严重的远程拒绝服务漏洞。攻击者可以通过发送特制的PRUNE控制消息,利用其中包含的恶意backoff参数,触发目标节点在处理心跳时的算术溢出。这一过程会导致目标节点发生Panic并崩溃。该漏洞利用门槛低,无需额外的用户交互或身份验证,仅需建立正常的协议对等连接即可被利用,严重影响系统的可用性。
漏洞的核心成因在于Rust libp2p的Gossipsub组件在处理对等点修剪(PRUNE)控制消息时,缺乏对关键时间参数的有效边界检查。攻击者可以向目标节点发送一个精心构造的PRUNE控制消息,该消息包含一个受控的、接近Instant类型可表示上限的backoff(退避)值。目标节点接收到该消息后,会无条件地接受此值并将其存储为一个时间戳对象。在随后的心跳维护过程中,代码尝试执行`backoff_time + slack`的加法运算以判断是否恢复连接。由于存储的backoff_time已经极大,加上slack值后,计算结果超过了系统时间戳的内部表示上限,从而引发了整数溢出。在Rust中,这会导致线程Panic并终止进程。攻击者无需经过复杂的认证流程,仅需建立标准的libp2p连接并发送恶意数据包,即可导致目标节点崩溃,造成严重的拒绝服务后果。