CVE-2026-33184nimiq/core-rs-albatross 是基于 Albatross 共识算法的 Nimiq 权益证明协议的 Rust 实现。在 1.3.0 版本之前,该组件存在安全漏洞。漏洞原因是发现处理器在握手过程中接受了对等方控制的限制值并未经修改直接存储。当攻击者将 limit 设置为 0 时,初始握手确认路径会返回 0 个联系人,使会话看起来正常。但在会话建立后的周期性更新路径中,代码计算 `self.peer_list_limit.unwrap() as usize - 1`,由于 limit 为 0,导致整数下溢为 `usize::MAX`,进而触发内存分配溢出 panic,导致服务崩溃。该问题已在 1.3.0 版本中修复。
该漏洞是一个典型的整数下溢导致的拒绝服务漏洞。受影响的产品在处理 P2P 握手时,未对参数 `limit` 进行边界检查。攻击者可以构造一个恶意的握手请求,将 `limit` 字段设为 0。受害节点接收后,会将其存储。当会话状态变为 Established 并执行周期性任务时,代码尝试计算 `limit - 1`。在 Rust 语言中,`usize` 是无符号整数类型,`0 - 1` 不会变成 -1,而是回绕为该类型的最大值 `usize::MAX`(在 64 位系统上是一个非常大的数)。随后,程序调用 `Vec::with_capacity(amount)` 尝试分配该大小的内存,这显然超出了系统可用的内存范围,导致容量溢出并引发 `panic`,从而强制终止节点进程,导致拒绝服务。