Detours信息泄漏漏洞

Detours信息泄漏漏洞

 

受影响的软件及系统

Detours3.0和之前版本

 

简介

与该漏洞相关的最早描述可见于tk教主发现的“微软EMET破坏系统ASLR安全机制漏洞”(参考[1]),其实原理是一样的,都是因为使用了Detours库的原因。

 

漏洞危害

很多安全软件出于安全考虑,会把很多模块注入到IEOffice等软件里面,而很多注入模块里面使用Detours库对系统API进行Hook操作,Detours库里面存放系统API原始地址的内存有信息泄漏漏洞,这样就会破坏这些软件的ASLR安全机制,继而进行漏洞利用。

 

漏洞原理

Detours进行Inline Hook操作时,在一些固定的地址(譬如0x6FFF00000x80010000不同的Detours版本有差异)处分配了(除非已经被占用而不能分配)一块固定大小的具有可执行属性的内存。在这个内存上面存放着规则的结构体数组,里面有很多被Hook函数的真实地址。

可以通过Review Detours的源代码来一窥端倪。

Detours信息泄漏漏洞_第1张图片

同时,我们可以自己写代码调试一下,看看是否在0x6FFF0000固定地址能够看到这个结构呢,如下图。

 

Detours信息泄漏漏洞_第2张图片

 

目前可下载的Detours个人最高版本是3.0,该版本还没有解决这个问题,但是从源码实现上面来看,做了一些小改动,把分配部分封装成了两个函数来处理。但是依然使用了固定地址,如果使用了Detours3.0,也需要堵上这个问题。

Detours信息泄漏漏洞_第3张图片

 

漏洞修复

这边的工程师zeno已经提了一种简单实用的方法,通过直接修改Detours的源码,在使用VirtualAlloc分配内存时,对指定的基址,加入一个随机值,这样就把这块内存的地址一定程度上的随机化了,可以抵抗通过硬编码这块地址来进行ROP,继而降低漏洞利用的难度。

 

参考文档

[1] 微软EMET破坏系统ASLR安全机制漏洞http://www.nsfocus.net/index.php?act=advisory&do=view&adv_id=55

[2] Detours http://research.microsoft.com/en-us/projects/detours/

 

你可能感兴趣的:(Detours信息泄漏漏洞)