IPBUF安全漏洞报告
English
CVE-2026-40094 CVSS 4.3 中危

CVE-2026-40094 Nimiq Blockchain空地址列表致崩溃漏洞

披露日期: 2026-05-20

漏洞信息

漏洞编号
CVE-2026-40094
漏洞类型
拒绝服务
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Nimiq Blockchain (core-rs-albatross)

相关标签

DoS拒绝服务NimiqBlockchainRustPanicCVE-2026-40094Libp2p

漏洞概述

Nimiq Blockchain的Rust实现(core-rs-albatross)1.3.0及之前版本存在安全漏洞。该漏洞源于network-libp2p发现机制接受来自不可信对等方的已签名PeerContact更新,且未强制验证地址列表非空。攻击者可利用空地址列表构造恶意PeerContact,导致节点在调用get_address_book(RPC/Web客户端)时触发panic并崩溃,从而造成拒绝服务。

技术细节

该漏洞位于Nimiq Rust实现的`network-libp2p`组件中。虽然`PeerContact`结构体在定义时允许地址列表为空,但`PeerContactBook::known_peers`方法在构建地址簿时,使用`addresses.first().expect("every peer should have at least one address")`强行断言列表非空。攻击者利用此逻辑缺陷,向目标节点发送一个经过签名但`addresses`字段为空的`PeerContact`。目标节点会将此恶意记录存储在通讯簿中。一旦管理员或用户通过RPC或Web客户端调用`get_address_book`接口,程序尝试读取第一个地址时因列表为空而触发`expect`断言失败,导致发生panic。根据Panic设置,这会导致节点进程或RPC任务崩溃,中断服务可用性。

攻击链分析

STEP 1
步骤1
攻击者扫描网络并发现运行Nimiq Blockchain 1.3.0或更早版本的节点。
STEP 2
步骤2
攻击者构造一个经过签名但addresses字段为空(addresses=[])的恶意PeerContact数据结构。
STEP 3
步骤3
攻击者利用libp2p协议将此恶意PeerContact发送给目标节点。
STEP 4
步骤4
目标节点接收并验证签名(验证通过),将该恶意记录存储在本地的PeerContactBook中。
STEP 5
步骤5
当节点接收到RPC或Web客户端的get_address_book请求时,尝试读取地址列表。
STEP 6
步骤6
由于地址列表为空,代码中的expect断言触发panic,导致节点或RPC任务崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import json # Conceptual PoC for CVE-2026-40094 # This script demonstrates the structure of the malicious PeerContact payload. # In a real scenario, this would be sent via the libp2p protocol to a vulnerable node. def generate_malicious_peer_contact(): # Construct a PeerContact object with an empty addresses list malicious_payload = { "public_key": "<attacker_public_key>", "signature": "<attacker_signature>", "addresses": [], # The vulnerability trigger: Empty list "timestamp": 1716000000 } return json.dumps(malicious_payload) if __name__ == "__main__": print("[+] Generating malicious PeerContact payload...") payload = generate_malicious_peer_contact() print(f"[+] Payload: {payload}") print("[+] Send this payload to a vulnerable Nimiq node (v1.3.0 or earlier) via libp2p.") print("[+] Triggering get_address_book via RPC will cause the node to panic/crash.")

影响范围

nimiq-blockchain <= 1.3.0

防御指南

临时缓解措施
建议立即升级至1.4.0版本以修复此漏洞。如果无法立即升级,应严格限制对节点RPC接口的访问,防止攻击者或自动化脚本触发get_address_book调用,从而避免节点崩溃。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表