【论文分享】NXNSAttack: 递归解析器的低效性与脆弱性
今天要分享的论文主题是针对 DNS(Domain Name Service)递归解析器发起的分布式拒绝服务攻击(Distributed Denial-of-Service,DDoS),由来自特拉维斯大学的研究人员完成。该论文聚焦于 DNS 递归解析器的低效性与安全脆弱性,通过深入分析递归解析器在真实网络场景中处理 DNS 请求时的安全风险,披露了一种新型的放大攻击。该攻击能够以超过1,620倍的放大倍数,致使递归解析器或相应的域名权威服务器出现拒绝服务的攻击效果。作者针对该攻击也提出了有效的缓解策略,并对此策略的有效性和可用性进行了测量。该论文已被网络安全领域顶级会议 USENIX Security 2020 录用(录用率为 16.1%)。
全文共3500字,阅读时间约13分钟。
01【研究背景】
在理论假设的无故障 DNS 系统中,当解析器缓存中不存在待查询域名的解析记录时,解析器将遍历层级结构的权威域名服务器,以获得域名解析结果。理论场景下的解析过程如图表1所示。在理论场景下,用户仅需少量的请求与应答,即可完成对目标的解析。
图表1:理论场景下的解析过程(红色步骤为 Name Server, NS 转介响应)
图表2:实际场景下的解析过程(红色步骤是回答客户端查询所需的强制消息)
但是,在实际网络场景中,递归解析过程涉及到的 DNS 数据包数量远超于理论场景下的数量。如图表2所示,当递归解析器向 .com 权威服务器提交 DNS 查询后,.com 权威服务器返回的响应中涵盖的资源记录数量可能远超于1个。此外,当步骤②中权威服务器响应的记录不包含glue记录时,递归解析器将被迫开启主动解析进程(每个名称服务器启动一个独立的递归状态),即查询权威服务器提供的全部名称服务器的IP地址。正是这种缺少限制的主动解析方式,挤占了大量的服务器资源,并产生了相关的安全风险。
根据上述理论场景与实际场景的对比分析,该论文聚焦于递归解析器主动进行额外解析的特性,研究的核心目标包括:
- 首先,设计实验证明利用此特性构造的 DDoS 攻击的可行性,并对其攻击效果进行分析;
- 进一步通过分析与实验,提出可行的缓解策略,并对缓解策略的效果以及其对DNS正常服务的影响进行实际测量。
02【NXNSAttack 攻击】
论文提出了一种新型的放大攻击模型,NXNSAttack [2],即利用多个名称服务器转介响应与由此产生的额外查询请求,构造针对递归解析器的放大攻击,最终达到令递归解析器或权威服务器拒绝服务的攻击效果,受影响厂商为该漏洞分配了多个漏洞编号 [3]。
威胁模型
NXNSAttack 的攻击者拥有一个二级域名(如 attacker[.]com)并维护其权威名称服务器,并且可以为该域名配置大量不同的子域名。通过分别为这些子域名设置 NS 记录,将这些子域名的解析授权到受害者域名(如 victim[.]com)的多个不存在的子域名的权威服务器.
图表3:NXNSAttack 的攻击流程示意图
- NXNSAttack 的攻击者,通过向某一递归解析器查询攻击者的权威服务器授权域名的子域名发起大量查询请求,致使攻击者的恶意查询流量在解析过程中被放大,最终导致递归解析器与受害者域名的权威域名服务器遭受拒绝服务攻击。NXNSAttack 的攻击流程如图表3所示,包括以下四个关键步骤:
- 1. 攻击者向其维护的一个子域名 sd1.attacker.com 发起 DNS 查询请求。攻击者的每次查询会使用不同的子域名,以此来绕过递归解析器的缓存机制;
- 2. 攻击者的请求会到达 attacker.com 的权威服务器,并返回提前设置好的 DNS 响应,其中包含大量 NS 记录。在该响应中不包含 NS 名称服务器的胶水记录(即GLUE记录);
- 3. 这些 NS 记录均指向受害者的二级域名下的某些不存在的子域名,且不包含这些子域名的 IP 地址。因此,递归解析器会主动向 victim.com 的权威服务器发起大量的 NS 解析请求,以确定每个名称服务器IP地址;
- 4. 由于受害者域名的权威服务器并不存在这些名称服务器的资源记录,因此受害者域名的权威服务器会返回 NX 响应。
- 需要注意,递归解析器实际请求数量为攻击者设置的 NS 记录总量的两倍,这是因为递归解析器会对每个记录发起IPv4 和 IPv6,即两次请求(记作2n)。而每次从递归解析器接收子域查询请求时,攻击者的权威的响应都会包含n个新的且不同的名称服务器。
- 攻击效果分析
- 1. 放大器组件
- 根据 NXNSAttack 攻击的威胁模型,该攻击成功的条件主要包括两方面:(1)可以向提供解析服务的递归解析器发起 DNS 查询请求;(2)获得至少一个权威服务器的使用权或控制权,并设置大量恶意的 NS 记录。根据这两方面的条件,作者总结了 NXNSAttack 攻击的放大器组件,如图表4所示。

