影响所有 DNS 解析器的 NXNSAttack 攻击

来自特拉维夫大学和荷兹利亚跨学科中心(以色列)的一组研究人员 已开发 新的攻击方式 NXNS攻击 (PDF),允许您使用任何 DNS 解析器作为流量放大器,提供高达 1621 倍的数据包数量放大率(对于发送到解析器的每个请求,您可以实现将 1621 个请求发送到受害者的服务器)流量高达163倍。

该问题与协议的特殊性有关,影响所有支持递归查询处理的 DNS 服务器,包括 BIND (CVE-2020-8616), (CVE-2020-12667), PowerDNS (CVE-2020-10995), Windows DNS服务器 и 不作承诺 (CVE-2020-12662),以及 Google、Cloudflare、Amazon、Quad9、ICANN 等公司的公共 DNS 服务。 该修复是与 DNS 服务器开发人员协调进行的,他们同时发布了更新以修复其产品中的漏洞。 版本中实施的攻击防护
无界1.10.1, 结解析器 5.1.1, PowerDNS 递归器 4.3.1、4.2.2、4.1.16, 绑定 9.11.19、9.14.12、9.16.3.

该攻击基于攻击者使用引用大量以前未见过的虚构 NS 记录的请求,将名称确定委托给这些记录,但没有在响应中指定带有有关 NS 服务器 IP 地址信息的粘合记录。 例如,攻击者通过控制负责attacker.com 域的DNS 服务器发送查询来解析名称sd1.attacker.com。 为了响应解析器对攻击者 DNS 服务器的请求,将发出响应,通过在响应中指示 NS 记录而不详细说明 IP NS 服务器,将 sd1.attacker.com 地址的确定委托给受害者的 DNS 服务器。 由于之前没有遇到过上述 NS 服务器,并且未指定其 IP 地址,因此解析器尝试通过向受害者的服务于目标域 (victim.com) 的 DNS 服务器发送查询来确定 NS 服务器的 IP 地址。

影响所有 DNS 解析器的 NXNSAttack 攻击

问题在于,攻击者可以使用大量不重复的 NS 服务器进行响应,其中包含不存在的虚构受害者子域名(fake-1.victim.com、fake-2.victim.com、... fake-1000。受害者.com)。 解析器将尝试向受害者的 DNS 服务器发送请求,但会收到未找到域的响应,之后它将尝试确定列表中的下一个 NS 服务器,依此类推,直到尝试了所有攻击者列出的 NS 记录。 因此,对于一个攻击者的请求,解析器将发送大量请求来确定 NS 主机。 由于 NS 服务器名称是随机生成的,并且引用不存在的子域,因此不会从缓存中检索它们,并且攻击者的每个请求都会导致向服务受害者域的 DNS 服务器发出一系列请求。

影响所有 DNS 解析器的 NXNSAttack 攻击

研究人员研究了公共 DNS 解析器对该问题的脆弱程度,并确定当向 CloudFlare 解析器(1.1.1.1)发送查询时,数据包数量(PAF,数据包放大系数)可能增加 48 倍,Google (8.8.8.8) - 30 次,FreeDNS (37.235.1.174) - 50 次,OpenDNS (208.67.222.222) - 32 次。 观察到更明显的指标
Level3 (209.244.0.3) - 273 次,Quad9 (9.9.9.9) - 415 次
SafeDNS (195.46.39.39) - 274 次,Verisign (64.6.64.6) - 202 次,
Ultra (156.154.71.1) - 405 次,Comodo Secure (8.26.56.26) - 435 次,DNS.Watch (84.200.69.80) - 486 次,Norton ConnectSafe (199.85.126.10) - 569 次。 对于基于BIND 9.12.3的服务器,由于请求的并行化,增益级别可以达到1000。在Knot Resolver 5.1.0中,增益级别大约是几十倍(24-48),因为确定NS 名称按顺序执行,并取决于一个请求允许的名称解析步骤数的内部限制。

有两种主要的防御策略。 对于具有 DNSSEC 的系统 由...提议 使用 RFC-8198 防止 DNS 缓存绕过,因为请求是使用随机名称发送的。 该方法的本质是通过 DNSSEC 使用范围检查,在不联系权威 DNS 服务器的情况下生成否定响应。 一种更简单的方法是限制处理单个委托请求时可以定义的名称数量,但这种方法可能会导致某些现有配置出现问题,因为协议中没有定义限制。

来源: opennet.ru

添加评论