本周堪称是安卓设备的“黑色周”,几天前刚被爆出 Stagefight媒体库上存在胜似“心脏滴血”的高危漏洞 ,这两天安全研究人员再曝可远程致使安卓设备无法正常接打电话的最新漏洞。
趋势科技的安全研究员在安卓设备的mediaserver服务上发现了一个整数溢出漏洞,可远程致使超过全球55%的安卓手机崩溃,连最基本的打电话接电话都不行。
Android 4.3 Jelly Bean及其之后的所有版本均受影响,包括Android 5.1.1 Lollipop,以至于有数百万的安卓用户都可能被黑客攻击。
黑客可通过下面的两种方式利用该漏洞:
1. 通过一个恶意的安卓app 2. 通过一个特别构造的网站
最简单的方法就是引诱存在安全问题的安卓手机到一个设有陷阱的网站上。如果是因为这种方法使得手机没反应,只需重启手机即可恢复正常。
然而,本周三趋势科技在其 博客 中指出,如果是通过恶意APP入侵的手机,则会对手机造成比较长远的影响。
恶意APP的工作方式可被设计成:只要手机被打开,APP就会自动运行,此时手机就会出现短暂的不受控制——出现无反应、静音、无法打电话、无法接听电话等情况。
该漏洞存在于mediaserver服务上,mediaserver服务是安卓手机用于索引媒体文件的一个服务。造成该安全威胁的原因是mediaserver服务不能正确的处理畸形文件。当mediaserver服务解析MKV文件时会出现整数溢出,解析音频数据时,攻击者可以读取缓冲区数据,重写NULL数据。所以会导致服务崩溃。
漏洞细节的源码:
865 size_t offset = 1; 866 size_t len1 = 0; 867 while (offset < codecPrivateSize && codecPrivate[offset] == 0xff) {//codecPrivate is controlled by the mkv file 868 len1 += 0xff; 869 ++offset; 870 } 871 if (offset >= codecPrivateSize) { 872 return ERROR_MALFORMED; 873 } 874 len1 += codecPrivate[offset++]; 875 876 size_t len2 = 0; 877 while (offset < codecPrivateSize && codecPrivate[offset] == 0xff) { 878 len2 += 0xff; 879 ++offset; 880 } 881 if (offset >= codecPrivateSize) { 882 return ERROR_MALFORMED; 883 } 884 len2 += codecPrivate[offset++]; 885 886 if (codecPrivateSize < offset + len1 + len2) {//len1 or len2 maybe 0xffffffff, then integer overflow happened 887 return ERROR_MALFORMED; 888 } 889 890 if (codecPrivate[offset] != 0x01) { 891 return ERROR_MALFORMED; 892 } 893 meta->setData(kKeyVorbisInfo, 0, &codecPrivate[offset], len1);//crash in here
安全研究员于5月底就将该问题报告给了谷歌安全团队,然而谷歌却将其分类为低危漏洞。