“沉默是金”是古今中外为人处事的重要法则之一。西方谚语“speech is silver, silence is golden”起源于阿拉伯文化,早在9世纪就为人传诵;我国古代《论语·为政》中也有“多闻阙疑,慎言其余,则寡尤”的类似表述。然而,在网络安全领域,这句话还正确吗?本文介绍的这项研究,也许能为读者带来一些思考。

本次分享的论文主要由清华大学 NISL 实验室和阿里云 DNS 的研究团队共同完成,该研究披露了一种破坏云 DNS 平台权威域名服务器负载均衡的攻击方式。这种攻击利用了一些权威域名服务器对部分 DNS 查询 “保持沉默”的响应策略,构造针对特定域名的查询来影响主流递归 DNS 软件负载均衡算法的运行结果,达到控制发往权威域名服务器访问流量的效果。该攻击影响了 BIND9、PowerDNS、Microsoft DNS 主流递归 DNS 软件、22.24% 的流行 FQDN 域名和 3.94% 流行 TLD 域名、多个知名云 DNS 平台厂商。该论文已被网络安全领域顶级会议 ACM CCS 2023 录用 (A 轮投稿录用率:18.0%, 77/427)。

01【研究背景】

域名系统(DNS)是互联网中重要的基础设施之一。在域名递归解析流程中,权威域名服务器通常负责返回域名最终的解析结果,其稳定性和安全性受到业界重视。为了方便管理域名、提高域名解析的鲁棒性,越来越多的网站和应用选择采用域名托管服务(DNS hosting service),一些大型企业数字化平台还会通过 API 集成云平台的 DNS 解析服务,帮助其管理和维护企业域名。

然而,域名托管服务往往为被托管域名分配同一组权威服务器和负载均衡配置,导致权威服务器可用性问题影响其托管的所有域名。举例来说:bilibili.com 托管在某一云 DNS 平台。如图 1 所示,该平台为 bilibili.com 分配了 16 个权威服务器地址。当递归服务器接收到客户端查询 bilibili.com 的请求后,它会按照选择算法访问 16 个候选服务器中的某一个服务器。需要注意的是,这些权威服务器还托管着大量其它域名,不乏国内外知名的公司。在这种多租户 DNS 解析环境下,一旦其负载均衡机制失效,大量托管域名的解析都将受到波及 [1, 2]。

图 1: 某云 DNS 平台为 bilibili.com 提供的权威域名负载均衡机制

破坏域名权威服务器负载均衡机制可造成一系列严重的后果。其中最直观的影响是,攻击者可以将解析流量集中在某一个负载均衡节点,如前面云 DNS 平台提供的 16 个候选节点中的一个,对其造成严重的解析流量负载。不同于绝大多数传统拒绝服务攻击,破坏负载均衡机制所造成的流量负载均来自正常用户,这使得一系列过滤恶意流量负载的防御机制失效 [3-5]。

除此之外,破坏负载均衡还能有效增加攻击者实施解析路径劫持和 DNS 缓存污染的成功率 [6]。举例来说,攻击者想篡改 bilibili.com 的解析记录,由于负载均衡策略使得用户的解析流量分配到 16 个节点中的一个,为了保证用户顺利劫持用户报文,攻击者需要劫持更多通往权威服务器节点的路径,或进行更多解析目标的猜解以构造正确的响应报文。然而,一旦负载均衡机制遭到破坏,所有用户的解析流量都集中在少量权威服务器节点上,攻击者所需要劫持的路径和猜解的目标数都会大大减少,大幅降低了攻击成本。

02【攻击原理】

本文揭露的攻击方式,同时利用了权威域名服务器一种广泛的配置特性,以及递归解析软件查询策略的一种主流实现,达到破坏权威域名服务器负载均衡机制的目的。对于受害权威域名服务器,一种流行的响应策略是:它们在接受到不属于它们托管的域名查询时,不产生任何应答(“沉默是金”),用于防范 DoS 攻击。

举例来说,no-hosted.com 不托管在某云 DNS 平台的权威域名服务器上,当云 DNS 平台的权威域名服务器接受到查询 no-hosted.com 的解析请求时,它就会直接忽略,不返回任何响应。这本是一种简单、高效的防御拒绝服务攻击的方法。因为对于攻击者来说,如果想要利用这些权威服务器发起反射放大攻击,为了产生足够大的响应报文(而不是产生 NXDOMAIN 等响应),必须先获得权威域名服务器上托管的某个域名。当维护者采取“沉默是金”的响应策略后,即使攻击者可以伪造源地址向权威服务器发起解析请求,由于攻击者难以得知权威服务器托管的具体域名,使得权威服务器“沉默以对”,不产生任何放大流量。

