网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

漏洞公告团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 网络安全 > 漏洞公告 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

CVE-2020-0609和CVE-2020-0610漏洞分析:微软RDG漏洞,允许攻击者在目标设备上实现预认证远程代码执行

文章来源:重庆网络安全 发布时间:2020-03-11 03:01:02 围观次数:
分享到:

摘要:Microsoft在2020年1月的安全更新中修复了RDG中的两个漏洞CVE-2020-0609和CVE-2020-0610,这两个漏洞都可能使攻击者能够在目标设备上实施预认证的远程代码执行。

  Microsoft在2020年1月的安全更新中修复了RDG中的两个漏洞CVE-2020-0609和CVE-2020-0610,这两个漏洞都可能使攻击者能够在目标设备上实施预认证的远程代码执行。

 在执行漏洞分析之前,我们需要分析修复前后受影响的DLL版本之间的差异。

blob.png

 经过分析,发现其中只有一个被修改。首先,RDG支持三种不同的协议,即HTTP,HTTPS和UDP。更新的功能主要负责处理UDP协议。通常,我们可以比较更新前后的功能,但是此功能的代码非常大,并且有很多更改。因此,我们直接给出与此函数相对应的伪代码,并删除一些不相关的代码:

blob.png

 RDG处理的UDP协议允许将具有大量数据的消息拆分为多个独立的UDP数据包。由于UDP是无连接协议,因此数据包到达的顺序不确定。此函数的功能是重新组合消息,以确保每个消息都位于正确的位置。每个报文都包含一个Header,其中包含以下字段数据:


  fragment_id:报文在序列中的特定位置;


  num_fragments:序列中报文的总数;


  fragment_length:报文数据的长度。

 消息处理功能使用报文的Header数据来确保可以正确的顺序重组接收到的消息。但是,该功能在实现上存在缺陷,因此攻击者将能够利用此漏洞进行攻击。


CVE-2020-0609


blob.png

 memcpy_s()函数将每个片段数据(fragment)复制到重组缓冲区中的偏移地址。重组缓冲区在堆上分配。 每个片段的偏移量由fragment_idx 1000获得。但是,边界检查逻辑未考虑该偏移量。在这里我们可以假设buffer_size = 1000,然后我们发送一条包含2个片段的消息。


  1.第一个片段消息的长度(fragment_id = 0)为1。这时,this-> bytes_write等于0,因此它可以通过边界检查。


  2.代码将1字节的数据写入偏移量为0的缓冲区地址,bytes_written+ 1。第二个片段消息(fragment_id = 1)的长度为998。这时,this-> bytes_write = 1,并且1+998 <1000,因此它可以通过边界检查。


  3.该代码将998字节的数据写入偏移量为1000(fragment_id * 1000)的缓冲区地址,这导致在缓冲区结束后写入998字节。

  应当注意,这里的分组不一定按顺序到达。如果我们发送的第一条消息是fragment_id = 65535(最大值),它将被写入具有65535x 1000偏移量的地址,该地址在缓冲区末尾后为65534000字节。攻击者可以修改fragment_id以将最多999个字节的任何数据写入缓冲区中任何偏移量为1到65534000的地址。与传统的线性堆溢出漏洞相比,该漏洞更加灵活。攻击者可以利用此漏洞来控制写入数据的大小,以及写入数据的位置。如果与其他技术结合使用,攻击者将能够更准确地写入数据,以避免不必要的数据崩溃。


CVE-2020-0610


blob.png

 上图中的类对象包含一个32位无符号整数数组,其中每个数组元素对应于1个分段数据。当收到一条分段数据时,相应的数据值将从0变为1。当所有元素都设置为1时,代码将完成消息重组操作并开始处理完整的消息。该数组最多可容纳64个元素,但是fragment_id的值的范围是0到65535。该代码执行的唯一验证操作是确保fragment_id的值小于num_fragments,但后者也可以设置为65535。因此,我们可以将fragment_id设置为65到65535之间的任何值,以便我们可以在数据边界之外写入1(TRUE)。您可能会发现很难通过仅将1值设置为1来实现远程代码执行,但是即使很小的更改也会对程序的正常行为产生巨大影响。


  漏洞缓解


  如果用户未安装修复补丁,则攻击者将能够利用此漏洞进行攻击。因此,用户也可以直接禁用UDP传输功能,或使用防火墙阻止UDP端口来解决此安全问题。

blob.png


本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:CVE-2020-0609 CVE-2020-0610 微软RDG漏洞 预认证远程代码执行 重庆网络安全

上一篇:“Collide+Probe”和“Load+Reload”:AMD处理器漏洞两种新型侧信道攻击,利用L1D缓存预测变量访问原本不可访问的数据。
下一篇:CVE-2020-8813漏洞分析:网络流量监测图形分析工具 Cacti RCE 漏洞

热门资讯

鼠标向下滚动