编者按
《互联网基础设施与软件安全年度发展研究报告(2020)》第一章《我国互联网基础设施安全测量与分析报告》,共七个小节,分别为:互联网基础设施安全的范畴与形势、域名系统安全现状、HTTPS部署与公钥证书现状、内容分发网络安全现状、电子邮件安全拓展协议现状、IPv6安全现状、互联网基础设施安全前景展望。我们已经发布了第一节,本文为第二小节《域名系统安全现状》。
本文共5930字。文末有惊喜!
域名系统(Domain Name System,DNS)的主要功能是提供域名字符串到主机地址的翻译转换服务。域名系统的正常运行是绝大多数互联网上层应用获取网络资源的前提,因此是互联网重要的基础设施之一。一方面,灵活的扩展性和优异的解析性能,使域名系统自20世纪80年代以来,即使在面对互联网用户与主机规模指数级增长的情况下,依然能够持续高效平稳地运行。另一方面,域名系统的安全性十分脆弱,针对域名服务的攻击手段层出不穷,极易成为攻击者的目标。
接下来,分别从开放递归解析服务器的全球部署情况、域名解析加密递归服务的全球部署情况以及域名权威服务器的安全隐患3个角度出发,探讨域名服务的安全现状。
(注:本文数据均为截至2020年7月的数据)
开放递归解析服务器的全球部署情况
开放递归解析服务器(Open DNS Resolver)是指接受来自任意客户端的查询请求并提供解析结果的DNS递归解析服务器。由于其可以响应任意请求,因此常被攻击者滥用于分布式拒绝服务攻击。与此同时,开放递归解析服务器也面临缓存污染攻击的安全风险。因此,开放递归解析服务器仍然是目前DNS安全生态中较为脆弱的一环。
1.我国的开放递归解析服务器数量约占全球的一半
根据2020年7月对整个IPv4地址空间53端口的扫描结果,共发现2,309,498个递归解析服务器提供域名解析服务。这些服务器广泛地分布于230个国家/地区、23,308个自治系统以及22,842个网络服务提供商。
从地理位置的分布情况来看,存在开放递归解析服务器规模最多的5个国家分别是中国(40.71%)、美国(11.75%)、韩国(5.19%)、俄罗斯(5.12%)以及印度尼西亚(2.54%)。详细分布情况如图1-2所示。

图1-2 开放递归解析服务器的地理位置分布情况
从自治系统的粒度来看,存在开放递归解析服务器数量最多的5个自治系统分别为AS4134、AS4837、AS4766、AS30036以及AS209。上述自治系统所对应的网络服务提供商、数量及占比情况如表1-1所示。
表1-1 开放递归解析服务器Top5自治系统

2.开放递归解析服务器抵御缓存污染攻击的能力不足
缓存污染(DNS Cache Poisoning)是指通过在域名服务器的缓存记录中注入经伪造的虚假记录以实现DNS解析结果重定向的目的。攻击者向递归解析服务器查询某个特定域名,并向递归解析服务器抢先发送经伪造的、包含错误解析结果的解析记录。缓存污染攻击的主要挑战是攻击者需要猜解DNS响应数据包中的关键字段信息,而抵御缓存污染攻击的方法则是通过增加DNS包的随机化程度从而使攻击者难以猜解DNS应答响应中的字段。
端口随机化和TXID随机化是基本的抵御缓存污染的安全策略。通过多次使用开放递归解析服务器进行查询,可以根据递归解析服务器使用的端口/TXID来判断其对端口/TXID随机化的支持程度。在对自建权威服务器对应域名进行查询时,有1,583,726个递归解析服务器尚在活跃状态(占比99.95%),可以用于后续的测量分析。实验发现,尽管大量递归解析服务器已支持端口随机化和TXID随机化,但仍有少量服务器不支持随机化,甚至采用固定的端口/TXID数值。
此外,0x20编码策略通过随机改变查询请求域名的字符大小写以抵御缓存污染攻击;如果客户端和服务器同时支持DNS Cookie,则只有当服务器的OPT资源记录中包含客户端的Cookie时,客户端才会对其进行响应,因此也可用于抵御缓存污染攻击。然而,目前只有26.50%的递归解析服务器支持0x20编码,有16.74%的递归解析服务器支持DNS Cookie。
全球活跃递归解析服务器抵御缓存污染安全策略支持状况如表1-2所示。
表1-2 全球活跃递归解析服务器抵御缓存污染安全策略的支持现状

