研究课题 域名与DNS安全 DNS解析安全 子课题04 · 第2页 / 共8页
04六大核心子课题 · 递归解析器安全审计

递归解析器安全审计

不理解协议,就无法审计安全。本页回到RFC文本本身,系统梳理递归解析器所依赖的DNS协议机制:报文结构与标志位、EDNS扩展、DNSSEC记录类型、UDP/TCP双栈传输、缓存与TTL规则,并在此基础上给出一份"攻击面全景清单"——从开放递归放大到缓存投毒、从随机子域泛洪到区域传送泄露,逐项说明机理、影响与对应防护标准。最后以十五年标准与漏洞演进时间线收束全页,为后续各页的纵深防御讨论建立共同的事实基础。

DNS报文格式EDNS0DNSSEC RRTCP传输缓存投毒放大攻击MITRE ATT&CK威胁情报研究状态:规划中
审计前置知识本页为全篇公共语言层,建议所有读者完整阅读
事实基础全部机制描述均可溯源至RFC原文与CVE记录
承上启下攻击面清单逐项对应第3—5页的防御展开

01 · DNS协议机制精要

1.1 报文结构与标志位

DNS报文由12字节定长首部与四段变长部分组成:问题段(Question)、应答段(Answer)、授权段(Authority)、附加段(Additional)。首部中的标志位是审计中判断应答性质的关键证据:

标志位含义审计意义
QR查询/应答伪造应答的首要鉴别字段,投毒仿真中重点比对
AA权威应答区分权威直答与缓存代答,权威一致性监测的依据
TC截断应答超UDP载荷时置位,客户端应回退TCP(RFC 7766强制要求支持);TC置位被滥用可诱发TCP耗尽
RD / RA期望递归 / 支持递归RD=1且来自非授权客户端的查询,是开放递归探测的判定特征之一
AD已认证数据仅当客户端置DO位且服务端完成DNSSEC验证时由服务端设置,是"验证已发生"的报文级证据
CD禁用检查客户端要求跳过DNSSEC验证,用于诊断;滥用会削弱验证防线
RCODE应答码NOERROR/NXDOMAIN/SERVFAIL等;SERVFAIL频发是上游故障或投毒攻击的告警信号

1.2 EDNS(RFC 6891):扩展机制与载荷协商

经典DNS将UDP应答限制在512字节内,EDNS0通过OPT伪资源记录协商更大的UDP载荷(建议值1232字节起步,以穿越常见路径MTU)并携带扩展标志(如DO位声明DNSSEC感知)。审计要点:①EDNS实现缺陷是历史故障大户——2019年"DNS Flag Day"全球协调行动正是为强制移除对EDNS畸形应答过度容忍的遗留兼容逻辑;②UDP分片是投毒攻击面(分片重组绕过部分端口随机化假设),RFC 8906总结了此类常见运营问题;③OPT记录中的扩展选项(如EDNS Cookie、ECS)须逐项评估开启策略。

1.3 DNSSEC记录类型与验证逻辑

记录类型作用审计要点
RRSIG资源记录集的数字签名有效期校验、算法强度(当前实践以RSASHA256/ECDSAP256SHA256为主)
DNSKEY区域公钥ZSK/KSK分离、与DS的链上一致性
DS父域对子域KSK的委托签名者记录信任链建立点;DS/DNSKEY不匹配即链断
NSEC / NSEC3认证不存在(RFC 4034 / RFC 5155)NSEC3可缓解区域遍历(zone walking),但增加解析开销;aggressive NSEC缓存见RFC 8198

验证失败的处置纪律:验证器对bogus应答应返回SERVFAIL而非降级返回未验证数据——BIND的dnssec-validation auto、Unbound的harden-dnssec-stripped均为此设计。审计时须确认"验证失败可观测":bogus计数、验证失败域名清单应进入监控,否则DNSSEC形同虚设。

1.4 传输层:UDP为主、TCP兜底、加密补充

UDP 53是默认传输;当应答超过协商载荷或首试UDP失败时回退TCP(RFC 7766明确递归器与权威服务器必须支持TCP)。审计含义:①仅放行UDP 53而屏蔽TCP 53会被攻击者利用(TC置位即造成解析失败),也违反标准;②TCP通道须纳入DDoS防护(SYN泛洪、连接耗尽);③DoT/DoH/DoQ加密传输(第6页展开)不改变DNS语义,仅改变信道。

