聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

概要

微软在3月补丁星期二修复了7个 DNS 漏洞,其中5个是远程代码执行 (RCE) 漏洞(CVE-2021-26877、CVE-2021-26897、CVE-2021-26893、CVE-2021-26894和CVE-2021-26895),CVSS 评分为9.8;余下的2个是拒绝服务 (DoS) 漏洞(CVE-2021-26896 和 CVE-2021-27063)。微软与 MAPP 会员共享了其中2个 RCE 漏洞的检测指南和 PoC(CVE-2021-26877 和 CVE-2021-26897)。McAfee 已经在 DNS Dynamic Zone Update 中证实了它们的存在。之后微软证实称所有的7个漏洞都位于 Dynamic Zone Update 活动中。McAfee 从对 CVE-2021-26877 和 CVE-2021-26897 的分析以及微软的进一步说明中证实,这5个 DNS RCE 漏洞均非可蠕虫漏洞。

CVSS 评分为9.8 意味着攻击者能够攻陷 DNS 服务器而无需认证或用户交互。如这些漏洞遭利用将导致 Primary Autoritative DNS 服务器上 RCE 执行的后果。不过虽然 CVSS 评分是一款不错的技术评分工具,但需要结合用户 DNS 部署环境的上下文才能理解下文所讨论的风险。

强烈建议 Dynamic Updates 用户尽快修复 Windows DNS 服务器。如无法修复,则建议优先评估暴露情况。

DNS Dynamic Updates,威胁和部署

美国国家标准与技术研究员 (NIST) 在《DNS 安全部署指南》中提到,DNS 威胁可分为平台和事务威胁。平台威胁可归类为 DNS 主机平台或 DNS 软件威胁。如下表,Dynamics Update 是 DNS 四大事务类型之一。这7个DNS 漏洞存在于 Windows DNS Software 的 Dynamic Update DNS 事务功能内。

DNS Dynamic Zone Update 功能可使客户端在 Primary DNS Authoritative Server 上更新 Resource Records (RRs),如何时更改 IP 地址;这些客户端一般是证书颁发机构和 DHCP 服务器。Dynamic Zone Update 共鞥可在标准的 DNS 服务器或集成活动目录 (AD) 的DNS 服务器上部署。最佳实践是部署集成 AD 的 DNS,以便供微软安全如 Kerberos 和 GSS-TSIG 使用。

在 DNS 服务器上创建 Zone 时有一个选项即可以启用或禁用 DNS Dynamic Zone Updates。当 DNS 部署为单独的服务器时,Dynamic Zone Update 功能默认禁用但可在安全/不安全的模式下启用。当 DNS 部署为集成 AD 时,Dynamic Zone Update 功能在默认情况下以安全模式启用。

安全的Dynamic Zone Update验证所有的 RR 更新均通过加入域的计算机上的 GSS-TSIG 进行了数字签名。此外,可以对哪些主体能够执行 Dynamic Zone Updates 应用更精细的控件。

不安全的 Dynamic Zone Update 可使任何机器在无需认证的情况下更新 RRs(不推荐)。

攻击的前提

  • 集成 AD 的 DNS Dynamic Updates(安全更新的默认配置)

  • DNS 服务器必须接收对至少一个 Zone 的写请求(一般一个DNS主服务器仅允许 Zone RR 写,单配置不当和辅助服务器可忽视该要求)

  • 域加入机器

  • 攻击者必须构造 DNS 服务器请求并在请求中提供目标 Zone

  • 单独的 DNS 服务器(安全/不安全配置)

  • DNS 服务器必须接收对至少一个 Zone 的写请求(一般一个DNS主服务器仅允许 Zone RR 写,单配置不当和辅助服务器可忽视该要求)

  • 攻击者必须构造 DNS 服务器请求并在请求中提供目标 Zone

从威胁模型的角度来看,我们必须考虑威胁行动者的动机、能力和访问/机会,因此我们必须理解和环境相关的风险。我们并未在野外发现这些漏洞遭利用的急响,因此必须专注于访问能力,即关上了威胁行动者的机会。表2概述了和这些 RCE 漏洞所展现机会相关的 DNS Dynamic Update 部署模型。

