首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >独家首发 | CVE-2017-11816 GDI信息泄露漏洞分析

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

作者头像
FB客服
发布2018-02-27 11:53:30
7590
发布2018-02-27 11:53:30
举报
文章被收录于专栏:FreeBufFreeBuf

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

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

图一

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

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

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

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

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

图二

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

图三

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

图四

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

图五

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

测试环境:win7 32bit 漏洞影响系统:win7 到win10 32 bit ,64bit 重现方式:将poc文件,拖拽到wordpad中即可触发漏洞。 poc 地址:https://pastebin.com/G5BE5v5Q

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档