02 · 递归解析与缓存规则

2.1 完整解析流程的证据链

以首次查询www.example.com为例,递归器的标准动作序列是:①查缓存(命中且未过期→直接应答);②未命中→向根服务器查询com委托(通常缓存命中);③向com权威查询example.com委托(通常缓存命中);④向example.com权威查询www的A记录;⑤(若开启验证)沿DS/DNSKEY链逐级验证RRSIG;⑥写入缓存(记录类型、应答段、TTL起算点)并应答客户端。每一步都是可观测的审计点:转发链上额外出现的"第四方"递归、TTL异常压缩、附加段夹带(bailiwick违规)等均可在此过程中被识别。

2.2 TTL与缓存的三条铁律

  • TTL由权威指定、递归无权拉长:按RFC 2181第5节的澄清语义,缓存记录的生存期以应答中的TTL为准;降低TTL(如将3600改写为60)是某些"管控型"篡改的特征,审计可用多解析器比对TTL识别(呼应子课题01的多路径一致性测量)。
  • 否定缓存单独计时:NXDOMAIN/NODATA按权威SOA记录中的最小TTL缓存(RFC 2308),攻击者可通过操纵SOA TTL放大或缩短否定缓存驻留时间。
  • 缓存是共享资源:一个用户的投毒结果影响全体用户——这决定了第4页将缓存完整性列为最高优先级的审计域。

2.3 bailiwick:最容易被忽视的缓存写入边界

bailiwick规则要求:递归器只能把"应答中与查询名同域(或为其子域)"的记录写入缓存,以防止攻击者借example.com的应答段把bank.com的伪造NS记录塞进缓存。Kaminsky攻击的核心技巧之一正是利用附加段的第三方域名记录绕开当时的宽松实现。现代实现(BIND的fetch-glue no、Unbound的harden-referral-path)默认收紧该边界,但老旧固件仍是盲区——这正是嵌入式转发器审计的必查项。

03 · 攻击面全景清单

下表汇总递归解析器面临的十二类主要攻击面,全部可在公开文献中找到对应出处。清单是本课题各防御章节的"问题索引":

常见UDP协议带宽放大因子(BAF)对照
DNS放大倍数在常见反射向量中处于中游,但开放解析器基数庞大、长期位居实际攻击向量首位
来源:US-CERT Alert TA14-017A《UDP-Based Amplification Attacks》(带宽放大因子数据致谢Christian Rossow,NDSS 2014);BAF=应答UDP载荷字节数/请求UDP载荷字节数,DNS为区间值取上限作图。
#攻击面机理要点关键防护
1开放递归放大伪造源地址的小查询触发递归器向受害者大应答(ANY/TXT/大RRset),形成反射放大BCP38入口过滤+RRL+ANY最小化(第3页)
2缓存投毒(经典/Kaminsky型)抢答伪造应答:16位事务ID碰撞,Kaminsky变体借附加段第三方域名把"每次尝试成功概率"摊薄到每秒多域名多次源端口随机化+0x20+Cookie+DNSSEC纵深(第4页)
3随机子域(水刑)攻击僵尸网络以不存在的随机子域名灌向递归器,递归器再放大灌向权威,双向耗尽缓存与带宽NXDOMAIN限流+RRL+权威侧防护(第3页)
4幻影域(Phantom Domain)权威服务器故意极慢应答,使递归器长期占用等待队列资源,拖垮并发能力(Herzberg & Shulman, NDSS 2013)上游超时与并发配额管理
5请求泛洪(UDP/TCP)直接淹没查询接收层;TCP通道的SYN与连接耗尽Anycast+清洗+内核参数加固(第3页)
6缓存窥探(Snooping)攻击者探测缓存中记录的剩余TTL,推断他人是否访问过特定域名统一缓存过期时间、拒绝间接探测(第4页§05)
7实现层漏洞报文解析缺陷(如BIND CVE-2016-2776断言失败)、缓存管理缺陷(Unbound幽灵域名CVE-2020-12663)、内存安全(dnsmasq DNSpooq系列)补丁SLA+基线加固(第5页)
8委托链劫持/转发劫持上游递归或运营商链路篡改应答;本地hosts与路由器DNS被改写加密上游+多路径一致性比对(第6页;子课题01)
9DNS重绑定(Rebinding)恶意域名交替解析为攻击者IP与127.0.0.1/内网IP,绕过浏览器同源限制攻击内网设备RPZ私有地址阻断+设备侧校验
10区域传送泄露(AXFR)若递归兼权威或配置不当,AXFR(RFC 5936)泄露完整区文件,暴露内网拓扑allow-transfer ACL+TSIG(RFC 8945)
11隐私泄露明文查询被链路窃听;ECS(RFC 7871)将客户子网带给第三方权威加密传输+ECS最小化+QNAME最小化(第6页)
12解析武器化(恶意用途)DGA域名回连(T1568.002)、DNS隧道C2(T1071.004)经由递归器出站出站侧检测与情报联动(第7页)