然而本文的研究表明,这种“沉默是金”的应答策略,反而给予攻击者破坏负载均衡机制的契机。这是因为对于主流递归解析软件(如 BIND9等),它们在选取权威域名服务器时,会优先选取响应时延最小的候选服务器,并惩罚响应超时的候选服务器。更糟糕的是,这种优选策略的记录机制是对所有托管域名全局生效的。以图 1 举例,假设这 16 个候选节点同时托管 bilibili.com 和攻击者的域名 attack.com,假设一个递归解析器发现在解析 attack.com 时,16 个候选节点中的 15 个节点无法响应,那么它就会在接下来一段时间内,避免使用这 15 个节点,无论用户查询的是 attack.com,还是 bilibili.com。

基于以上两种特性,本文揭露了一种破坏权威域名服务器负载均衡机制的攻击方式,其流程如图 2 所示:假设一组受害托管域名(hosted domains)被托管在一组权威服务器节点 IP1 - IP4 上。攻击者可以通过配置他的域名 attack.com ,将其权威服务器指向 IP2 - IP4。需要注意的是,attack.com 并没有真正被托管到 IP2 - IP4 上,攻击者只是设置相应的 NS 记录。当攻击者向递归解析器发起 attack.com 域名解析请求时,递归解析器根据 attack.com 的配置,向 IP2 - IP4 发起 attack.com 域名解析请求。由于 attack.com 没有托管在 IP2 - IP4,IP2 - IP4 采取“沉默是金”的策略,不响应递归解析器的请求,导致递归解析器惩罚这 3 个候选权威服务器节点。当正常用户向递归解析器查询受害托管域名时,由于 IP2 - IP4 受到惩罚,优先级下降,递归解析器将所有的解析流量发送至 IP1,从而达到了攻击者破坏负载均衡机制的目的。该攻击根据攻击目标粒度,可以衍生出两个变种:分别以NS记录为目标、以IP地址为目标进行攻击。

图 2: 攻击流程图

03【影响评估】

本文通过对主流DNS递归软件的分析,评估攻击的效果。作者选取了五款主流DNS递归软件(BIND9、Unbound、PowerDNS、Knot 和 Microsoft DNS)进行分析。对于前四款软件,作者通过对它们源代码的静态分析、以及软件运行过程中的动态调试,确认了影响攻击的四种因素:攻击者发送的查询数、受害权威服务器的延迟、用户查询的分布和攻击粒度(即针对 NS 粒度,或 IP 地址粒度)。接下来,作者通过搭建模拟环境,探究在四种因素的影响下,攻击效果的变化。作者最终发现五款软件中有三款受到本攻击的影响 (BIND 9、PowerDNS、Microsoft DNS),以往研究表明它们的市场占有率超过 65.9% [7]。更糟糕的是,攻击者还能以极小的代价,引导大量来自正常用户的查询流量。如图 3 所示,攻击者仅需发送一个查询请求,BIND 9 平均而言就能向单一权威服务器节点连续转发 5730 个正常请求,而不是将查询平摊到所有的负载均衡节点。

图 3:模拟环境下,BIND 9 在接收到指定次数的攻击查询后(X轴),连续向目标权威服务器节点转发的查询次数(Y轴)

本文还通过大规模测量,评估本攻击对现网权威域名服务器、公共递归解析器(互联网事实上提供递归解析服务的解析器)以及大型递归公共服务 (由大型厂商维护,公开提供服务的解析器)的影响范围。本文的测量实验开始于 2022 年 5 月。作者选取了 SecRank top 1M FQDN (Fully Qualified Domain Name) [8] 和 Tranco top 1M SLD (Second Level Domain) [9] 流行域名作为测试目标。作者对它们的权威域名服务器进行测量,主要发现:

共 22.24% 的 SecRank FQDN 流行域名、3.94% 的 Tranco SLD 流行域名会受到本攻击影响

受影响的域名服务包括智能手机操作系统 API (FQDN 的排名为 2、9),短视频应用 (26 个排名前 100 的 FQDN),电子商务服务(FQDN 的排名为 50、54),医疗服务(FQDN 的排名为 190、191)等

多个知名云 DNS 厂商受到本攻击的影响,其中一个最大的厂商甚至托管了 6.26% 的 SecRank top 1M FQDN 和 0.81% 的Tranco top 1M SLD 流行域名。

攻击者破坏负载均衡后,导致的受害负载均衡节点接收到的流量为正常情况下的 6.84 倍,最大可达 46 倍。

作者还对网络上的公共递归解析器进行了测试,主要发现:

对全网 37843 个稳定运行超过半年的公共递归解析器的测试发现,其中 37.88% 的公共递归解析器可受到本攻击的影响,其分布范围如图 4 所示

对 14 个知名公共递归服务提供商共 100 个 IP 地址的测试发现,其中 10 个厂商的 45 个 IP 地址受到本攻击影响,其中不乏知名的公共递归服务提供商

