基于Android系统的移动应用安全检测系统设计

2021-09-10 07:22赵一凡林逸风张鸿飞葛轶众
信息化建设 2021年4期
关键词:代码声明检测

赵一凡 林逸风 张鸿飞 葛轶众

从组件、代码和数据三个层面分析移动应用风险存在的原因,通过敏感权限风险检测、权限过度声明风险检测、权限滥用检测、权限越权检测、信息跨境传输检测和信息加密通道风险检测6个方面,设计出的这套全面准确的移动应用安全检测系统

近年来,随着网络通信技术的发展,互联网正在以前所未有的速度改变着世界。移动互联网通过不同的移动智能终端进行信息传递,用户可以使用基于移动智能系统的由第三方服务商提供的各类服务和功能。整个移动互联网生态不断完善,移动应用功能更加细化,与生活联系越发紧密。

随着移动互联网的发展,移动互联网用户数量、应用种类、市场规模等均呈现迅猛增长态势。《中国移动互联网发展状况及其安全报告(2020)》统计数据显示,2019年我国移动网民人均安装App总量已经从2018年的51款增长到了2019年的60款;在2019年第四季度,人均App每日使用时长达5.1小时,同比2018年增长了近1个小时,超过80%的智能终端使用的是Android系统。但由于Android系统自身的开源性特点,导致众多未经过严格审核的应用进入了市场,提升了安全风险。为此,笔者针对Android系统的特性,分析风险发生的原因,并设计了一套安全可靠的移动应用检测系统。

Android系统应用安全隐患分析

传统的移动应用安全检测只针对单个Android移动智能终端,但缺少对应用风险的检测。Android系统应用的安全隐患主要存在3个层面:组件安全、代码安全以及数据安全。

组件安全。Android系统应用内部的activity、service、content provider、broadcast receiver等组件的互相通信是通过Internet协议实现的,需要在Androidmainfest.xml文件中进行配置。由此可能产生恶意调用、拦截有序广播、恶意启动应用服务、调用组件等一系列风险。

代码安全。Android SDK编译的工程打包为一个安装程序文件,格式为Apk(Android package)。Android应用通过将安装包Apk文件直接传到Android手机中即可执行安装。但是Apk文件极易被反编译、重打包,导致Apk文件有被篡改、被侵入的风险。

数据安全。数据安全风险存在于传输和存储过程。存储数据时,将软件运行数据或隐私数据保存在不可控的外面存储,会提升被篡改或者被攻击的风险,攻击者也可能会利用存储中的登录凭证来窃取网络账户隐私数据。在数据传输过程中,由于应用只和固定服务器之间通信,即使使用加密传输但忽略证书验证环节,也会导致遭受中间人的网络攻击。

移动应用检测系统研究

针对Android系统的风险隐患,既要考虑应用信息、系统环境安全、数据安全、业务安全、移动应用漏洞、移动应用源码安全等多维度,也要构建一套准确高效检测系统,保障移动应用安全。基于Android系统的移动应用检测系统包括敏感权限风险检测、权限过度声明风险检测、权限滥用检测、权限越权检测等4个方面,对应用进行安全检测与评估。

敏感权限风险检测。敏感权限是指移动应用获取个人信息和个人敏感信息所需要的权限,敏感权限集合是指获取到个人信息所涉及的敏感信息的集合。通过统计App中含有的敏感权限,可以分析出App中取得个人信息的种类和方式。通过对Android应用所有的权限和个人信息安全的相关性进行分析,并结合相关法律法规,按照相关性的强弱形成个人信息安全敏感权限知识库。检测原理是获取AndroidManifest.xml文件中的权限声明集合,将该权限集合与敏感权限集合进行逐一比对,分析出移动应用的声明所有敏感权限,以及分析出各项敏感权限对个人信息安全的影响,流程如下:一是反编译Apk文件;二是获取AndroidManifest.xml文件中的权限声明集合;三是找出高敏感权和AndroidManifest.xml文件中的权限重叠的权限,如果没有重叠的就没有敏感权限,如果有重合的就有敏感权限。

