前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >某工业组态软件整数溢出漏洞(CVE-2018-7471)分析

某工业组态软件整数溢出漏洞(CVE-2018-7471)分析

作者头像
FB客服
发布2018-07-30 12:00:23
9140
发布2018-07-30 12:00:23
举报
文章被收录于专栏:FreeBufFreeBuf

0x1 漏洞信息

CNVD-ID:CNVD-2018-00995

CVE ID:CVE-2018-7471

某公司工业组态软件存在整数溢出漏洞,该漏洞是由于stgopenstorage读取失败,返回的错误代码超出int在32位系统中的范围,攻击者可利用该漏洞执行任意代码。

补丁信息:http://www.kingview.com/news_info.php?num=1000656

漏洞发布:http://www.cnvd.org.cn/flaw/show/CNVD-2018-00995

0x2 OpenStorage函数说明

OpenStorage加载结构化存储的文件,函数返回HRESULT类型变量。函数原型如下:

返回的结果为长整形:当函数读取正常时,返回值为0,读取失败,返回长整型整数

函数说明参考MSDN:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa380024(v=vs.85).aspx.aspx)

0x3查找漏洞函数

根据补丁对比,将漏洞组件确定为Touchvewocx.ocx。经分析,该模块有五个函数有变化,其中三个进行了修改,逐一进行分析。

3.1 0x100223C0

CViewManager::LoadDocInfor(CViewManager this,CPicDocument pd)

放大来看,主要是增加0x10022780部分的判断程序块。

3.1.1 补丁前

var_810(v25)是一个值为负数的int32(函数调用错误是,返回一个负值,其高位为1)变量,系统为64位时,负数扩展高位补F。

3.1.2 补丁后

返回值为dword 类型,返回若不为S_OK,返回值转换为Cstring(whar_t)后,进行异常处理。

3.2 0x10039530

修复后:

将字符串改为wchar

3.3 0x10151880

修补前:

修补后:

0x4 脆弱ActiveX接口确定

Touchvewocx的接口如下:

函数调用路径:

可以基本确定漏洞ActiveX接口为SetProjectPath

0x5 结论

ActiveX组件Touchvewocx.ocx接口函数SetProjectPath(string*)调用OpenStorage( )读取失败是,异常返回长整型(32位系统32位int,64位系统,64位int),函数给返回值分配dword型变量,在32位系统中刚好满足,64位系统中直接截断,造成异常。

*本文原创作者:flypuma,转载请注明来自FreeBuf.COM

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x1 漏洞信息
  • 0x2 OpenStorage函数说明
  • 0x3查找漏洞函数
    • 3.1 0x100223C0
      • 3.2 0x10039530
        • 3.3 0x10151880
        • 0x4 脆弱ActiveX接口确定
        • 0x5 结论
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档