- 图表4:放大器组件的构成与工作流程
- 放大器的攻击组件主要包含两方面:(1)一个能够发起 DNS 查询请求的客户端;(2)设置了大量不存在的 NS 记录的权威名称服务器。论文后续的相关测量也是围绕放大器的组成架构进行的。
- 2. 针对不同目标的攻击
- 根据重点攻击目标的不同,NXNSAttack 可以针对 DNS 解析过程中的不同解析角色发起攻击。
- 针对单个目标权威服务器的攻击,可以使用多个不同的客户端向多个不同的递归解析器发起查询,如图表5(a)所示;
- 针对单个递归解析器的攻击,可以针对多个目标授权权威服务器,使用多个客户端向同一个递归解析器发起查询,如图表5(b)所示;
- 针对ROOT/TLD的攻击,可以使用自授权(Self Selegations)技术,增加对 ROOT 名称服务器的并发请求数量,比如将每个 NS 再次指向攻击者权威记录中的 n2 个 NS 服务器,因此可以将放大因子提升至 F=2*2*N1*N2 倍。详细过程如图表6所示。

- 图表5:受害者域名的权威(a)与递归服务器(b)的受灾情况

- 图表6:使用自授权技术实现的双重放大攻击
- 3. 理论测算与实际测量对比
- 由于攻击者的权威服务器在接收到来自递归服务器的查询后,返回包含 n 个 NS 的响应,递归将进一步发出 F=2n 个查询请求,但是实际上这个数量会受到以下两个参数的限制:
- nmax:是指 DNS 响应中能够包含的 NS 名称服务器的最大数量,即 n 的最大值,实际情况下 nmax 一般为135。
- max-recursion-queries:是指递归解析器限制的一个客户端能够发送的 DNS 查询请求最大数量。如果一个客户端发送了超过限制数量的查询,递归则会终止该客户端的查询并返回 SERVFAIL。一般情况下,该数量的默认值为75,但攻击者需要首先对权威服务器发起请求,则会消耗1个,因此实际上为74。此外,根或TLD不受到此参数的限制。
- 在以上两个限制条件下,论文对不同受害主体的开销进行理论测算与实际测量。如图表7所示,这种新型的放大攻击能够获得的放大因子较大,尤其是针对递归解析器的攻击,可以达到1,620倍。同时,从图表8可以发现,对比NXDomain [4] 攻击,NXNSAttack 的放大因子更大。

- 图表7:一个客户端请求导致的不同攻击变体的开销,使用BIND (M,测量到的开销;C,理论上的开销)