权限过度声明风险检测。过度声明是指应用声明需要的权限在代码实际运行中没有使用,不符合《个人信息安全规范》中的最少够用原则。没有用到的权限,在配置文件中就不应该过度声明。检测分为静态扫描和动态行为检测2个模块。静态扫描部分使用权限代码扫描知识库对反编译代码进行静态扫描,扫描出代码中所有的申请和使用权限情况;动态行为检测技术利用沙箱监测系统,对被检测的App进行行为监测,并把个人隐私相关的行为转化为权限申请和使用的信息。通过动态运行App监测到的权限情况可以对抗各种静态代码变形无法准确代码分析的问题。通过静态检测和动态行为检测技术,将两者检测获取的权限形成权限集合,与AndroidManifest.xml文件的权限集合进行比对,两者之间的差距权限,定义为过度声明权限风险,流程如下:一是反编译App包,并静态扫描申请和使用的权限汇总成静态权限集合;二是使用沙箱动态监测App包申请和使用权限的汇总成动态权限集合;三是将静态权限集合和动态权限集合合并为一个代码权限集合,将代码权限集合和AndroidManifest.xml文件中声明的权限进行比对。AndroidManifest.xml文件中声明的权限多于代码权限集合的部分就是过度声明权限。

权限滥用检测。权限是应用系统的一种安全机制,其作用是限制应用程序内部的限制性功能使用和控制应用程序之间的组件相互访问。Android系统权限控制是通过在AndroidManifest.xml文件中增减权限实现的。权限滥用是指应用权限开放程度过高、声明的权限中超出应用实现功能所需要的最小范围,导致攻击者利用应用权限可以实现攻击行为,如读取通讯录、下载照片、开启录音、远程植入木马等,导致隐私数据泄露、盗取账号等风险。检测原理是通过对应用市场对同一行业的各个应用系统使用权限的情况进行统计,分析出各个行业的App对权限的共性需求,形成行业App最小权限知识库。再将AndroidManifest.xml文件中所声明权限和行业最小权限库相比对,判断是否存在权限滥用的行为。具体流程如下:一是反编译Apk文件,并获取到AndroidManifest.xml文件中声明的所有权限;二是将AndroidManifest.xml文件中声明的所有权限和行业最小权限库对比;三是比行业最小权限库多出的权限为滥用权限。

权限越权检测。权限越权行为是指通过分析在App隐私条款里边所提及的功能,这些功能所对应的权限形成一个功能权限集合。在App配置文件中声明的权限超过了隐私条款中说明的功能权限集合的功能,那么就存在权限越权行为。通过移动应用MD5值,通过大数据匹配是否实现与抓取隐私条款,若没有,则手动上传,通过人工智能匹配出条款中界定使用的權限类型,和AndroidManifest.xml文件进行比对,多余部分定义为权限越权,权限滥用作为检测项在个人信息安全检测报告中呈现。具体流程如下:一是人工打开App并找到隐私条款的页面;二是解读隐私条款中功能列表,通过网页页面转化为对应权限;三是将隐私条款中解析出来的权限和AndroidManifest.xml文件进行比对。

信息跨境传输检测。未向监管部门报备的个人信息向境外传输,有信息泄露的风险。通过检测移动应用是否有与境外通讯的情况,可以防范个人信息直接向境外传输。通过正则表达式对反编译代码和App中配置文件进行匹配,扫描出App中所有的IP信息和域名信息。采用静态检测技术获取移动应用中IP和域名信息,通过第三方技术接口查询出IP和域名归属地和运营商信息,从而分析移动应用是否有向境外服务器传输数据的情况。具体流程如下:一是反编译Apk文件;二是扫描smali文件内容,分析代码和配置文件中是否有IP和域名地址;三是将IP和域名地址进行所属地判断,如果发现国外的网址则有风险,无则没有风险。

信息加密通道风险检测。移动应用后台自行启动VPN服务,会造成数据被劫持、敏感信息泄露。通过对Apk文件反编译,再对smali文件进行扫描,识别出VPN服务器的特征代码,即可识别出移动应用的信息加密通道风险。

移动应用与生活密不可分,但恶意移动应用威胁着隐私和财产安全。基于安卓系统应用特点,从组件、代码和数据三个层面分析移动应用风险存在的原因,通过敏感权限风险检测、权限过度声明风险检测、权限滥用检测、权限越权检测、信息跨境传输检测和信息加密通道风险检测6个方面,设计出的这套全面准确的移动应用安全检测系统,能够有效促进移动应用信息使用规范化,推动移动信息产业安全有序发展。

(作者单位:浙江省电子信息产品检验研究院)

猜你喜欢
代码声明检测
本刊声明
本刊声明
“不等式”检测题
“一元一次不等式”检测题
“一元一次不等式组”检测题
本刊声明
本刊声明
创世代码
创世代码
创世代码