导语:移动端应用的开发涉及到许多第三方SDK,而第三方SDK的安全性很难保证。移动端应用的开发为节约成本、快速成型,一般都会使用多种第三方的SDK,包括支付、统计、广告、社交、推送、地图类的第三方SDK。
前言
据外媒报道,美国媒体机构Zenith发布的最新研究报告预测,在2018年,全球智能手机用户数量将会继续增长。其中,中国智能手机用户数量将位居全球第一,达到13亿,届时将人手一部智能手机。而移动市场份额中,谷歌的Android和苹果的iOS两个操作系统占据了市场份额的98%左右,而其中Android系统的智能设备由于其较高的性价比占据了绝大部分的市场份额。
由此可见,智能终端设备已经占据了人们生活的方方面面。日常生活中,几乎每个人都会接触到智能设备,包括手机、平板、智能手表、智能电视等,其中又以Android系统为主。
移动端应用的开发涉及到许多第三方SDK,而第三方SDK的安全性很难保证。移动端应用的开发为节约成本、快速成型,一般都会使用多种第三方的SDK,包括支付、统计、广告、社交、推送、地图类的第三方SDK。下图所示为经360显危镜后台查询的几款常用SDK使用情况统计数据,从图中可以看出使用了该SDK开发的APP非常多。
图1
而第三方的SDK开发侧重于功能性的完善,在安全性方面的投入较少,导致了今年来由第三方SDK引起的安全事件频发。
第三方SDK安全威胁
近两年已被爆出有安全漏洞的第三方SDK主要有FFmpeg、SQLite、pdfium、个信sdk、chrome内核等,且由于其被广泛使用到大量的APP中,造成漏洞的影响范围非常大。
FFmpeg漏洞概况
FFmpeg的是一款全球领先的多媒体框架,支持解码、编码、转码、复用、解复用、流媒体、过滤器和播放几乎任何格式的多媒体文件。
2017年6月,neex向Hackerone平台提交了俄罗斯最大社交网站VK.com的ffmpeg的远程任意文件读取漏洞。该漏洞利用了FFmpeg可以处理HLS播放列表的特性,而播放列表(Playlist)中可以引用外部文件。通过在播放列表中添加本地任意文件的引用,并将该文件上传到视频网站,可以触发本地文件读取从来获得服务器文件内容。同时,该漏洞亦可触发SSRF漏洞,造成非常大的危害。
图2
此外,360GearTeam发现的编号CVE-2016-6671漏洞,FFmpeg在对SWF文件解码时,在计算解码后数据大小时可导致写入数据超过申请内存空间的大小,从而造成缓冲区溢出。编号CVE-2016-10190漏洞中发现FFmpeg在处理chunk数据时由于有符号整数到无符号整数类型转换引起的堆缓冲区溢出。
当然,FFmpeg被爆出的漏洞不止上述几种。下图所示为FFmpeg官方的修复记录,从中可以看到每一版本均修复了大量的已分配CVE编号的漏洞,新版本同样会有许多未发掘出的漏洞等待修复。
图3
在360显危镜后台根据该第三方库的特征规则搜索查询,在库中40万多个APP中,有月6万多个APP使用了FFmpeg的第三方开源库的代码,如下图所示约占15%。主流的一些视频应用几乎都采用了该开源库用于对多媒体文件的处理。从图中可以看出,该第三方库的使用范围是非常大的,一旦被爆安全漏洞,影响范围将是无法估量的。
图4
SQLite安全现状
SQLite是遵守ACID的关系数据库管理系统,实现了大多数SQL标准。它使用动态的、弱类型的SQL语法,包含在一个相对小的C库中。作为一款嵌入式数据库,它因占用的资源非常低,数据处理速度快等优点被Andriod、iOS、WebKit等流行软件采用。
2017年Black大会上来自长亭科技的议题介绍了基于Memory Corruption的SQLite漏洞。基于该漏洞,可以攻击常见的使用了SQLite的浏览器,包括Safari、Chrome、Opera等。同时,由于大部分应用本地数据库的存储几乎都采用了SQLite实现,这些应用同样受到该漏洞的影响。基于该漏洞可以造成大范围的用户信息泄露,包括用户在浏览器中填写的用户名、密码、身份证、银行卡等敏感信息。另外,基于该漏洞可以实现远程代码执行,从而控制用户终端设备,危害是非常大的。
图5
此外,SQLite也有许多影响严重的漏洞常常被爆出。SQLite从3.3.6提供了支持扩展的能力,通过sqlite_load_extension API(或者load_extension SQL语句)开发者可以在不改动SQLite源码的情况下,通过加载动态库来扩展SQLite的能力。然而该功能被黑客利用,通过SQL注入漏洞加载预制的符合SQLite扩展规范的动态库,从而实现了远程代码执行,危害非常严重。
当然,SQLite的漏洞并不仅限于这几个。随着版本更新,在功能升级的过程中,每一版本均会被爆出大量的不同级别的漏洞。每一版本均会在上一版本基础上修改一些bug和漏洞,并可能会添加新的功能。由于精力有限,无法保证对每一行代码都经过安全审核,新发布的版本中很可能存在未被发现的漏洞。在现有技术体系下,产品漏洞挖掘的过程将会是长期存在的状况。
图6
在Android应用中,只要有本地存储数据的需求,一般均会采用SQLite数据库存储。因此,一旦SQLite被爆安全漏洞,将影响数以万计的Android应用。同时,在某一Android设备中,一般都会预装许多应用或日常使用中安装了许多需要的应用,而这些应用中总会有一款应用使用了SQLite数据库。因此,SQLite的安全漏洞几乎总会影响的该设备。
Chromium威胁分析
Chromium是一个由Google主导开发的网页浏览器,以BSD许可证等多重自由版权发行并开放源代码。Chromium是Google的Chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。
目前,有许多浏览器是基于Chromium开发的,且提供了Windows、macOS和Android版本的浏览器。国内的主流浏览器均采用了Chromium内核,包括360浏览器、猎豹浏览器、遨游浏览器等。由于终端用户对浏览器均会有硬性需求,PC和移动设备中均会安装各种各样的浏览器,总有一款是基于Chrome内核的。
虽然Chrome是Google开发和维护的,但是也被爆出许多漏洞,影响了基于相当内核版本的其他浏览器。微软于2017年10月18日公布了一款藏匿于Google Chrome的浏览器安全漏洞,编号为CVE-2017-5121。该问题是由V8 JavaScript引擎引起的,通过引起应用崩溃导致攻击者可以在内存地址中放置任意的数据。通过精心构造的攻击,该漏洞可以达到远程代码执行(RCE),影响几乎所有基于Chrome内核的浏览器。Google已于今年9月份中旬在Chrome 61版本修复了相关漏洞。
每年Chrome浏览器都会被爆出许多安全漏洞。如下图所示,每年Chrome均会被爆出大量的多种类型的安全漏洞,影响几乎所有Chrome内核的浏览器。此外,由于漏洞报给Google修复,其他基于Chrome内核的浏览器修复该漏洞需要较长的周期,漏洞的危害还是存在的。同时,其他厂商的浏览器很难跟上Chrome内核的更新速度,以至于很多浏览器还是很久之前的旧版本内核,导致该版本还受以往历史漏洞的影响。
图7
图8
由于许多浏览器是基于Chrome内核开发的,且Android上许多应用中均会使用到浏览器的功能,一旦被爆漏洞影响将是非常大范围的。
Android系统安全趋势
Android是一种基于Linux的自由及开放源代码的操作系统,由Google公司和开放手机联盟领导及开发,主要设计用于触控荧幕移动设备如智能手机和平板电脑。目前,Android系统已经成为现今最流行的智能设备操作系统。
Android系统中,也使用了大量的第三方SDK组件用于其系统底层的基础服务功能,例如蓝牙协议栈实现、HTTPS协议实现、音视频编解码等。然而,Google使用的这些第三方组件也时常会被爆出有高危漏洞,且鉴于Android系统的广泛流行性,影响也是巨大的。下图所示内容为统计的2017年1月份至11月份Android系统中修复的第三方组件中的漏洞数量情况。从图中可以看出,第三方组件的安全性严重威胁到了Android系统的安全性。
图9
下图所示为2017年1月份至11月份每月Android系统修复的第三方组件漏洞数量,平均每月约有80个漏洞影响Android系统的安全性。
图10
总结
在软件开发过程中,大量复用第三方SDK加速产品成型成为普遍现状,而第三方SDK的安全漏洞也将影响这些产品。如FFmpeg、SQLite、Chromium、PDFium等开源库,均在安全漏洞的挖掘上投入了非常多的精力,尚且会被爆出许多高危漏洞影响巨大。也有许多优秀的开源产品,重点将精力投入到功能的开发与完善上,而未经过任何的安全审核。这些开源产品中,代码中很难避免地留有大量的安全漏洞,一旦被恶意攻击者利用将对用户造成巨大损失。
目前,国内存在许多提供给第三方用于快速接入的SDK库,然而其安全现状却令人堪忧。绝大部分第三方SDK均缺乏安全审核环节,造成代码中总是有较多的安全漏洞,影响接入该SDK的应用的安全性。对于缺乏安全审核能力的厂商,我们推荐使用360显危镜对Android应用进行线上漏洞扫描,扫描结果报告中将列出风险点供厂商评估修复。同时,针对Android应用中存在较多漏洞,且修复难度较大的问题,360Vulpecker在业内首创了安全SDK。在应用发布时接入该SDK,基于运行时修复技术可以在应用中修复绝大多数常见的通用型漏洞,致力于为缺乏Android应用漏洞修复能力的厂商提供简单通用的漏洞处理方案,使其不再受到常规漏洞的侵扰。
参考链接
[1.] https://hackerone.com/reports/226756
[3.] http://www.cvedetails.com/product/15031/Google-Chrome.html?vendor_id=1224