优先级建议:对多数组织而言,攻击面1—3(可用性滥用)与攻击面2/6(缓存完整性)是必须最先收敛的"高危且高频"面;攻击面7的实现漏洞具有突发性,靠补丁纪律兜底;攻击面8—11则与隐私合规章节联动治理。审计资源分配应遵循此序。

04 · 标准与漏洞演进时间线(1987—2022)

DNS递归安全十五年关键节点
纵向时间线:协议奠基 → 投毒攻防 → 抗DDoS → 实现安全 → 加密与隐私时代
事件与标准信息来源:rfc-editor.org、US-CERT/CVE记录、ISC/NLnet Labs/JSOF官方公告及主流安全媒体报道。

05 · 威胁情报映射(MITRE ATT&CK)

递归解析器安全并非孤立课题,其攻防行为已在MITRE ATT&CK中获得系统标注,可直接复用其编号体系组织检测与狩猎:

ATT&CK编号技术名称与递归解析器的关联
T1071.004应用层协议:DNSC2经DNS通道通信时,递归器是必经出站点;异常查询熵、超长TXT、异常QTYPE比例是可狩猎信号
T1568.002动态解析:DGA失陷主机周期性查询算法生成域名,递归侧可基于NXDOMAIN率与字符熵基线检测(与子课题05联动)
T1498.002网络拒绝服务:反射放大本课题第3页正面防御对象;检测侧关注单源/多源异常放大流量特征
T1584.002攻陷基础设施:DNS服务器攻陷他人递归/权威用于投毒或中转的预置活动,审计时需关注自身设施是否被滥用
T1557中间人(Adversary-in-the-Middle)链路篡改DNS应答属于该战术家族的协议级表现,与子课题01劫持检测直接对应

小结:本页建立了"协议机制→攻击面→标准时间线→威胁情报编号"的四层事实底座。第3页起,每一页均从攻击面清单中认领条目并展开为可执行的审计方法。

本节参考来源(第2页)

本节所有机制描述均可对照以下原文核验。

[1]

RFC 1034/1035(1987)、RFC 2181(1997,DNS澄清)、RFC 2182(1997,NS选择指南)、RFC 2308(1998,否定缓存):rfc-editor.org

[2]

RFC 6891(EDNS0,废止RFC 2671)、RFC 7766(TCP传输要求,废止RFC 5966)、RFC 8482(ANY最小化响应)、RFC 8906(常见运营问题):rfc-editor.org

[3]

RFC 4033/4034/4035(DNSSEC核心)、RFC 5155(NSEC3)、RFC 8198(aggressive NSEC)、RFC 9364(DNSSEC部署实践指南):rfc-editor.org

[4]

RFC 5452(抗伪造应答措施,0x20)、RFC 7873(DNS Cookie):rfc-editor.org

[5]

RFC 5936(AXFR)、RFC 8945(TSIG):rfc-editor.org

[6]

US-CERT VU#800113(2008 Kaminsky漏洞协同公告):kb.cert.org/vuls/id/800113

[7]

Herzberg & Shulman, "Vulnerable Delegation of DNS Resolution"(NDSS 2013,幻影域攻击):ndss-symposium.org

[8]

MITRE ATT&CK T1071.004 / T1568.002 / T1498.002 / T1584.002:attack.mitre.org

[9]

US-CERT TA14-017A《UDP-Based Amplification Attacks》(BAF清单):cisa.gov TA14-017A;Rossow, NDSS 2014《Amplification Hell》