2026 年 7 月,NLnet Labs 开源的权威 DNS 服务器 NSD(Name Server Daemon)一次性披露了四个 CVE。其中最致命的一击并非来自外部查询路径,而是来自区域传输(zone transfer)这条本应"受信任"的内部同步链路——一个 uint16_t 整数溢出让攻击者可以在堆上写入最多 65509 字节可控数据,而一个 TLS 认证条件判断的短路缺陷让证书校验形同虚设。二者叠加,构成了"恶意主服务器 → AXFR 投毒 → 堆溢出 RCE / 未授权区域传输"的完整攻击链。
本文从 NSD 架构入手,逐个拆解这四个漏洞的根因、补丁与组合利用逻辑。
一、背景:权威 DNS 的信任模型
NSD 是与 BIND、Knot DNS 并列的主流开源权威 DNS 服务器,约 8 万行 C 代码。与递归解析器(如 Unbound)不同,权威服务器只回答自己持有区域的查询,不替客户端向其他服务器递归。其安全模型建立在两个边界上:
- 外部边界:来自任意客户端的 DNS 查询(UDP/TCP 53、DoT 853)。
- 内部边界:区域传输(AXFR/IXFR),用于主从服务器间同步区域数据。
传统安全建设往往把注意力放在外部边界,认为区域传输走的是管理网络、受 TSIG 或 ACL 保护。但 NSD 本轮漏洞恰恰揭示了:从不可信主服务器同步区域数据时,权威服务器会把对端返回的每一条 RR 当作"可信输入"解析——一旦解析器存在内存破坏缺陷,区域传输就从数据同步通道变成了 RCE 入口。
四个漏洞的概览如下:
| CVE | 类型 | CVSS | 位置 | 利用前提 |
|---|---|---|---|---|
| CVE-2026-12244 | 堆溢出 | 8.8 | rdata.c read_svcb_rdata() |
控制区域主服务器,AXFR 投毒 |
| CVE-2026-12490 | 认证绕过 | 高危 | options.c acl_check_incoming() |
经 TCP 53 发起 AXFR,未设 tls-auth-xfr-only |
| CVE-2026-12245 | UAF 崩溃 | 中危 | server.c handle_tls_writing() |
DoT 端口发送查询后断连 |
| CVE-2026-12246 | 栈溢出 | 中危 | APL RR 处理 | 特制 APL RR,区域写盘时触发 |
二、NSD 架构:多进程模型与攻击面
NSD 采用经典的多进程隔离模型,将不同职责分配到独立进程,通过共享内存与管道通信:
┌──────────────────────────────────────────────┐
│ NSD 父进程 (main) │
│ 读取 nsd.conf / 管理信号 / 监督子进程 │
└───────────┬──────────────────┬────────────────┘
│ fork │ fork
┌────────────▼─────────┐ ┌────▼──────────────────┐
│ 子服务进程 (server) │ │ xfrd 进程 (区域传输) │
│ │ │ │
│ UDP/TCP 53 查询处理 │ │ AXFR/IXFR 拉取/推送 │
│ DoT 853 (TLS) │ │ TSIG / TLS 认证 │
│ RR 解析 rdata.c │ │ 写区域文件/通知 server│
│ ACL options.c │ │ │
└──────────┬───────────┘ └───────────┬───────────┘
│ │
└────────── 共享内存区域 ─────┘
(区域数据 / 统计)
关键源文件与职责:
| 文件 | 行数(约) | 职责 | 本轮关联漏洞 |
|---|---|---|---|
server.c |
— | 查询处理、TCP/TLS 连接管理 | CVE-2026-12245 (UAF) |
xfrd.c |
— | 区域传输状态机、主从协商 | 攻击链入口 |
rdata.c |
3300 | RR(资源记录)解析与编码 | CVE-2026-12244 (SVCB) |
options.c |
— | 配置解析、ACL 访问控制 | CVE-2026-12490 (认证绕过) |
网络入口分布:
客户端 NSD 主机
┌────────┐ UDP/TCP 53 ┌─────────────────────────────┐
│ 查询者 │───────────────▶│ server 子进程 │
└────────┘ DoT 853(TLS) │ └─ rdata.c 解析 SVCB/HTTPS │
│ │
┌────────┐ AXFR/IXFR │ xfrd 进程 │
│ 从服务器│◀──────────────│ └─ 从主服务器拉取区域 │
└────────┘ (TSIG/TLS) │ └─ 调用 rdata.c 解析每条 RR │ ◀─ 溢出发生处
└─────────────────────────────┘
理解这张图是理解后续攻击链的关键:rdata.c 同时服务于外部查询解析与区域传输解析,因此一个 RR 解析缺陷既可以被外部查询触发,更可以被区域传输触发——而后者往往绕过了外部查询的速率限制与过滤。
三、CVE-2026-12244:SVCB 堆溢出(CVSS 8.8)
3.1 SVCB RR 格式回顾
SVCB(Service Binding)记录由 RFC 9460 定义,用于将服务端点与域名绑定,是 HTTPS 记录的通用形式。其 RDATA 结构为:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SvcPriority (2 字节) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ TargetName (压缩域名) /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ SvcParams (变长键值对,可至 ~64KB) /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SvcParams 是一组 TLV(Type-Length-Value)键值对,整体长度受 DNS 报文与 RR rdlength(uint16,最大 65535)约束。正因为 rdlength 是 16 位,为后续的整数溢出埋下伏笔。
3.2 漏洞根因:uint16_t 截断
漏洞位于 rdata.c 约 3282 行的 read_svcb_rdata() 函数。核心问题是用于累加 SVCB 参数区段长度的局部变量 size 被声明为 uint16_t:
// rdata.c, 约 line 3282 (修复前)
static rdata_atom_type *
read_svcb_rdata(struct domain_table *domains, uint16_t rdlength, ...)
{
uint16_t length = 2, svcparams_length = 0;
uint16_t size; // ← 漏洞根因:16 位宽度无法承载真实大小
// ...
// 计算 size:累加 SvcPriority(2) + TargetName + SvcParams
// 当 rdata 接近 65512 字节时,加上 RR 头部开销后总长超过 65535
// uint16_t 发生回绕,size 变成一个极小的值
// ...
// 基于【回绕后的 size】分配堆缓冲区
buffer = region_alloc(region, size);
// 但后续写入使用【真实大小】,造成大规模堆溢出
memcpy(buffer, ..., svcparams_length);
}
溢出的数学推导如下:
DNS 报文最大载荷约 65535 字节
SVCB RR 的 rdata 最大可达约 65512 字节
↓
size = SvcPriority(2) + TargetName + SvcParams(65512) + 头部开销
≈ 65512 + 23 + ... ← 真实值 > 65535
↓
(uint16_t) size → 回绕为极小值 (例如几十字节)
↓
region_alloc(size) ← 仅分配极小堆块
↓
写入 65512 字节 SvcParams ← 越界写入最多 65509 字节
↓
堆元数据被覆盖 → 任意写原语 / RCE
最大溢出量约 65509 字节,且写入内容来自攻击者构造的 SVCB SvcParams,完全可控。这是一个教科书级的"分配用窄类型、写入用宽真实值"的不一致缺陷。
3.3 触发条件
关键在于触发路径。read_svcb_rdata() 在两条路径上被调用:
- 外部查询路径:客户端发送含 SVCB RR 的响应——但权威服务器通常不解析外部响应,此路径难以直接触发。
- 区域传输路径:xfrd 进程从主服务器拉取 AXFR,逐条解析返回的 RR——这是真实可利用路径。
触发条件:攻击者控制区域的主服务器(或中间人篡改 AXFR),在 AXFR 响应中塞入一条 rdlength 约为 65512 字节的特制 SVCB RR。从服务器在解析该 RR 时即触发堆溢出。
攻击者控制的"主服务器" 受害从服务器 (NSD)
┌────────────────────┐ ┌──────────────────────┐
│ 恶意区域文件 │ │ xfrd: 发起 AXFR │
│ evil.com SVCB ... │◄────────│ dig AXFR evil.com │
│ (rdata=65512) │ AXFR │ │
└────────────────────┘ 响应 │ rdata.c: 解析 SVCB │
│ size 回绕 → alloc 极小│
│ 写入 65509B → 堆溢出 │
│ → RCE │
└──────────────────────┘
3.4 补丁分析
修复极为精简——一行类型提升:
--- a/rdata.c
+++ b/rdata.c
@@ static rdata_atom_type *
read_svcb_rdata(struct domain_table *domains, uint16_t rdlength, ...)
{
uint16_t length = 2, svcparams_length = 0;
- uint16_t size;
+ size_t size;
...
将 size 从 uint16_t 提升为 size_t(64 位系统上为 8 字节),从根本上消除回绕。这种"窄类型承载宽运算结果"的缺陷在 C 代码审计中极为常见,值得作为静态扫描规则:任何参与 region_alloc/malloc 长度计算的累加变量,其类型宽度必须大于被累加字段的最大可能值。
四、CVE-2026-12490:区域传输认证绕过
如果说 12244 是内存破坏,12490 则是逻辑缺陷——它让管理员精心配置的 TLS 客户端证书认证在特定路径下完全失效。
4.1 NSD 的区域传输认证模型
NSD 支持三种区域传输认证机制:
| 机制 | 配置项 | 适用场景 |
|---|---|---|
| IP ACL | provide-xfr: <ip> NOKEY |
限制来源 IP |
| TSIG | provide-xfr: <ip> <tsig-name> |
共享密钥签名 |
| TLS 客户端证书 | tls-auth: ... + provide-xfr: <ip> <tls-auth-name> |
DoT 853 证书校验 |
当配置了 TLS 认证时,期望的行为是:只有携带正确客户端证书的连接才被允许执行 AXFR。关键开关 tls-auth-xfr-only(默认 no)决定是否强制所有区域传输走 TLS。
4.2 漏洞根因:条件短路
漏洞位于 options.c 的 acl_check_incoming() 函数。问题出在校验 TLS 证书的条件判断:
// options.c, acl_check_incoming() (修复前)
if (acl->tls_auth_name && q->tls_auth) { // ← 漏洞条件
if (acl->tls_auth_options && acl->tls_auth_options->auth_domain_name) {
if (!acl_tls_hostname_matches(q->tls_auth, ...)) {
// 证书不匹配,拒绝
}
}
}
致命之处在 && q->tls_auth 这个与条件。其逻辑是"只有当 ACL 要求 TLS 认证 且 当前连接确实建立了 TLS(q->tls_auth 非空)时,才执行证书校验"。
反过来看:如果攻击者通过普通 TCP 端口 53(或未启用客户端证书的普通 tls-port)发起 AXFR,q->tls_auth 为 NULL,整个 if 块被跳过——证书验证逻辑根本不执行。此时只要 IP ACL 匹配(或未限制 IP),区域传输即被放行。
正常 TLS 路径 (期望): 攻击路径 (实际绕过):
┌──────────┐ DoT 853 + 客户端证书 ┌───────┐ ┌──────────┐ TCP 53 (无证书) ┌───────┐
│ 从服务器 │──────────────────────▶│ NSD │ │ 攻击者 │─────────────────▶│ NSD │
└──────────┘ └───────┘ └──────────┘ └───────┘
│ q->tls_auth = 证书上下文 │ │ q->tls_auth = NULL │
│ ↓ │ │ ↓ │
│ acl->tls_auth_name && q->tls_auth = 真 │ acl->tls_auth_name && q->tls_auth = 假
│ ↓ 执行证书匹配 │ │ ↓ 跳过整个证书校验块 │
│ 匹配 → 允许 AXFR │ │ IP 命中 → 允许 AXFR (无证书!) │
│ │
期望行为 漏洞行为(绕过)
这是一个典型的"检查存在性而非缺失性"缺陷:代码把 q->tls_auth 的存在当作"应该校验"的前提,而非"必须存在否则拒绝"的强制条件。正确的逻辑应当是——只要 ACL 要求了 TLS 认证,连接没有提供 TLS 身份就应直接拒绝。
4.3 利用前提
tls-auth-xfr-only未设为yes(默认即不是 yes),允许 TCP 53 上的区域传输。- 攻击者源 IP 未被 IP ACL 拒绝(例如管理员只配了 TLS 认证、依赖证书而非 IP 限制)。
4.4 补丁分析
补丁新增了对"要求 TLS 但未提供 TLS"的拒绝逻辑,并修正了后续条件:
// options.c, acl_check_incoming() (修复后)
// 新增:ACL 要求 TLS 认证,但连接未提供 TLS 身份 → 跳过此 ACL
if (acl->tls_auth_name && !q->tls_auth) {
number++;
acl = acl->next;
continue; // 该 ACL 不匹配,继续检查下一条
}
// 修正:不再要求 && q->tls_auth,因为上面已保证 q->tls_auth 非空
if (acl->tls_auth_name) {
if (acl->tls_auth_options && acl->tls_auth_options->auth_domain_name) {
if (!acl_tls_hostname_matches(q->tls_auth, ...)) {
// 证书不匹配,拒绝
}
}
}
修复思路从"有 TLS 才校验"转为"无 TLS 即拒绝",将缺失的 TLS 身份视为拒绝条件而非跳过校验的理由。这是认证类缺陷修复的通用范式:认证要求必须是强制前置条件,而非可选附加项。
五、CVE-2026-12245:DoT UAF 崩溃
该漏洞位于 server.c 的 handle_tls_writing() 函数,是一个 Use-After-Free。
5.1 根因
在处理 DoT(DNS-over-TLS)连接的写响应流程中,资源释放与日志记录的顺序错误:
// server.c, handle_tls_writing() (修复前, 简化)
static void handle_tls_writing(struct nsd *nsd, struct tcp_handler_data *data) {
// ... TLS 写入逻辑 ...
cleanup_tcp_handler(data); // ← 释放 data 及 data->query
// 以下日志代码仍访问已释放的 data->query ← UAF
log_msg(LOG_INFO, "responded query %u", (unsigned)data->query->id);
}
cleanup_tcp_handler(data) 释放了 data 及其成员 query,但随后的日志语句仍解引用 data->query,构成 UAF。在多数情况下这只是一次崩溃(DoS),但在特定堆布局下可能被提升为更严重的利用。
5.2 触发方式
攻击者建立一个到 DoT 端口 853 的 TLS 连接,发送一个 DNS 查询,在读取响应之前立即关闭连接(TCP RST / FIN)。这会驱动 handle_tls_writing 走入错误处理分支并触发上述释放-使用顺序。
5.3 补丁
- cleanup_tcp_handler(data);
- log_msg(LOG_INFO, "responded query %u", (unsigned)data->query->id);
+ log_msg(LOG_INFO, "responded query %u", (unsigned)data->query->id);
+ cleanup_tcp_handler(data);
将 cleanup_tcp_handler 调用移到日志代码之后,确保日志访问发生在释放之前。修复虽简单,却揭示了 TLS 写路径错误处理中资源生命周期管理的脆弱性——任何在 cleanup 之后访问 handler 成员的代码都是潜在 UAF。
六、CVE-2026-12246:APL RR 栈溢出
APL(Address Prefix List,RFC 3123)记录用于表达地址前缀列表。该漏洞与 SVCB 堆溢出异曲同工,但发生在区域文件写盘路径,且为栈溢出。
6.1 根因
处理特制 APL RR 时,adflength(地址族数据长度)字段被设为大于该地址族允许的最大长度(例如 IPv4 地址族却声明了远超 4 字节的长度)。当 xfrd 将区域数据写盘时,未对 adflength 做边界校验,直接拷贝到栈上定长缓冲区,造成栈溢出。
- 最大溢出:约 111 字节。
- 触发路径:与 12244 类似,需通过区域传输投毒,或由管理员加载恶意区域文件。
栈溢出虽然可写量较小(111 字节),但栈上通常紧邻返回地址与帧指针,足以用于控制流劫持。该漏洞进一步证明:NSD 的 RR 解析/序列化路径普遍缺乏对变长字段与声明长度一致性的校验。
七、PoC 构造思路
以下为概念性构造思路,仅用于理解漏洞机理,不含可直接运行的攻击代码。
7.1 CVE-2026-12244:AXFR 投毒堆溢出
步骤 1: 在攻击者控制的"主服务器"上,构造恶意区域文件,
其中包含一条 SVCB RR,其 SvcParams 填充至约 65512 字节
(使用合法的 TLV 键值对填充,确保整体 rdlength 接近上限)
步骤 2: 在受害从服务器 nsd.conf 中,将 evil.com 的 master 指向攻击者:
zone:
name: "evil.com"
zonefile: "evil.com.zone"
request-xfr: AXFR <attacker-ip> NOKEY
步骤 3: 触发区域传输 (或等待 xfrd 定时拉取):
# 在从服务器上
nsd-control reload # 或等待 zone refresh
步骤 4: xfrd 解析 AXFR 响应中的巨型 SVCB RR
→ read_svcb_rdata() 中 size 回绕
→ 极小堆分配 + 65509B 越界写 → 堆破坏 / RCE
7.2 CVE-2026-12490:未授权区域传输
# 前提: 目标 NSD 配置了 TLS 认证的 provide-xfr,但未设 tls-auth-xfr-only: yes
# 且未通过 IP ACL 拒绝攻击者 IP
# 通过普通 TCP 53 端口发起 AXFR,不提供任何客户端证书
dig @target-ns evil.com AXFR +tcp
# 若漏洞存在且 IP 未被拒,将直接返回完整区域数据
# (期望: 应要求 TLS 客户端证书; 实际: 跳过证书校验直接放行)
7.3 CVE-2026-12245:DoT UAF 崩溃
# 1. 与 DoT 端口 853 建立 TLS 连接 (openssl s_client)
# 2. 发送一个标准 DNS 查询
# 3. 在读取响应前立即关闭连接 (发送 FIN/RST)
# 期望: NSD 正常清理连接; 实际: handle_tls_writing 走错误分支 → UAF → 进程崩溃
八、攻击链组合
CVE-2026-12244 与 CVE-2026-12490 可构成两条互补的攻击链,分别面向"代码执行"与"数据窃取/投毒"两个目标:
攻击者控制的恶意主服务器
│
┌─────────┴─────────┐
│ │
路径 A: RCE 路径 B: 数据窃取
│ │
┌───────▼────────┐ ┌───────▼────────┐
│ AXFR 投毒 │ │ 直接向从服务器 │
│ 含巨型 SVCB RR │ │ TCP 53 发 AXFR │
└───────┬────────┘ └───────┬────────┘
│ │
┌───────▼────────┐ ┌───────▼────────┐
│ CVE-2026-12244 │ │ CVE-2026-12490 │
│ 堆溢出 65509B │ │ 认证绕过 │
└───────┬────────┘ └───────┬────────┘
│ │
┌───────▼────────┐ ┌───────▼────────┐
│ 堆元数据覆盖 │ │ 拉取完整区域 │
│ → 任意写原语 │ │ → DNS 记录泄露 │
│ → RCE │ │ → 后续投毒下级 │
└────────────────┘ └────────────────┘
两条链的协同价值在于:路径 B(认证绕过)让攻击者以零内存破坏成本读取区域数据,获取内网拓扑、服务端点(SVCB/HTTPS 记录直接暴露内部服务地址)等敏感信息;路径 A(堆溢出)则在对端不可信或可投毒时实现 RCE,拿下服务器本体。此外,一旦通过 12244 在从服务器上获得 RCE,攻击者可篡改该服务器对外提供的权威数据,进一步投毒其下游递归解析器,形成 DNS 层面的持久化。
值得注意的是,CVE-2026-12490 的认证绕过还降低了 12244 的利用门槛——攻击者无需 TSIG 共享密钥,只要能影响区域的主从关系即可投毒。
九、防御方案
9.1 升级到修复版本
# 从源码编译 (推荐)
wget https://www.nlnetlabs.nl/downloads/nsd/nsd-4.14.3.tar.gz
tar xzf nsd-4.14.3.tar.gz && cd nsd-4.14.3
./configure --with-ssl --enable-tls
make && sudo make install
# 验证版本
nsd -v
# 应输出 NSD version 4.14.3
# 重启服务
sudo systemctl restart nsd
9.2 配置加固
核心是启用 tls-auth-xfr-only 强制区域传输走 TLS,并配合 TSIG 双重认证:
# /etc/nsd/nsd.conf
server:
# 强制所有区域传输走 TLS,杜绝 TCP 53 上的认证绕过
tls-auth-xfr-only: yes
# 关闭未使用的服务端口,最小化攻击面
# 如不需要 DoT,注释掉 tls-service-key 等
# 定义 TLS 客户端证书认证 (双向 mTLS)
tls-auth:
name: "xfr-mtls"
auth-domain-name: "xfr-slave.example.com"
client-cert: "/etc/nsd/certs/slave.crt"
client-key: "/etc/nsd/certs/slave.key"
# 定义 TSIG 密钥 (双重认证)
key:
name: "tsig-xfr"
algorithm: hmac-sha256
secret: "<base64-encoded-shared-secret>"
# 区域配置: 同时启用 IP ACL + TSIG + TLS 认证 (纵深防御)
zone:
name: "example.com"
zonefile: "example.com.zone"
# 从服务器拉取时: TSIG + TLS 双认证
request-xfr: AXFR <master-ip> "tsig-xfr" tls-auth "xfr-mtls"
# 提供给从服务器时: 同样要求双认证
provide-xfr: <slave-ip> "tsig-xfr" tls-auth "xfr-mtls"
9.3 纵深防御清单
| 防御层 | 措施 | 阻断的漏洞 |
|---|---|---|
| 版本 | 升级 NSD ≥ 4.14.3 | 全部四个 |
| 配置 | tls-auth-xfr-only: yes |
CVE-2026-12490 |
| 认证 | 区域传输强制 TSIG + mTLS 双因子 | CVE-2026-12490 / 投毒链 |
| 网络 | 区域传输端口仅对管理网段开放,与查询端口分离 | CVE-2026-12245 / 攻击链 |
| 监控 | 对 AXFR 请求源 IP、TLS 证书不匹配事件告警 | CVE-2026-12490 |
| 供应链 | 仅从可信上游同步区域,校验主服务器身份 | CVE-2026-12244 / 12246 |
审计时可用 grep -i tls-auth-xfr-only /etc/nsd/nsd.conf 确认开关、grep -E "provide-xfr|request-xfr" /etc/nsd/nsd.conf 核对所有区域是否同时具备 TSIG 与 tls-auth,并用 nsd -v 确认版本已离开 4.14.0–4.14.2 受影响区间。
十、时间线
| 时间 | 事件 |
|---|---|
| 2025-09-03 | NSD 4.13.0 引入 SVCB/HTTPS RR 支持(引入脆弱代码面) |
| 2026-06-22 | Qifan Zhang 将四个 CVE 报告至 Red Hat / NLnet Labs |
| 2026-06-24 | NLnet Labs 提交修复补丁 |
| 2026-06-25 | NSD 4.14.3 安全版本发布 |
| 2026-07 | 漏洞详情公开披露 |
从引入到修复约 9 个月,从报告到修复仅 3 天,体现了负责任的披露协调。值得注意的是,CVE-2026-12244 的脆弱代码随 SVCB 支持一同在 4.13.0 引入——新协议支持往往是新增攻击面的高发区,RR 解析器的新增代码应作为安全审计的重点。
十一、总结
NSD 本轮四个漏洞从不同维度揭示了权威 DNS 服务器的安全薄弱点:CVE-2026-12244(SVCB 堆溢出) 是经典的窄类型整数溢出,一行 uint16_t → size_t 的修复背后是 65509 字节可控堆写,警示 RR 解析路径的累加长度必须用足够宽的类型承载;CVE-2026-12490(认证绕过) 是逻辑缺陷,把"身份存在性"误用为"是否校验"的前提,警示认证要求必须是强制前置条件;CVE-2026-12245(UAF) 与 CVE-2026-12246(APL 栈溢出) 则分别暴露了 TLS 错误路径的资源生命周期管理与 RR 序列化路径的长度一致性校验缺失。
更深层的问题在于信任模型:权威服务器在区域传输时把对端返回的 RR 当作可信输入解析,使区域传输从"数据同步"变为"代码执行入口"。防御上,除升级与配置加固外,更应从架构层面重新审视区域传输的输入信任级别——任何来自网络的数据,即便来自"可信"对端,都应经过完整边界校验。
免责声明
本文仅供安全研究和技术学习使用。文中涉及的漏洞分析、PoC 构造思路和攻击链组合仅用于防御目的,旨在帮助安全从业者理解 NSD 权威 DNS 服务器的安全风险并制定防御策略。所有漏洞信息均来自公开披露的 CVE 与厂商安全公告,相关漏洞已在 NSD 4.14.3 及以上版本中修复。请勿将本文内容用于任何非法用途。读者应在合法授权的环境下进行安全测试,并遵守所在地区的法律法规。因不当使用本文内容所造成的任何后果,作者不承担任何责任。
浙公网安备 33010602011771号