风险最高的部署是暴露到互联网的 Dynamic Update 不安全模型中的 DNS 服务器;这并非最佳安全实践,而且以我们的经验来看,并不了解这类部署的用例。

在安全模式(默认)下部署集成 AD 的 DNS Dynamic Update 虽然缓解了未认证攻击者的风险,单仍然具有失陷域名计算机或受信任内部人员实现 RCE 的高风险。

漏洞分析

所有的漏洞都和在 dns.exe 中处理 Dynamic Update 数据包相关。我们分析漏洞的目的是确保能够生成保护客户的签名。

CVE-2021-26877 分析

  • 当 Zone 更新时,TXT RR 的 “TXT 长度“大于”Data长度“,该漏洞触发,如Wireshark 所示:

  • 该漏洞位于 File_PlaceStringInFileBuffer() 函数中,可从 WinDbg 输出看出:

  • 当DNS Dynamic Zone Update 的 “TXT 长度“字段未得到相对于“Data 长度”的验证时,该漏洞即堆上的界外读取漏洞。它可使攻击者读取多达255字节的内存。微软指出该漏洞可用于实现 RCE;不过需要进一步的界外写源语。

  • 和该界外读取相关的内存分配在 CopyWireRead() 函数中创建。该函数的相关伪代码如下:

  • File_PlaceStringInFileBuffer() 函数此前从CopyWireRead() 函数分配的 TXT_data 中复制数据。然而,Wireshark 显示的UpdateRR->TXT 长度值并未验证且用于从 *UpdateRR->Data 长度复制。由于 UpdateRR->TXT 长度 并未相对于 UpdateRR->Data 长度进行验证,因此会导致堆内存界外读取漏洞。

CVE-2021-26897 分析

  • 当发送很多连续的 Signature RRs Dynamic Update 时就会触发该漏洞

  • 在写入 Zone 文件前,将很多连续的 Signature RR Dynamic Updates 组合至 base64 编码的字符串中时就会在堆上发生界外写漏洞。

  • 微软认为该漏洞可用于实现 RCE。

利用

远程利用这些漏洞,除了绕过 Control Flow Guard (CFG) 外还要求读写原语。DNS 协议拥有庞大的远程未认证攻击面,有利于生成此类原语。此外,从RR_DispatchFuncForType() 函数来看,其调用表中存在读写函数。

缓解措施

打补丁是首选也是最有效的措施。如无法打补丁,则最佳缓解措施是审计DNS部署配置,将 Dynamic Zone Updates 仅限于受信任服务武器。

另外,NIST在《DNS部署安全指南》中也提供了保护 DNS 部署的最佳实践:

1、DNS 主服务器应当限制能够更新 RRs 的客户端

2、使用 GSS-TSIG 确保 Dynamic Update 的安全

3、 DNS 辅助服务器 Dynamic Update 使用 GSS-TSIG转发限制

4、使用 GSS-TSIG实现细粒度的 Dynamic Update 限制

推荐阅读

Windows DNS Server 远程代码执行漏洞 (CVE-2021-24078) 的详细原理分析

开源的 DNS 转发软件 Dnsmasq 被曝7个漏洞,可劫持数百万台设备

12年前的 Linux bug 复活,DNS 缓存投毒攻击重现

微软补丁星期二:修复多个严重 RCE 和IE 0day

参考链接

https://www.mcafee.com/blogs/other-blogs/mcafee-labs/seven-windows-wonders-critical-vulnerabilities-in-dns-dynamic-updates/

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

 觉得不错,就点个 “在看” 或 "赞” 吧~