图 4: 受影响的公共递归解析器的全球分布热力图

04【缓解措施】

为了缓解这种攻击造成的影响,我们为权威服务端和递归解析端提出了相应的解决建议:

权威服务端:对应不属于自己托管的域名,产生一个带 EDNS0 扩展(Code 20: Not Authoritative)的错误响应 REFUSED;若不支持 EDNS0,则返回 REFUSED。这种报文不会影响权威服务器节点的解析优先级,使本攻击失效。同时,在遭受反射放大攻击时,这种响应不会产生比攻击者更多的响应报文。

递归解析端:建议参考 Knot resolver 的实现,以一定的概率尝试低优先级的权威服务器节点,当其成功响应后,立即恢复其解析优先级,使本攻击无法影响权威服务器节点优先级。

05【总结】

本文揭露了一种全新的攻击方法,用以破坏权威域名服务器的负载均衡机制。作者发现攻击者可以利用一种常见的权威域名服务器的响应策略(“沉默是金”),配合主流递归DNS软件的选择算法实现,对权威域名服务器的负载均衡机制进行隐秘、高效地破坏。作者通过一系列的分析和实验,证实了这种攻击是现实可行和高效的,大量流行域名、域名托管服务商以及公共DNS解析器都可以成为受害者。“沉默是金”这个处事法则是否是金科玉律还有待于讨论,但至少对权威域名服务器来说,这并不是一个好的策略。

参考文献

[1] Aqsa Kashaf, Vyas Sekar, and Yuvraj Agarwal. 2020. Analyzing Third Party Service Dependencies in Modern Web Services: Have We Learned from the Mirai-Dyn Incident?. In Proceedings of the ACM Internet Measurement Conference (Virtual Event, USA) (IMC ’20). Association for Computing Machinery, New York, NY, USA, 634–647. https://doi.org/10.1145/3419394.3423664

[2] Giovane C. M. Moura, Sebastian Castro, Wes Hardaker, Maarten Wullink, and Cristian Hesselman. 2020. Clouding up the Internet: How Centralized is DNS Traffic Becoming?. In Proceedings of the ACM Internet Measurement Conference (Virtual Event, USA) (IMC ’20). Association for Computing Machinery, New York, NY, USA, 42–49. https://doi.org/10.1145/3419394.3423625

[3] Brij B Gupta and Omkar P Badve. 2017. Taxonomy of DoS and DDoS attacks and desirable defense mechanism in a cloud computing environment. Neural Computing and Applications 28, 12 (2017), 3655–3682.

[4] Jelena Mirkovic and Peter Reiher. 2004. A Taxonomy of DDoS Attack and DDoS Defense Mechanisms. SIGCOMM Comput. Commun. Rev. 34, 2 (apr 2004), 39–53. https://doi.org/10.1145/997150.997156

[5] Saman Taghavi Zargar, James Joshi, and David Tipper. 2013. A Survey of Defense Mechanisms Against Distributed Denial of Service (DDoS) Flooding Attacks. IEEE Communications Surveys & Tutorials 15, 4 (2013), 2046–2069. https://doi.org/10.1109/SURV.2013.031413.00127

[6] Tianxiang Dai, Haya Shulman, and Michael Waidner. 2021. Let’s Downgrade Let’s Encrypt. In Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security (Virtual Event, Republic of Korea) (CCS ’21). Association for Computing Machinery, New York, NY, USA, 1421–1440. https://doi.org/10.1145/3460120.3484815

[7] Marc Kührer, Thomas Hupperich, Jonas Bushart, Christian Rossow, and Thorsten Holz. 2015. Going Wild: Large-Scale Classification of Open DNS Resolvers. In Proceedings of the 2015 Internet Measurement Conference (Tokyo, Japan) (IMC ’15). Association for Computing Machinery, New York, NY, USA, 355–368. https://doi.org/10.1145/2815675.2815683

[8] Qinge Xie, Shujun Tang, Xiaofeng Zheng, Qingran Lin, Baojun Liu, Haixin Duan, and Frank Li. 2023. Building an Open, Robust, and Stable Voting-Based Domain Top List. In 31st USENIX Security Symposium (USENIX Security 22). USENIX Association, Boston, MA, 625–642. https://www.usenix.org/conference/usenixsecurity22/presentation/xie

[9] Victor Le Pochat, Tom Van Goethem, Samaneh Tajalizadehkhoob, Maciej Korczyński, and Wouter Joosen. 2019. Tranco: A Research-Oriented Top Sites Ranking Hardened Against Manipulation. In Proceedings of the 26th Annual Network and Distributed System Security Symposium (NDSS 2019). https://doi.org/10.14722/ndss.2019.23386

编辑&审校 | 王一航‍‍‍‍‍‍‍

声明:本文来自NISL实验室,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。