一次失败的CVE-2020-1394漏洞分析

阅读量210506

|评论4

|

发布时间 : 2020-07-30 10:00:47

 

漏洞背景

最近微软更新榜上RPC和COM类型的相关的内存破坏类漏洞比较多,目前也在研究,但是一直研究了一个多月也没挖到。然后想到不如先自己去补丁对比看看都有哪些类型的错误,后续自己也可以找找相似的点,可惜现在微软对于这类漏洞不给予赏金了,不过混个CVE也是极好的。

最终选取了CVE-2020-1394这个漏洞去研究下,这个漏洞由360的漏洞挖掘机Peng神发现。

 

漏洞分析

通过windows 7月补丁公告看到这个漏洞是 Windows Geolocation Framework这个服务造成的。

那么从什么地方入手呢?我们可以通过oleview去搜索local service相关的服务。可以搜索到相关的服务。


最终经过一系列排查发现LocationFramework.dll这个库里面的函数做了相应的修改,也比较符合最近RPC函数内存破坏类的一些特征。

通过IDA的补丁对比发现有6处函数修改,都是一些put和get类的函数,猜想这是一个竞争条件引起的漏洞。

 

由于函数不是很多,我们看下这些函数补丁前后对比的变化。


补丁前


补丁后


补丁前


补丁后


补丁前


补丁后

补丁前


补丁后

经过观察上面的那些函数虽然修补了,但是没发现存在什么问题,应该是顺手修补的。来看下最后关键的几个函数。具体补丁前后就不对比了,反正是加锁,防止竞争条件。

 

跟踪到ATL::AtlComPtrAssign函数里面,可以看到如下代码

 

CVisitInformation::get_PositionInfo函数代码

 

看到上面的release,基本上可以确定这是一个竞争条件导致的UAF漏洞了。由此可以确定这个问题所产生的原因了,因为put释放,然后get中引用而导致产生的UAF问题。由于这里面PoC构造有点问题,最终也没复现出漏洞。原因是这个接口无法直接调用,需要通过其他接口去调用,但是其他接口传入一个结构体,最终卡在结构体上面,问Peng神要PoC想复现下漏洞,但是Peng神也找不到了,就此作罢。

 

总结

这是一个竞争条件造成的UAF问题,最终没有构造出PoC真是一个小小的遗憾,如果有人能有PoC也发我一份,学习下。本人刚刚接触RPC和COM漏洞,能力有限,如有错误请斧正。

本文由hackyzh原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/212095

安全客 - 有思想的安全新媒体

分享到:微信
+12赞
收藏
hackyzh
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66