其中,我国尚在活跃的递归解析服务器有50,8043个(占比32.08%)。这些解析服务器几乎全部支持端口随机化和TXID随机化,但支持0x20编码和DNS Cookie的比例低于全球平均水平,如表1-3所示。
表1-3 我国活跃递归解析服务器对抵御缓存污染安全策略的支持现状

3.开放递归解析服务器对DNSSEC的支持情况并不乐观
DNSSEC作为保障DNS解析完整性的一种安全机制,已被证明是当前DNS防止篡改、劫持以及投毒的最佳实践方案。DNSSEC需要权威DNS与递归DNS同时支持才能起作用。常见的DNSSEC误配置情况包括RRSIG过期、RRSIG缺失、RRSIG错误、DS缺失、DS错误等。目前,有38.14%的递归解析服务器支持DNSSEC,但只有2.69%的递归解析服务器能对所有的DNSSEC错误配置类型进行正确的验证,详情如表1-4所示。
表1-4 全球活跃递归解析服务器DNSSEC配置现状

其中,我国的递归解析服务器中支持DNSSEC的比例很低,只有13.88%,但能对所有的DNSSEC错误配置类型进行正确验证的有4.04%,详情如表1-5所示。
表1-5 我国活跃递归解析服务器DNSSEC配置现状

传统的域名解析协议使用明文在互联网进行传输,缺乏保密性、完整性和认证机制,因此可能泄露终端用户的访问偏好等隐私信息,并且容易受到域名劫持等攻击的威胁。IETF在2016年和2018年制定通过了DoT(RFC 7858)和DoH(RFC 8484)协议,并在终端用户和递归解析服务之间通过流量加密的方式,保护用户域名查询数据安全和隐私。
目前随着主流操作系统和应用程序(如浏览器)厂商的大力推进,域名解析加密技术已在全球加快部署。
1.DoT递归解析服务部署增长较快
自2016年标准化以来,DoT协议在递归解析服务端得到了加快部署。截至2020年7月,全球互联网部署的开放DoT递归解析服务器地址数量已经超过7,800个,较上年同期增长260%(见图1-3);对外开放DoT服务的提供商超过1,200个,较去年同期增长436%。其中较多的递归解析服务器由Cloudflare、Cleanbrowsing、nextdns.io等头部服务提供商维护。

图1-3 全球DoT递归解析服务器地址数量
从国家(地区)分布情况来看(见图1-4),2020年7月,全球DoT递归解析服务器分布于98个国家和地区,其中美国(31%)、中国(14%)、德国(12%)、荷兰(6%)和奥地利(4%)分布较多。相较于上年同期,位于我国的DoT递归解析服务器地址占比有较大幅度的增长。

图1-4 全球DoT递归解析服务器国家(地区)分布情况
2.DoT递归解析服务器证书管理的安全隐患依然存在
TLS证书是实现DoT递归解析服务器身份认证的有效途径。终端用户通过TLS证书对递归解析服务器进行认证,能够防止连接到非信任的递归解析服务器,进而防止隐私数据的泄露。然而,全球DoT递归解析服务器证书管理和无效证书部署问题依然存在,终端用户在使用时可能存在无法认证的问题。
截至2020年7月(见图1-5),全球约29%的DoT递归解析服务器使用无效TLS证书。无效证书类型主要包括自签名证书、过期证书和错误签名的证书。其中,自签名证书最为普遍,且多部署于防火墙或TLS流量监控设备。

图1-5 DoT递归解析服务器证书部署状况
3.DoH递归解析服务部署增长,由大型服务提供商主导
DoH协议由IETF在2018年进行标准化,目前受到浏览器厂商(如Google Chrome、Mozilla Firefox)的大力推动和支持。在递归解析服务端,其部署也存在增长趋势。截至2020年7月,至少有37家服务提供商开始对外提供DoH域名解析服务,较上年同期(仅十余家)有明显的增长。此外,国内的大型互联网厂商也已经逐步开展DoH协议部署服务。主要DoH服务提供商及其DoH解析服务地址如表1-6所示。
表1-6 主要DoH服务提供商及其DoH解析服务地址

