漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-011599
漏洞标题:极点五笔输入法一处内存异常释放
相关厂商:极点五笔输入法
漏洞作者: xsjswt
提交时间:2012-08-31 14:33
修复时间:2012-08-31 14:33
公开时间:2012-08-31 14:33
漏洞类型:拒绝服务
危害等级:低
自评Rank:1
漏洞状态:未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-08-31: 积极联系厂商并且等待厂商认领中,细节不对外公开
2012-08-31: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
极点五笔输入法一处内存异常释放导致宿主进程退出
详细说明:
极点五笔输入法存在一处内存异常释放,导致宿主进程退出的BUG。由于在调试机器上无法复现次问题,无法进一步分析是否能利用。(问题反复出现在老大秘书的机器上,但是秘书机器有各种秘密文件,我不能上去调试,只能如此了)
极点五笔输入法7.13会记录用户输入4个键根仍然未匹配上要打的字,然后紧接着按键,且能匹配上的词组,应该是用于分析输入的那4个键与紧接的词组关系,添加词库之类。
但是在老大秘书的电脑上,频繁出现崩溃的情况(具体体现为按键快,打错字的时候经常导致qq,word等崩溃的情况)。
抓了一个qq崩溃的dump回来看,发现是试图读取已经释放的内存,但是又木有SEH处理导致的崩溃。
漏洞证明:
创建匿名FileMap分配内存
将FileMap对象map进内存里来,在我的XP SP3上map base=0xbe0000
多次输入无效后,首个有效输入会被记录
对记录的输入进行分析。
在我的调试环境下,此处内存一直未被释放,怀疑为输入特定的字符会导致别处的线程进行Unmap操作,而分析线程仍然去读取数据导致的。
因为创建map的函数返回后会紧接着做出判断
故unmap操作只能理解为程序退出的析构。
如果特定的输入能导致线程做出退出之类的判断,怀疑也能做其他的事情,因为没有环境,无法进一步分析。要分析老大不让。
修复方案:
1. 仔细分析下用户输入和处理用户输入的逻辑是否存在问题
2. 进行内存读写操作前使用IsBadReadPtr/IsBadWritePtr进行判断,虽然按照MJ的说法,这两个API并不靠谱
3. try/catch or __try/__except
版权声明:转载请注明来源 xsjswt@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