安全路透社
当前位置:安全路透社 > 网络转载 > 正文

独家首发 | CVE-2017-11816 GDI信息泄露漏洞分析

*本文原创作者:比尔.盖茨,本文属于FreeBuf原创奖励计划,禁止转载

我的漏洞被别人先报了,所以就把这个漏洞的细节公布一下吧。写的不是很详细,有poc大家可以自己调一调。

这个漏洞主要是因为GDI32种在处理metafile META_DIBSTRETCHBLT record 时候内存拷贝,越界读,导致的信息泄露漏洞。

cve-2017-11816 GDI+ 信息泄露漏洞分析

图一

在GDI32中,bMetaGetDIBInfo调用SignedCJSCANto函数,并计算buffer的大小。这个buffer的大小由图一中标有下划线的值来确定。分别是:0×100019 0×200 0×8.

在SignedCJSCAN函数中, SignedCJSCAN调用CJSCAN函数,

在图二中,a1初始值是0x10001c,a3是0×8(即上面所说的位置的值)

在CJSCAN函数中,经过遍历a1(初始值是0×100019)经过UlongLongTolong ,ULongAdd函数来进行数值转换。到最后

变量a4 的值是0x10001c,如下图所示

CVE-2017-11816 GDI+ 信息泄露漏洞分析

图二

经过图二中的函数计算,得到buffer的大小,0x10001c*0×200=0×20003800,入图3所示。(0×200即poc中蓝色下滑线的值)

CVE-2017-11816 GDI+ 信息泄露漏洞分析

图三

然后就是申请内存,内存大小就是上面的步骤计算出来的值,0x2000c000,如图4

CVE-2017-11816 GDI+ 信息泄露漏洞分析

图四

然后MRBDIB::vInit 函数拷贝 wmf record数据,从poc 0x11d2偏移位置开始拷贝,如图5,由于拷贝的大小没有经过严格交验,导致拷贝的内存大小可以任意被控制,最后导致读越界,从而造成了,堆数据泄露,等其他敏感信息泄露漏洞。

CVE-2017-11816 GDI+ 信息泄露漏洞分析

图五

这个漏洞可以在wordpad outlook直接触发,如果想在edge,ie中触发需要修改一下poc中的某些数据

测试环境:win7 32bit

漏洞影响系统:win7 到win10 32 bit ,64bit

重现方式:将poc文件,拖拽到wordpad中即可触发漏洞。

poc 地址:https://pastebin.com/G5BE5v5Q

把十六进制数据贴到010editor,然后保存成wmf文件格式即可。

*本文原创作者:比尔.盖茨,本文属于FreeBuf原创奖励计划,禁止转载

未经允许不得转载:安全路透社 » 独家首发 | CVE-2017-11816 GDI信息泄露漏洞分析

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册