域名权威服务器的安全隐患
域名权威服务器往往存在多种安全隐患。常见的安全风险类型包括:域名NameServer单点故障、匿名区域传输与区域更新、NSEC枚举以及子域名接管(Subdomain Takeover)。这些安全风险不仅可能会对域名权威服务器的鲁棒性产生负面影响,也可能会引发敏感信息泄露,甚至造成域名、子域名被攻击者控制的后果。针对这些安全问题,以SecRankTop100万域名集作为研究对象,分析当前知名域名的权威服务器安全风险现状。
1.NameServer单点故障风险现象依然存在
为保证域名解析服务的可用性和鲁棒性,RFC2182中DNS最佳实践建议为每个域名部署多个权威服务器(NameServer),当其中某个服务器无法正常工作时其他服务器仍然可以提供解析服务。因此,当某个域名仅有一个权威服务器或服务器位于同一网段内均视为NameServer存在单点故障风险。
对于SecRank Top 100万域名集,共计发现119,744个(11.97%)域名存在上述NameServer配置不当情况。从图1-6和图1-7可以看出,NameServer配置不当是一个较为普遍的安全问题(单位均为个)。

图1-6 SecRank Top 1万域名中存在NameServer配置不当的域名数量

图1-7 SecRank Top 100万域名中存在NameServer配置不当的域名数量
2.匿名区域传输风险较少发生
域名权威服务器分为主从服务器,当主域名服务器上的权威记录发生变化时,从域名服务器通常通过区域传输(Zone Transfer)的方式更新、备份数据副本,保持数据一致。为保证区域传输的安全性、避免产生信息泄露,该操作应当仅允许在受信任的服务器之间进行。然而,当域名权威服务器配置不当时,任一匿名用户均可以利用区域传输获取完整区域文件。
对于SecRank Top 100万域名集,共计发现4,841个(0.48%)域名存在匿名区域传输的安全风险;但Top1,000域名集中依旧存在52个域名存在该风险。整体来看,匿名区域传输问题数目已少于其他安全问题(见图1-8和图1-9)。

图1-8 SecRank Top 1万域名中存在匿名区域传输、匿名区域更新和NSEC枚举风险的域名数量

