影响大多数 DNSSEC 实施的 KeyTrap 和 NSEC3 漏洞

在 DNSSEC 协议的各种实现中已发现两个漏洞,影响 BIND、PowerDNS、dnsmasq、Knot Resolver 和 Unbound DNS 解析器。这些漏洞可能会导致执行 DNSSEC 验证的 DNS 解析器拒绝服务,从而导致高 CPU 负载干扰其他请求的处理。要实施攻击,只需使用 DNSSEC 向 DNS 解析器发送请求即可,这会导致调用攻击者服务器上专门设计的 DNS 区域。

发现的问题:

  • CVE-2023-50387(代号 KeyTrap) - 访问专门设计的 DNS 区域时,由于 CPU 负载较大且 DNSSEC 检查执行时间较长,会导致拒绝服务。要进行攻击,需要在攻击者控制的 DNS 服务器上放置带有恶意设置的域区域,并确保该区域被递归 DNS 服务器访问,攻击者寻求拒绝服务。

    恶意设置涉及使用冲突密钥、RRSET 记录和区域数字签名的组合。尝试使用这些密钥进行验证会导致耗时、资源密集型操作,这些操作可能会完全加载 CPU 并阻止其他请求的处理(例如,据称在对 BIND 的攻击中,有可能停止处理其他要求 16 小时)。

  • CVE-2023-50868(代号 NSEC3)是一种拒绝服务,因为在处理特制的 DNSSEC 响应时计算 NSEC3(Next Secure v3)记录中的哈希值时执行了大量计算。该攻击方法与第一个漏洞类似,只不过在攻击者的 DNS 服务器上创建了一组专门设计的 NSEC3 RRSET 记录。

值得注意的是,上述漏洞的出现是由于 DNSSEC 规范中对 DNS 服务器发送所有可用加密密钥的能力的定义造成的,而解析器必须处理任何收到的密钥,直到检查成功完成或全部完成。收到的密钥已被验证。

作为阻止漏洞的措施,解析器限制信任链过程中涉及的 DNSSEC 密钥的最大数量和 NSEC3 的哈希计算的最大数量,并限制每个 RRSET(密钥签名组合)和每个服务器响应的验证重试。

这些漏洞已在 Unbound (1.19.1)、PowerDNS Recursor (4.8.6、4.9.3、5.0.2)、Knot Resolver (5.7.1)、dnsmasq (2.90) 和 BIND (9.16.48、9.18.24) 的更新中修复.9.19.21 和 XNUMX)。可以在以下页面上评估发行版中的漏洞状态:Debian、Ubuntu、SUSE、RHEL、Fedora、Arch Linux、Gentoo、Slackware、NetBSD、FreeBSD。

BIND DNS 服务器版本 9.16.48、9.18.24 和 9.19.21 还修复了多个漏洞:

  • CVE-2023-4408 解析大型 DNS 消息可能会导致 CPU 负载过高。
  • CVE-2023-5517 - 对特制反向区域的请求可能会因触发断言检查而导致崩溃。该问题仅出现在启用了“nxdomain-redirect”设置的配置中。
  • CVE-2023-5679 – 由于在支持 DNS64 且启用“serve-stale”(设置、stale-cache-enable 和 stale-answer-enable)的系统上触发断言检查,递归主机检测可能会导致崩溃。
  • CVE-2023-6516 特制的递归查询可能会导致进程耗尽可用的内存。

来源: opennet.ru

添加评论