Windows “七大奇迹”:DNS Dynamic Updates 中的7个严重漏洞相关推荐

  1. 【BlackHat】亚马逊和谷歌修复DNS即平台中的严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 在2021年美国黑帽大会上,云安全公司 Wiz 的两名安全研究员Shir Tamari 和 AmiLuttwak 披露了影响DNS托管服务 ...

  2. Windows下的DNS命令用法

    "Windows下DNS相关命令的用法." 在协议分析过程中,经常会遇到一种情况,一次对某域名抓包的过程中,抓到了某个域名的DNS请求,之后再抓包,却抓不到的情况. 这时候就需要D ...

  3. 在“DNS管理器”中手工增加DNS主机(A)或者别名(CNAME)记录时,出现被拒绝的错误...

    问题现象: AD域控制器操作系统为Win2008R2,在"DNS管理器"中手工增加DNS主机(A)或者别名(CNAME)记录时,出现被拒绝的错误.但是将客户端加入域后,在" ...

  4. windows server 2003 DNS 细谈系列之(二)记录类型、数据库

    windows server 2003 DNS 细谈系列之(二)记录类型.数据库<?xml:namespace prefix = o ns = "urn:schemas-microso ...

  5. 15、如何在Linux和Windows下清除DNS缓存

    由于各种原因,您可能需要刷新或清除Linux系统上的本地DNS缓存. 如何清除/刷新Linux下的DNS缓存 默认情况下,操作系统级别没有安装或启用DNS缓存,但如果安装了下面列出的任何缓存服务,请使 ...

  6. 在Windows平台架设DNS服务器

    ISC (Internet Systems Consortium) 在二零零七年八月二十七日宣布了 Bind 8 历史使命的终结.ISC 鼓励还在使用 Bind 8 的用户从安全方面考虑要迅速迁移到 ...

  7. php清空dns缓存文件,dns清空-windows刷新本地DNS缓存的几种方法

    windows刷新本地DNS缓存的几种方法 产生原因分析: 1.常有人问到域名解析了不是即时生效的嘛,怎么还是原来的呢?答案就是在本地DNS有解析缓存,电脑第一次访问后,在一定的时间内就将其缓存下来, ...

  8. windows下配置DNS服务器

    在Windows下建立DNS服务器和辅助DNS,解析80端口的Web服务器和FTP服务器. 步骤: 一,创建主DNS服务器 1.手工指定DNS服务器的IP,掩码,网关,首选DNS:如图 2.创建正向主 ...

  9. 扎哈遗作:北京大兴机场,耗资800亿,被英国《卫报》评为新世界七大奇迹!...

    全世界只有3.14 % 的人关注了 青少年数学之旅 在经历了7次综合模拟演练.3场验证试飞之后,北京大兴国际机场终于迎来它"凤凰展翅"的高光时刻. 这也意味着,北京将成为世界首个拥 ...

最新文章

  1. EPSON机器人的以太网通讯简单总结
  2. 【译】码农生涯十六条不要
  3. 经典C语言程序100例之九四
  4. 深入剖析阿里云推荐引擎——新架构,新体验
  5. idle不是python自带的开发工具_Python的开发工具
  6. Magento教程 3:如何在Magento社群版(Community Edition)安装范例资料?
  7. 做机器学习的是些什么样的人?Kaggle做了一份居委会式的调查
  8. rk3288 lvds屏参资料_RK3288四核高性能主板,微型工业主机
  9. SourceTree Win10 安装不成功解决过程记录
  10. WinRAR去除广告,亲测可用
  11. 前端开发必备,【项目实战】
  12. SSM房屋租赁管理系统
  13. MATLAB数值计算
  14. 京东商品评论的文本主题分析
  15. AndroidQQ登录
  16. C语言表达式语法分析——递归子程序法
  17. Abbirb120型工业机器人_abb IRB120资料的具体介绍
  18. 益阳安化高考2021成绩查询,2021年安化县高考状元名单资料,今年安化县高考状元多少分...
  19. (转)程序员成功之路 ——The road ahead for programmer(演讲稿)
  20. 宝塔 Plugin ‘InnoDB‘ registration as a STORAGE ENGINE failed 解决办法

热门文章

  1. hdu2571动态规划
  2. Xp账号变成temp
  3. OSPF特殊区域之stub和totally stub配置(二)
  4. ----uni-app之APP更新及静默更新----
  5. Hibernate中的一对一映射
  6. Linux性能及调优指南(翻译)
  7. 【转】Mysql行转换为列
  8. Cacti+Nagios安装后按自己的相关要求修改相关信息
  9. ERP项目实施记录09
  10. Android Camera 3D效果