图1-9 SecRank Top 100万域名中存在匿名区域传输、匿名区域更新和NSEC枚举风险的域名数量
3.匿名区域更新风险仍需重视
早期对于区域数据的更新(如插入、删除、修改一条记录),是通过外部编辑权威服务器上的区域文件来完成的,这一操作通常需要DNS软件对区域文件进行重新装载。为了在不影响权威域名服务器服务的情况下更新数据,RFC 2136中定义了区域文件的动态更新(dynamic update)操作,通过一个update请求完成对区域文件的修改。为保证区域数据的安全,该操作同样应该只允许受信任的主机进行。然而,在缺乏安全配置的情况下,权威域名服务器将可能接收来自任意地址的域名区域更新请求。攻击者将有可能通过update请求对区域文件进行任意的修改。
向权威服务器增加一条测试资源记录。若添加的记录能够成功解析,则说明该权威服务器存在不安全的区域动态更新问题,在接收并处理动态更新请求时未进行身份验证。
对于SecRank Top 100万域名集,共计发现5,242个(0.52%)域名存在匿名区域更新的安全风险。整体来看,头部域名列表中已经较少出现匿名区域更新问题(见图1-8和图1-9)。但是由于匿名区域更新漏洞危害较大,仍需引起重视。
4.流行域名依然存在NSEC枚举风险
当权威服务器部署DNSSEC时,对于不存在的域名(NX Domain),DNSSEC会使用NSEC和NSEC3记录返回应答响应,然而NSEC记录存在设计缺陷,它使用字母顺序相邻的域名记录表征域名中间不存在其他域名。NSEC的这一特性使任何人都可以对域名区域文件中的内容进行枚举攻击(Zone Enumerating),从而引发信息泄露的安全风险。
在部署了DNSSEC扩展的权威服务器中,DNSSEC使用签名的NSEC或NSEC3记录来对不存在的域名完成响应的验证。NSEC将会返回在当前域中,字母顺序紧邻查询域名的存在记录,以表示这两个域名中间没有存在的域名。
对于SecRank Top 100万域名,共计发现7,572个(0.76%)域名存在NSEC枚举安全风险。整体来看,排名较高的流行域名出现NSEC枚举风险的可能性更大(见图1-8和图1-9)。这些高排名流行域名往往有着更大的访问需求,是攻击者的高价值目标,因此值得域名管理者重视。
5.子域名接管风险较为普遍
子域名接管是一种利用域名管理员配置疏忽的攻击方式。对于一个网络服务(如 alice.com),管理员可能会注册替代域名(如alice2.com)、使用第三方服务(如网页托管alice.github.com)、使用云服务器并配置域名解析链(如sub.alice.com->CNAMEalice2. com->CNAMEalice.github.com->A123.123.123.123)来建设和管理网络服务。然而,一旦注册的替代域名过期、使用的第三方服务到期、使用的云服务器IP过期释放,而管理员又忘记删除与之相对应的解析记录,那么这些域名就存在被攻击者控制接管的安全风险(Domain Takeover)。攻击者通过分析指定域名的子域名解析链的每一环,可能会发现被域名管理者遗忘的过期域名或IP地址并进行接管,从而进一步控制解析链上游的子域名(sub.alice.com)。值得注意的是,攻击者无须控制解析链的所有节点,只需控制其中一环,子域名将解析到攻击者控制的域名。
通过接管子域名,攻击者甚至可以危害二级域名的安全,例如可以实现用户凭证窃取、点击劫持、鱼叉式钓鱼攻击、恶意软件分发等多种攻击手段,甚至可以劫持受害域名的邮件服务、DNS解析服务。
(1)SecRank Top 1,000域名及子域名接管分析
对于SecRank Top 1,000域名及其子域名,评估其可被接管的风险程度的操作:域名本身是否过期、筛选可被接管的第三方服务厂商、第三方服务相关域名是否被释放等。
结果表明(见图1-10),1,000个知名域名中共有496个二级域名存在安全风险,累计发现10,421个存在风险的子域名,风险子域名最长解析链节点数为6。需要注意的是,排名靠前的二级域名反而更可能存在风险并拥有更多的风险子域名,例如排名前100的二级域名拥有4,002个风险子域名,达到总风险子域名的38.4%。

图1-10 SecRank Top 1,000域名中存在接管风险的二级域名数量
从风险种类来看(见图1-11),绝大部分风险域名(10,315个)属于CNAME记录废弃,存在子域名被攻击者接管控制的可能,少部分风险域名(47个)属于MX记录废弃,存在被攻击者接管子域名的邮件服务的可能;还有少部分风险域名(59个)属于NS记录,存在可以使攻击者控制子域名的DNS解析服务的可能。

图1-11 SecRank Top 1,000域名中存在接管风险的不同解析类型子域名数量(说明:左纵坐标为MX、NS记录数量,右纵坐标为CNAME记录数量)
(2)Alexa Top 1,000域名及其子域名接管分析
对于Amazon Alexa Top 1000域名及其子域名,同样评估其可被接管的风险程度的操作:域名本身是否过期、筛选可被接管的第三方服务厂商、第三方服务相关域名是否被释放等。
结果表明,1,000个知名域名中共有305个二级域名存在安全风险,累积发现9,531个存在风险的子域名,风险子域名最长解析链节点数为6(见图1-12)。从风险种类来看,存在CNAME、MX、NS类型风险的域名数分别为9,408个、98个、25个(见图1-13)。整体来看,流行的域名有更多风险子域名,这与使用SecRank域名集的测量结果基本一致。

图1-12 Alexa Top 1,000域名中存在接管风险的二级域名数量

图1-13 Alexa Top 1,000域名中存在接管风险的不同解析类型子域名数量(说明:左纵坐标为MX、NS记录数量,右纵坐标为CNAME记录数量)
总而言之,大量域名存在被接管的风险,可以被攻击者利用进行后续的用户凭证窃取等攻击,即使是一些知名的互联网公司、金融厂商的网站也未能幸免。域名的管理者和第三方服务厂商还需要重视域名接管的问题,避免让攻击者有可乘之机。
(未完待续……)
相关阅读
本报告剩余最后100册,关注公众号七折优惠,欢迎订阅!

