首页 >> 关于我们 >> 新闻动态

深度聚焦 | CVE-2020-0609/0610漏洞免费在线检测

联软科技
2022年11月14日

前言:一场突如其来的疫情,阻止了大家返岗复工的脚步,为响应国家号召,减少疫情的扩散,最近很多企业客户使用远程办公的方式开展工作,联软科技安全实验室研究人员了解到有些客户采用虚拟桌面、 RDP等方式临时开展远程运维和远程办公。

微软官方在2020年1月份第二周发布了多个安全漏洞的公告,其中RD Gateway存在远程代码执行漏洞:CVE-2020-0609,CVE-2020-0610等漏洞直接影响RDP服务,给远程办公带来安全风险

当未经身份验证的攻击者使用 RDP 连接到目标系统并发送经特殊设计的请求时,Windows 远程桌面协议(RD 网关)中存在远程执行代码漏洞。此漏洞是预身份验证,无需用户交互。成功利用此漏洞的攻击者可以在目标系统上执行任意代码。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。

什么是RDG?

RDG(Remote Desktop Gateway)也叫做Terminal Services Gateway(终端服务网关)是为远程桌面RDP提供登陆的Windows服务器组件。用户登陆RDP服务时,并不是直接连接到RDP服务器,而是连接到RDG网关进行认证,通过认证后网关会转发RDP流量到用户指定的地址,完成远程桌面服务的建立。

 

漏洞风险

RDG支持3种不同的协议:HTTP, HTTPS 和 UDP,通过分析受影响的DLL和修复后的DLL文件,发现处理UDP协议的函数进行了更新。RDG的UDP协议允许大量的消息分割成不同的分割的UDP包。由于UDP是无连接的,因此包到达时是无序的。该函数的作用的重新聚合函数,确保每个包处于正确的位置。每个包中都含有以下域的header:

●fragment_id: 表示序列中包的位置

●num_fragments: 表示序列中包的数量

●fragment_length: 表示包中数据的长度

 

消息处理函数用packet header来确保重新聚合后的消息完整性和有效性,但是该函数的实现过程中存在可以被利用的漏洞。

CVE-2020-0609

 

图:handler包的边界检查

memcpy_s 会复制每个fragment到重新组合buffer中的offset,buffer是在堆中分配的。每个fragment的offset是由fragment id乘以1000计算出来的。边界检查并不会考虑offset。假设buffer_size是1000,研究人员发送了含有2个fragment的消息。

●第一个fragment (fragment_id=0) 的长度是1。this->bytes_written 是0,所以边界检查通过了。

●会有1个字节写入offset为0的buffer,bytes_written会增加1。第二个fragment      (fragment_id=1) 的长度是998,this->bytes_written 是1,1+998仍然小于1000,所以检测检查仍然是通过的。

●998字节会写入offse为1000(fragment_id*1000)的buffer中,这会让998字节传递到buffer的末尾。

需要说明的是包并不是有序发送的。所以,如果发送的第一个包fragment_id=65535,那么offset就等于65535*1000,65534000字节超过了buffer的尾部。通过修改fragment_id,就可以在缓存的尾部的1到65534000之间写入999字节。该漏洞要比典型的线性堆溢出漏洞更加灵活。不仅可以控制写入数据的大小,还可以控制写入的offset。通过精准控制写入地址,就可以实现准确地写内存,避免不必要的数据破坏。

 

CVE-2020-0610

图:收到的fragment包的处理追踪

 

Object类有一个32位无符号整数数组(每个fragment一个对应的无符号数)。接收到fragment后,对应的数组记录就会被设置为0或1。一旦元素被设为1,就表明消息重新组合完成了,并且消息可以被处理。数组的空间最多有64条记录,但fragment ID的范围为0到65535。只验证了fragment_id 小于 num_fragments (也可以被设置为65535)。因此,将fragment_id设置为65到65535可以在数组边界外写入1 (TRUE)。通过控制内存中数据值,结合精准写入的构造代码,可以修改程序的执行逻辑,从而引发任意代码执行。

 

受影响的操作系统版本范围

● Windows Server 2012

●Windows Server 2012 R2

● Windows Server 2016

● Windows Server 2019

 

修复建议

1. 微软官方已经发布漏洞修复补丁,建议用户及时确认是否受到漏洞影响,尽快采取修补措施。安全更新连接如下:

https://portal.msrc.microsoft.com/zh-cn/security-guidance/releasenotedetail/2020-Jan

2. 此漏洞仅影响RDP服务的UDP传输,默认端口3391,因网络原因或无法及时进行补丁安装进行修复时,可以通过配置RDG服务的UDP协议和端口,或者使用防火墙规则禁用UDP协议的3391端口,来暂时缓解漏洞风险。

RDG服务相关配置

防火墙规则配置

 

【推荐解决方案】

 

1. 疫情期间,针对采用RDP方式开启远程运维的客户可免费申请联软科技UniCSM网络空间资产测绘系统(SaaS)平台,针对CVE-2020-0609/0610漏洞进行在线漏洞检测,并可持续对远程办公场景下的互联网暴露面、供应链漏洞、信息泄露等风险进行监控,提供专家建议。

 

2. 采用更安全的远程办公、远程运维解决方案,基于零信任架构的联软软件定义边界SDP远程安全接入平台,可实现服务隐身,天然抗攻击,比VPN、远程桌面等方式更安全,更稳定,易扩展,更快捷高效。

 

相关阅读

1.官方安全通告:https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-0609

2.漏洞风险分析参考出处:https://www.kryptoslogic.com/blog/2020/01/rdp-to-rce-when-fragmentation-goes-wrong/

 

最新动态

  • 零信任落地实践| 打造内外网一致的安全体验 助力银行业务流畅运行

  • 星选企业!联软在端点与主机安全、身份与访问管理领域再获权威认可

热门推荐