中文

以不存在之物发起攻击:“不存在证明”可耗尽 DNS 解析器 CPU

密码学与安全 2024-06-19 v2

摘要

NSEC3 是 DNSSEC 中的一种不存在证明,它提供了一种经过认证的断言,表明所查询的资源在目标域中不存在。NSEC3 由所查询主机名前后按字母顺序排序的哈希名称组成。为了增加字典攻击的难度,哈希函数可以应用多次迭代,但这同时也增加了 DNS 解析器在计算 NSEC3 记录中 SHA-1 哈希值时的负载。关于 NSEC3 记录计算给 DNS 解析器带来的负载的担忧,已在 NSEC3 规范 RFC5155 和 RFC9276 中有所考虑。2024 年 2 月,NSEC3 耗尽 DNS 解析器资源的可能性被分配了 CVE-2023-50868 编号,确认了 NSEC3 的额外迭代会产生大量负载。然而,目前尚无对该攻击的公开评估,且该攻击对解析器的影响也未得到阐明。在这项工作中,我们首次对针对 DNS 解析器实现的 NSEC3-encloser 攻击进行了评估,并发现尽管受害解析器遵循了 RFC5155 关于限制哈希迭代次数的建议,NSEC3-encloser 攻击仍可造成 CPU 指令数增加 72 倍。该攻击的影响因 DNS 解析器的不同而异,但我们表明,在 DNS 数据包数量足够多的情况下,该攻击可增加 CPU 负载并导致数据包丢失。我们发现,以每秒 150 个恶意 NSEC3 记录的速率,根据 DNS 实现的不同,良性 DNS 请求的丢失率在 2.7% 到 30% 之间变化。我们提供了 NSEC3-encloser 攻击的详细描述和实现。我们还首次分析了每个 NSEC3 参数在 NSEC3-encloser 攻击期间如何影响施加于受害解析器的负载。

关键词

引用

@article{arxiv.2403.15233,
  title  = {Attacking with Something That Does Not Exist: 'Proof of Non-Existence' Can Exhaust DNS Resolver CPU},
  author = {Olivia Gruza and Elias Heftrig and Oliver Jacobsen and Haya Schulmann and Niklas Vogel and Michael Waidner},
  journal= {arXiv preprint arXiv:2403.15233},
  year   = {2024}
}

备注

13 pages, 7 figures for the associated zonefile generator implementation, see https://github.com/Goethe-Universitat-cybersecurity/NSEC3-Encloser-Attack submitted to USENIX WOOT '24