从根服务器视角看DNS解析安全
工作来源
Usenix Security 2023
(资料图片)
工作背景
2008 年,Dan Kaminsky 揭露了有史以来最严重的 DNS 攻击之一:缓存投毒。从那一年开始,根服务器开始重视 DNS 解析的安全性。
由于猜测 DNS 请求的源端口(16 位)与 TXID(16 位)是 DNS 缓存投毒的关键,抵御攻击的首选就是源端口随机化与 TXID 随机化,其他措施包括 0x20 encoding、DNSSEC 与 DNS cookies。而对于 DNS 反射放大攻击来说,DNS cookies 是唯一的防御措施。这些防御措施此处不一一进行介绍,相信读者要么已经了解要么还是推荐去看原文。
各主要开源 DNS 解析服务实现中,安全与隐私的情况如下所示:
所有的服务都会默认启用源端口随机化与 QNAME 最小化方案。
工作准备
利用 13 个根服务器中的一个(A-root),该根服务器由 Verisign 运营。全球一共 16 台服务器:10 台在美国、1 台在荷兰阿姆斯特丹、1 台在德国法兰克福、1 台在中国香港、1 台在英国伦敦、1 台在法国巴黎、1 台在日本东京。使用 A-root 在 2008 年到 2021 年的数据,最后四年的数据如下所示。在所有根服务器中,头两年 A-root 的递归解析查询量是最大的,随后是 K-root 与 C-root,证明了其代表性。
随时间推移,请求 IP 地址数、自治系统数与请求总量的变化趋势如下所示:
2021 年,按照 IP 地址数量排名的 TOP5 为美国(25.5%)、中国(18.4%)、德国(7.38%)、法国(4.3%)与意大利(4.11%)。与此同时,IPv6 网络当然也在蓬勃生长,尽管当下与 IPv4 网络仍然不能相提并论。
对数据进行过滤筛选如下所示:
由于数据量太过巨大,资源有限必须约束范围。对于每年每个请求 A-root 的 IP 地址,保留:
前 13 个请求的四元组(QNAME、QTYPE、TXID 与源端口),为了保留 10 个非重请求并且兼容 3 次重复请求才保留 13 个
请求总数
包含 DNS cookie 请求总数
设置 DO 的请求总数
每种类型(A、AAAA、DNSKEY、DS、KEY、DLV、NS 与 MX)的请求量
工作设计
源端口随机化
平均每年大约 21% 的解析服务器只向 A-root 发送一次请求,对于源端口随机化只评估发送至少 5 次唯一请求的。
一共三种情况:无端口随机化、小池端口随机化与顺序端口随机化。
TXID 随机化
使用与源端口随机化相同的方式来测量 TXID 的随机化,重复 TXID 的概率远比重复源端口的概率低。
DNSSEC
使用 DNSSEC 的都设置了 DO,但反过来并不成立,设置了 DO 的解析服务器中有 82% 不使用 DNSSEC。
认为设置 DO 且存在至少一次 DNSKEY 或 DS 请求的,属于使用了 DNSSEC。
0x20 encoding
以下三种情况都可以认为使用了 0x20 encoding:
IP 至少有 3 个不同大小写的相同字符串(如 eXAMple、ExAmPlE、exampL)
IP 至少有 1 个大写的顶级域名,并且不是全大写、全小写与首字母大写的情况
按二项分布计算,大写字母数量落在 µ±2σ 之间
DNS cookie
请求中包含 cookie 即可认为启用了 DNS cookie。
QNAME 最小化
分类为单级、带下划线的双级与多级,前两者为遵循 QNAME 最小化规范。
工作评估
源端口随机化
从 2008 年起,不采用源端口随机化的比例就在持续下降。以 2021 年为例,有 32789(0.75%)个解析服务器未使用源端口随机化、有 78029(1.78%)个解析服务器使用小池端口随机化、82358(1.88%)个解析服务器使用顺序端口随机化。使用不完全端口随机化的解析服务器,一共占到当年所有解析服务器的 4.4%。
这些服务器所在国家的 TOP 10 如下所示(注:这里美国的数量应该是 1.3M 而不是 1.3K,原文表格的数据错误):
存在缺陷的解析服务器数量,美国遥遥领先,紧接着是中国与印度。但从比例上看,中国与印度的比例都较高,第二梯队是俄罗斯、日本与美国(注:总量较小的国家所占比例可能非常高,比例最高的甚至达到 37.1%)。
TXID 随机化
与源端口随机化相比,TXID 的情况好很多。
2021 年,在该问题中存在缺陷的解析服务器只占 A-root 总流量的 0.44%。
DNSSEC
从 2013 年开始,DNSSEC 才开始普及提速。到了 2021 年,尽管 DNSSEC 解析服务器只占总量的 17.4%,但其请求量已经超过七成。
仍然按照国家来看,平均使用率为 17%。使用率较高的为法国、俄罗斯与巴西,而中国、意大利与印度使用率则较低。
0x20 encoding
使用率极低,在 2021 年达到顶峰也不过 0.36%,但毕竟这是一个未进入标准的方案。
DNS cookie
尽管直到 2021 年也只有 8.9% 的解析服务器支持 DNS cookie,且其请求占比仅为 7.7%。但值得注意的是,接近 40% 的自治系统都至少有一个解析服务器支持 DNS cookie。
QNAME 最小化
从 2018 年开始,使用 QNAME 最小化的解析服务器明显增加,到 2021 年已经达到 12%。
整体考量
综合考量只分析 2021 年的数据,结果如下所示:
59% 的解析服务器都是只使用了源端口随机化与 TXID 随机化,而不使用其他方案。紧随其后的是使用源端口随机化与 TXID 随机化以及 DNSSEC,尽管只有 13.6% 的解析服务器数量占比,但却对应了 55.8% 的请求量。
红色部分为存在明显问题的。有趣的是,这些解析服务器请求 TOP 10 域名中,有 7 个是与 VOIP 有关的域名。从请求量来看,这些解析服务器 75% 的请求都与 VOIP 有关。推测可能是与某些 VOIP 相关的软件存在缺陷所导致的。
工作思考
DNS 作为互联网的基石,其安全性不言而喻。近年来,针对 DNS 的研究也是接连不断,从各个方面进行了研究与测量。例如本文中提到,A 根服务器来自中国的请求量占比接近两成,在“脱钩断链”背景下,也难怪本地化根服务器越来越受重视。另一方面,我们作为发展中国家,在互联网基础设施的安全上仍然与发达国家存在差距,需要尽力提高。