- 图表8:NXNSAttack与NXDomain的攻击目标与放大因子对比
- 缓解策略:MaxFetch(k)
- 论文发现,导致 NXNSAttack 攻击的漏洞广泛存在于多种递归解析器的软件中。针对这种攻击模式,论文针对递归解析器实现算法的主动解析特性进行了优化与调整,提出了 MaxFetch(k) 算法,旨在避免不必要的主动获取。该算法的主要思想是,将对一个区域(zone)的多个委派的解析分摊到多个使用该区域的请求上,具体实施包括以下三方面:
- 1. 对每个请求中的一个或 k 个名称服务器进行解析,而不是在 NS 记录响应到达递归解析器时,一次性查询该区的全部名称服务器IP;
- 2. 收到用户请求时,如果请求的是已经解析过的名称服务器时,解析器会解析另外 k 个名称服务器的 IP 地址;
- 3. 解析过程一直持续到权威返回的 NS 记录响应中提供的所有 NS 记录被解析。
- 03【主要发现】
- NXNSAttack 的实际攻击效果
- 依照上述思路,作者对主要公共 DNS 厂商进行了测量分析,分析结果如图表9所示。可以发现,该攻击对主要的公共DNS 产生的实际攻击效果较大,由于无法监测递归解析器与TLD两端的请求与响应,因此作者只测量了对受害者域名权威服务器的效果。

- 图表9:单个请求对公共解析器的火力与数据包放大因子(Packet Amplification Factor,PAF)
- MaxFetch(1) 算法性能
- 如图表10所示,NXNSAttack 针对原始 BIND 软件攻击得到的 PAF 是75倍,而部署了 MaxFetch(1) 后的PAF仅为3倍。因此,MaxFetch(1) 算法可以有效缓解 NXNSAttack 攻击,并且不会影响递归解析器的正常服务。

- 图表10:针对二级域名授权服务器的长时间 NXNSAttack 模拟结果示意图
- 作者使用了两个数据集进行防御效果测试:(1)对 100k 个域名 [1] 进行了 DNS A 查询;(2)对服务器的DNS流量进行24小时跟踪。两个数据集下的测量结果显示,MaxFetch(1)各项指标均与原始算法差别不大。

- 图表11显示了在数据集A和B查询流的解析中,BIND解析程序交换的递归数据包数量,其中绿色是使用MaxFetch(1)的相对开销,结果发现部署了 MaxFetch(1) 的数据包开销甚至有所减低;

- 图表12显示了原始 BIND 与 部署了 MaxFetch(1) 的 BIND 针对域名解析的结果,发现DNS 解析延迟与解析错误的 SERVFAIL 和 NOERROR 无明显差别;

- 图表13显示了原始 BIND 与 部署了 MaxFetch(1) 的 BIND 针对域名解析的延迟效果,结果发现 MaxFetch(1) 对解析延迟也没有较大影响,其累计分布函数(Cumulative Distribution Function,CDF)曲线几乎重合。
- 04【结论】
- 这项研究工作对递归解析器主动获取DNS授权过程的风险进行了深入研究,并提出了放大效果远超出原有放大攻击的新型攻击方法,即 NXNSAttack,并揭示了当前DNS协议算法实现在逻辑上的重大缺陷。针对该攻击,论文提出了相应的缓解策略 MaxFetch(k),并设计实验验证了其防御效果以及对正常服务的影响,结果表明该策略的防御效果显著并且没有较大的影响。
- --
- 原文链接
- https://www.usenix.org/system/files/sec20-afek.pdf
- 参考文献
- [1] Top million root domains list. https://majestic.com/reports/majestic-million/, May 2019.
- [2] NXNSAttack: upgrade resolvers to stop new kind of random subdomain attack.
- [3] 新的DNS漏洞NXNSAttack可导致大型DDoS攻击:https://www.freebuf.com/articles/web/237392
- [4] Bursztein E , Cochran G J , Durumeric C Z , et al. Understanding the Mirai Botnet[C]// USENIX Security Symposium. USENIX Association, 2017. https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-antonakakis.pdf
- 编辑&审校 | 刘明烜