Windows RDP 服务高危漏洞分析 (CVE-2019-0708)
作者: 启明星辰ADLab
公众号:https://mp.weixin.qq.com/s/5WRJUPgPXU2Ja_R6pRPh_g
1. 背景
2019 年 5 月 14 日微软官方发布紧急安全补丁,修复了 Windows 远程桌面服务的远程代码执行高危漏洞 CVE-2019-0708(CNVD-2019-14264、CNNVD-201905-434),该漏洞影响了某些旧版本的 Windows 系统。由于该漏洞无需身份验证且无需用户交互,所以这个漏洞可以通过网络蠕虫的方式被利用,利用此漏洞的恶意软件可以从被感染的计算机传播到网络中其他易受攻击的计算机,传播方式与 2017 年 WannaCry 恶意软件的传播方式类似。
2. 影响范围
- Windows 7
- Windows Server 2008
- Windows Server 2008 R2
- Windows 2003
- Windows XP
3. RDP协议简介
RDP 是微软终端服务应用的协议,服务端基于 Windows 操作系统,Windows 从 NT 开始提供终端服务。RDP 协议基于 T.128(T.120 协议族)提供多通道通信,并进行了拓展。
RDP 协议的连接流程可以分为 10 个不同的阶段。这里我们关注通道连接相关的几个阶段。
(1)ConnectionInitiation(连接初始化)
客户端通过向服务器发送Class 0 X.224 ConnectionRequest PDU
启动连接请求。服务器使用Class 0 X.224 Connection Confirm PDU
进行响应。之后,客户端和服务器之间发送的所有后续数据都被包裹在X.224
数据协议数据单元(PDU)中。
(2) BasicSettings Exchange(交换基本设置)
通过使用MCS Connect Initial PDU
和MCS Connect Response PDU
在客户端和服务器之间交换基本设置。GCC 的全称是 Generic Conference Control,GCC 作为 T.124 的标准协议,用于连续传输大量数据时,将数据整理分块传输。
(3)Channel Connection (虚拟通道连接)
客户端通过发送multiple MCS Channel Join Request PDUs
加入用户信道,输入/输出通道及所有的静态虚拟通道(IO 和静态虚拟通道 ID信息在 GCC 数据包中)。服务器通过MCS Channel Join Confirm PDU
回复每个通道。
4. 补丁分析
通过补丁包分析,我们发现补丁前后差异在于termdd.sys
文件的 IcaBindVirtualChannels
及IcaReBindVirtualChannels
,增加了对MS_T120
协议通道的判定。如果是通道协议名为MS_T120
,则设定IcaBindChannel
的第三个参数为 31 。
服务端在初始化阶段,会创建MS_T120
, Index 为 31 的通道。在收到MCS Connect Initial
数据封包后进行通道创建和绑定操作。
在IcaBindVirtualChannels
函数中进行绑定时,IcaFindChannelByName
函数只根据通道名进行通道查找。当通道名为MS_T120
(不区分大小写)时,会找到系统内部通道 MS_T120
的通道并与之绑定,绑定后,通道索引会即被更改为新的通道索引。
5. 漏洞原理分析
我们在客户端MCS Connect Initial
数据封包中,增加一个名为MS_T120
的通道。
接下来,我们释放这个 Channel 。我们向MS_T120
通道发送构造的数据,但由于这个通道已经被绑定到内置的MS_T120
通道,所以数据最终会派发到相应的处理函数rdpwsx!MCSProtData
中,然后调用MCSChannelClose
函数关闭通道。
此后,我们向系统的MS_T120
通道发送数据,再次引用被关闭的通道,从而导致 UAF 漏洞。
6. 解决方案
- 目前启明星辰已经发布了对应的产品级解决方案,相关链接:https://www.venustech.com.cn/article/1/9148.html。
- 对于 Windows 7 及 Windows Server 2008 的用户,及时安装 Windows 发布的安全更新。
- 对于 Windows 2003 及 Windows XP 的用户,及时更新系统版本。
- 临时危害减轻措施:开启网络身份验证(NLA)。请注意如果攻击者拥有合法的网络身份,依然可以绕过该身份验证,利用漏洞攻击目标主机。
启明星辰积极防御实验室(ADLab)
ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截止目前,ADLab已通过CVE累计发布安全漏洞近1000个,通过 CNVD/CNNVD累计发布安全漏洞近500个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。
以上是 Windows RDP 服务高危漏洞分析 (CVE-2019-0708) 的全部内容, 来源链接: utcz.com/p/199345.html