你不知道的Android SDK安全测试

原文地址:

http://wetest.qq.com/lab/view/138.html?from=ads_test2_qqtips&sessionUserType=BFT.PARAMS.196734.TASKID&ADUIN=286513245&ADSESSION=1470806885&ADTAG=CLIENT.QQ.5485_.0&ADPUBNO=26602

本文由腾讯WeTest授权发布,禁止任何形式转载!

作者:anglia,腾讯资深系统测试工程师

引言

作为Android手机用户中的一枚残粉,假如突然手机掉了,脑电波蹦出的第一个念想是见鬼,还是您的支付宝或者微信上的钱不安全呢?

假如最新下载的app,进去时不仅弹出各种无聊广告,而且通知栏还会冒出意想不到的推送,您会想到这可能是钓鱼推送,马上卸载app?

假如百度全家桶事件,您卸载了所有的百度app,但乌云暴漏的百度WormHole事件,无论是wifi或3G/4G蜂窝网络,只要手机在联网状态都有可能受到攻击,你是否会考虑换掉Android手机呢?

Mi粉狂热已经冷却,华为手机开始跟着Android生态发展攻陷全球,物美价廉的Android手机走入寻常百姓家。面对Android安全漏洞认知不足的用户,如何保证我们的app给用户安心的体验?Android生态安全漏洞有哪些?Android安全测试技术探新在哪儿?如何将安全常规测试流程化

Android常见安全漏洞汇总

首先,Android操作系统拥有开源的开发红利,也暗藏着后天发展的安全畸形,如:Android系统设计了沙箱系统(即虚拟机),但是底层却出现一个又一个漏洞让恶意程序(或工具)获取root权限以打破沙箱的限制。如同pc时代,没有绝对安全的pc操作系统,移动互联网时代,也没有有绝对安全的移动操作系统。Android开源生态的安全隐患,就像染血的警钟,敲击在每位Android开发者的心里。

其次,Android APP/SDK开发过程中的安全隐患就像未知黑洞,永远都不知道安全对抗的终点在哪,攻击者是谁,终结者又是谁,如何防御。

最后,用户层面,常见的、可识别的安全行为漏洞有哪些表现。

以上三个维度的已知安全漏洞总结如下:

无论是Android App,还是SDK,或多或少都有安全漏洞的死角。说不定某天你的应用就遭到以上的某种安全漏洞呢。恰巧,前段时间测试一款Android版SDK时,发现一种跟Android应用组件相关的安全漏洞。借此实例化地总结了Android SDK安全测试方法、技术和流程。

应用Android版安全测试实例

漏洞原因概述

某款应用(后面简称应用)Android版SDK的一个可选组件,在本地开启了一个随机端口,用于监控java层service是否存活,但java层跟组件通讯时,未对输入参数做严格检验,导致在调用linux系统“system()”函数时,有被填充攻击代码,恶意攻击的可能性。

如下截图是模拟端口被攻击后,在应用组件intent进行通信过程中,修改了url内容,webview显示乱码的情况:

漏洞潜在安全危害

Android APP的四大应用组件:Activity、Receiver、Service和Content provider,以及应用组件通过intent进行IPC通信等安全角色,暂不发散详述。借助于上述案例中应用的组件相关漏洞,展示终端APP侧相关的攻击维度如下图:

由于Android APP本地应用环境,网络socket先天缺乏细粒度的认证授权机制,因此,如果把Android客户端当做服务器,利用逆向代码搜索应用的本地随机端口号,主动向端口发送攻击,就潜伏着如下安全危害:

1.本地命令执行:当嵌入应用的Packagename指定为应用自身,Componentname指定为应用的activity时,可以启动该应用的任意activity,包括受保护的未导出activity,从而造成安全危害。如,通过HTTP请求,逐一启动若干未导出的activity,可以发现拒绝服务漏洞。

2.命令控制修改应用权限:通过开放socket端口传入启动Android应用组件的intent,然后以被攻击应用的权限执行启动activity、发送广播等操作。由于通过socket传入的intent,无法对发送者的身份和权限进行细粒度检查,绕过了Android提供的对应用组件的权限保护,能启动未导出的和受权限保护的应用组件,对安全造成危害

3.敏感信息泄露,控制手机:本地某service打开UDP的端口监听,接收特定的命令字后,可返回手机的敏感信息。如百度手机管家,远程管理手机的secretKey,进而未授权的攻击者可通过网络完全管理手机。

应用Android安全测试执行

应用Android安全加固版本优化点

1.Native层和Java层增加对系统命令检查,特殊字符检查过滤

2.JNI Watchdog守护进程 socket通信加密

3.本地通知功能,添加url、intent、activity的特性验证,防止点击通知后,跳转到恶意链接

4.修改Packagename在应用本地的存储位置

5.增加在线配置功能

以上是此次安全加固优化的重要需求点。

专项安全点测试

如果按照常规的系统测试或者性能测试,只需要根据变动需求,进行正向的测试便可,但对于安全测试,保证SDK安全的健壮性需要进行逆向专项测试,模拟各种安全攻击手段,针对修改点发散测试用例。

Android常规的安全流程回归测试

1.隐私数据:外部存储安全和内部存储安全;用户名、密码、聊天记录、配置信息等隐私信息是否被保存在本地,是否加密保存;使用数据前都判断信息是否被篡改;

2.权限攻击:检查App所在的目录,其权限必须为不允许其他组成员读写;检查系统权限是否收到攻击;

3.Android组件权限保护:禁止App内部组件被任意第三方程序调用:禁止Activity被任意第三方程序调用,禁止Activity劫持;Broadcast的接收和发送安全,只能接收本程序发出的广播,发送的内容不想让第三方获得;禁止恶意的启动或者停止service;Content  provider的操作权限;若需要供外部调用的组件,应检查对调用者是否做了签名限制;

4.升级:检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持;

5.3rd库:如果使用了第三方库,需要跟进第三方库的更新并且检查第三方库的安全性;

6.ROM安全:使用官方ROM或者权威团队提供的ROM,避免ROM中被添加了植入广告、木马等;

7.对抗反破解:对抗反编译,即无法通过反编译工具对其进行反编译,或者反编译之后无法得到正确的反汇编代码;对抗静态分析,采用代码混淆技术,代码加密;对抗动态调试,在软件中加入检测调试器和模拟器的代码;防止重编译,检查签名、校验编译之后dex文件的Hash值。

安全专项测试和常规流程测试完后,针对应用现有的功能、新旧版本兼容性、以及不同Android操作系统版本的兼容性,进行滚动回归测试。

Android安全测试总结

相对于普通的性能和系统功能测试用例,安全测试用例需要更全面的理解Android生态系统,如:用例需要覆盖到用户安全表象层面、应用系统本地和远程攻击层面、以及操作系统本身漏洞层面,且更多的需要设计逆向攻击思维的测试用例。

如果说开发的出发点是安全对抗防御,那么测试的出发点却是黑客攻击的思维,如何设计攻击场景的测试用例,攻击测试的技术如何实现,决定了SDK安全的健壮性。

相关参考文献和案例

浅谈Android开放网络端口的安全风险

app安全测试入门

百度系应用WormHole漏洞细节分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容