CVE-2020-0609和CVE-2020-0610漏洞分析:微软RDG漏洞,允许攻击者在目标设备上实现预认证远程代码执行
摘要:Microsoft在2020年1月的安全更新中修复了RDG中的两个漏洞CVE-2020-0609和CVE-2020-0610,这两个漏洞都可能使攻击者能够在目标设备上实施预认证的远程代码执行。
Microsoft在2020年1月的安全更新中修复了RDG中的两个漏洞CVE-2020-0609和CVE-2020-0610,这两个漏洞都可能使攻击者能够在目标设备上实施预认证的远程代码执行。
在执行漏洞分析之前,我们需要分析修复前后受影响的DLL版本之间的差异。
经过分析,发现其中只有一个被修改。首先,RDG支持三种不同的协议,即HTTP,HTTPS和UDP。更新的功能主要负责处理UDP协议。通常,我们可以比较更新前后的功能,但是此功能的代码非常大,并且有很多更改。因此,我们直接给出与此函数相对应的伪代码,并删除一些不相关的代码:
RDG处理的UDP协议允许将具有大量数据的消息拆分为多个独立的UDP数据包。由于UDP是无连接协议,因此数据包到达的顺序不确定。此函数的功能是重新组合消息,以确保每个消息都位于正确的位置。每个报文都包含一个Header,其中包含以下字段数据:
fragment_id:报文在序列中的特定位置;
num_fragments:序列中报文的总数;
fragment_length:报文数据的长度。
消息处理功能使用报文的Header数据来确保可以正确的顺序重组接收到的消息。但是,该功能在实现上存在缺陷,因此攻击者将能够利用此漏洞进行攻击。
CVE-2020-0609
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
上图中的类对象包含一个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端口来解决此安全问题。
相关热词搜索:CVE-2020-0609 CVE-2020-0610 微软RDG漏洞 预认证远程代码执行 重庆网络安全
上一篇:“Collide+Probe”和“Load+Reload”:AMD处理器漏洞两种新型侧信道攻击,利用L1D缓存预测变量访问原本不可访问的数据。
下一篇:CVE-2020-8813漏洞分析:网络流量监测图形分析工具 Cacti RCE 漏洞
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了