当前位置: 主页 > 天线宝宝 > 内容

热门内容

GIF表情会引发微信闪退吗?

时间:2017-09-27 00:38  来源:未知  作者:admin

  5月17日左右,微信群中出现了可使 iOS 版微信闪退的GIF表情。5月26日傍晚,360安全研究员宋申雷表示,微信知道这个漏洞两周了,但是拦截策略依然不行,第一个crash出现时就对样本做了hash 拦截,这都两周了,改一个字节的版本都有多少个了。此外,他还指出,现在不在原图改字节了,直接把有漏洞的最后一帧构造到任意的GIF中。

  5月17日起,在各个微信群中流传着一个天线宝宝的GIF表情。在iOS版的微信上,只要打开了包含这个GIF表情的聊天窗口,就会造成微信闪退。

  在进行具体分析之前,对崩溃原因进行了猜测:(1)iOS系统自带GIF解析功能存在问题;(2)微信自己实现GIF解析的功能,由于对输入数据的校验不严格,导致异常。经过测试,发现iOS版QQ不受影响,因此可以排除iOS的GIF解析问题。

  初始的GIF样本有1MB之多,不利于定位引起问题的具体数据,因此我们需要对样本进行精简。通过010 Editor打开原始样本GIF,利用GIF模板解析,发生解析异常,这就表示样本GIF的格式存在问题。

  从模板解析的情况显示,在38帧正常的图片数据后,出现了异常的数据。如图所示,因此我们将正据部分移除,仅保留异据,进行下一步精简。

  可以看到,剩余的异据的部分有10多万个,通过二分法的方式进行测试和排除。具体就是,删除一半后,测试另外一半是否可以导致崩溃。如果崩溃了,说明引起异常的数据在保留的一半中,反之则说明在删除的部分中。帮我找一些能反映社会现实的平面设计素材要有创意的。

  引起崩溃的代码如下,在else block中,sub_100B6C4F0的作用没有具体,猜测是进行lzw解压缩,并返回解压缩后的数据长度v21。由于v10 = 0x0,截断成unsigned int后为0,这就导致 v10 – 1 – v21 为负数,作为memset第三个参数,相应的unsigned int形式就是一个很大的正数。在memset时,就会导致崩溃。

相关推荐