【干货】移动APP安全测试要点解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

随着运营商新技术新业务的发展,运营商集团层面对安全的要求有所变化,渗透测试工作将会面临内容安全、计费安全、客户信息安全、业务逻辑及APP等方面的挑战。随着运营商自主开发的移动APP越来越多,这些APP可能并不会通过应用市场审核及发布,其中的安全性将面临越来越多的挑战。

这个问题也引起了运营商的足够重视,已经自主开发了自动化检测工具及定期的APP安全测试评估工作。在此,绿盟科技博客特别邀请到移动APP安全测试专家,让他们结合一次Android APP安全测试实例,为大家讲解评估特点,并将评估检查点、评估细节和整改建议一一列出,给大家提供移动终端APP安全测试的思路。

评估思路

移动APP面临的威胁

风起云涌的高科技时代,随着智能手机和iPad等移动终端设备的普及,人们逐渐习惯了使用应用客户端上网的方式,而智能终端的普及不仅推动了移动互联网的发展,也带来了移动应用的爆炸式增长。在海量的应用中,APP可能会面临如下威胁:

wKioL1YwJ-PiDVpUAAJCzxSA5go213.jpg

新技术新业务移动APP评估思路

在这次的移动APP安全测试实例中,工作小组主要通过如下7个方向,进行移动终端APP安全评估:

wKioL1YwJ_CjXLy1AAFDVJnJAw4189.jpg

运营商自动化APP测评思路

运营商自主开发的自动化APP安全检测工具,通过”地、集、省”三级机构协作的方式,来完成移动终端APP安全检测与评估。APP测试思路如下:

wKiom1YwJ8qj8BwZAAJOooJxlvs929.jpg

安全检测要点

Allowbackup漏洞

AndroidManifest.xml文件中allowBackup属性值被设置为true。当allowBackup标志为true时,用户可通过adb backup来进行对应用数据的备份,在无root的情况下可以导出应用中存储的所有数据,造成用户数据的严重泄露。

wKioL1YwKAjSp-lUAAE9i8CjptY487.jpg

整改建议:

将参数android:allowBackup属性设置为false,不能对应用数据备份。

WebView漏洞

应用中存在WebView漏洞,没有对注册JAVA类的方法调用进行限制,导致攻击者可以利用反射机制调用未注册的其他任何JAVA类,最终导致javascript代码对设备进行任意攻击。

wKiom1YwJ96z-wY4AADBc_s539A007.jpg

整改建议:

通过在Java的远程方法上面声明一个@JavascriptInterface 来代替addjavascriptInterface;

在使用js2java的bridge时候,需要对每个传入的参数进行验证,屏蔽攻击代码;

Note :控制相关权限或者尽可能不要使用js2java 的bridge 。

关键数据明文传输

应用程序在登录过程中,使用http协议明文传输用户名和密码,并未对用户名和密码进行加密处理。通过监控网络数据就可以截获到用户名和用户密码数据,导致用户信息泄露,给用户带来安全风险。

wKioL1YwKE-SrTl8AADXo17lKiI137.jpg

整改建议:

在传输敏感信息时应对敏感信息进行加密处理。

任意账号注册

使用手机号133*****887注册某个APP,获取验证码46908;

wKiom1YwKCvh92YRAACOXaouTWg128.jpg

在确认提交时,拦截请求,修改注册的手机号码,即可注册任意账号,这里修改为1338*****678(任意手机号);

wKioL1YwKHCBvfr_AAF5xJlhQ5Y431.jpg


分别使用133**887和133**678(任意手机号)登录,均可以通过验证登录,看到最终结果。

wKioL1YwKIbwFTkXAAEBnymYF38581.jpg


整改建议:

注册过程最后的确认提交时,服务器应验证提交的账号是否是下发验证码的手机号。

登录界面可被钓鱼劫持

应用存在钓鱼劫持风险。应用程序没有做防钓鱼劫持措施,通过劫持应用程序的登录界面,可以获取用户的账号和密码,可能导致用户账号信息的泄露。

wKiom1YwKFygOe6aAAB5wfl4Cao009.jpg

整改建议:

应用程序自身通过获取栈顶activity,判断系统当前运行的程序,一旦发现应用切换(可能被劫持),给予用户提示以防范钓鱼程序的欺诈。

获取栈顶activity(如下图),当涉及敏感activity(登录、交易等)切换时,判断当前是否仍留在原程序,若不是则通过Toast给予用户提示。

wKioL1YwKOeyAiTwAABoFJ4hCTc388.jpg

使用HTML5架构或android+HTML5混合开发,实现登陆、支付等关键页面,降低被劫持的风险。

有争议的整改建议

在实施整改过程中,运营商、APP厂商及安全厂商之间就如下几点存在争议:

关键数据明文传输

根据客户测评结果以及移动终端APP厂商理解,目前的数据安全问题可为:

客户端安全(数据录入)
客户端到服务器安全(数据传输)
服务器端安全(数据存储)

而关键数据明文传输属于客户端数据录入安全,针对此部分,目前不仅是移动终端APP,包括Web安全方面,对此部分要求也是不一而分,具体可以体现为:

具有现金流的交易平台:此类业务安全级别要求最高,在数据传输方面也是目前做得最好的。主要代表是:淘宝、京东、各大银行网银等。

具有较大社会影响力的平台:此类业务安全级别低于上述业务,但由于账户数据丢失以后,对其自身以及社会影响较大,所以在传输上也不会采取明文传输。如:百度、腾讯等。

数据丢失本身不会造成较大的影响的平台:此类业务账户数据本身价值不大,丢失以后也不会造成影响,或者本身不会受到太大关注,一般都不会对传输数据进行加密。这样的例子比比皆是。

当然也有厂商提出,明文传输在某些专业的漏洞检测和通报的网站上,是不属于安全漏洞的,为了验证此异议,在某平台上提交了一份关于明文传输的漏洞,得到的结果请看下图:

wKiom1YwKL6j6osXAAChCjtxn38822.jpg

登录界面钓鱼劫持

APP应用存在钓鱼劫持风险。应用程序没有做防钓鱼劫持措施,通过劫持应用程序的登录界面,可以获取用户的账号和密码,可能导致用户账号信息的泄露。

这一条检测结果,最大的争议在于按照整改建议整改以后,对一般用户来说,没有任何作用。首先,我们了解一下钓鱼劫持如何产生。

Android钓鱼原理

需要理解,Android启动一个Activity时,是这样设计的,给Activity加入一个标志位FLAG_ACTIVITY_NEW_TASK,就能使它置于栈顶并立马呈现给用户。但是这样的设计却有一个缺陷。如果这个Activity是用于盗号的伪装Activity呢?这种现象在XcodeGhost事件中,已经被证实是可以实现的。

在Android系统当中,程序可以枚举当前运行的进程而不需要声明其他权限,这样的话,就可以编写一个程序,启动一个后台的服务,这个服务不断地扫描当前运行的进程,当发现目标进程启动时,就启动一个伪装的Activity。如果这个Activity是登录界面,那么就可以从中获取用户的账号密码,具体的过程如下图:

wKioL1YwKP3BIh-HAAFlfuxv2zU592.jpg

检测原理描述清楚以后,就需要给出让软件厂商能够明白的整改建议以及漏洞情景重现。

Android钓鱼情景演示

以小米手机为例:

1.当打开3个APP时,最后一个打开的APP”语音助手”,切换至手机桌面,长按HOME键查看进程,”语音助手”会显示在进程的第一个。

wKiom1YwKNXwAY4lAACdrvocpOk624.jpg

2.点击”微信”以后,切换至”微信”,再查看进程,可以看到,进程中由于”微信”已切换至当前窗口,故进程中不存在。

wKiom1YwKOCBGWjrAABwnpZedUM854.jpg

3.可以从第1步看到,当切换至手机桌面时,无论是语音助手、手机令牌、还是微信,都是默认后台运行,而且切换出来以后无任何提示。这样,当恶意activity收到微信登录界面或者其他敏感界面的时候,就会抢先推送至客户,从而让客户轻易的输入了帐号,并获取了客户的信息,但此时微信不会做任何提示。

4.再来观看一下某行手机APP,当切换至手机桌面时,会对客户做出提示。如下图:

wKiom1YwKQ7wWOBQAAFQxjPoCNM937.jpg

假设一下页面是恶意推送的activity,那么在恶意推送的APP页面,应该会显示出此类提示,告知客户,此页面并非正常APP的页面。

用户打开正常页面 vs 用户打开了恶意页面:


wKioL1YwKU_R3clEAAJDqfeWkWM414.jpg










本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/1706184,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
SQL 安全 测试技术
网络安全的屏障与钥匙:漏洞防护与加密技术解析软件测试的艺术:探索性测试的力量
【8月更文挑战第27天】在数字时代的海洋中,网络安全是保护我们数据资产的灯塔和堤坝。本文将深入浅出地探讨网络安全领域的关键要素——安全漏洞、加密技术以及不可或缺的安全意识。通过实际案例分析,我们将了解如何识别和修补潜在的安全漏洞,掌握现代加密技术的工作原理,并培养起一道坚固的安全防线。文章旨在为读者提供实用的知识和技能,以便在日益复杂的网络环境中保持警惕,确保个人及组织信息的安全。
|
6天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
5天前
|
安全 测试技术 UED
软件测试的艺术:从代码审查到用户体验的全方位解析
在软件开发的宇宙中,测试是那颗最耀眼的星辰。它不仅仅是一种技术活动,更是一门艺术。本文将带你领略这门艺术的魅力,从细微的代码审查到宏大的用户体验设计,揭示软件测试如何塑造出更加完美的数字世界。
|
16天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
30 4
|
16天前
|
机器学习/深度学习 人工智能 算法
软件测试的艺术:从代码审查到用户体验的全方位解析
在软件开发过程中,一个经常被低估的环节就是软件测试。许多人认为测试仅仅是“点击几下鼠标,看看是否有错误”。然而,真正的软件测试是一门集技术深度、策略规划和细致观察于一体的艺术。它不仅关系到产品的质量和稳定性,更直接影响到最终用户的满意度。本文将从多个角度深入探讨软件测试的重要性、方法和最佳实践,帮助你理解为什么说软件测试是一种艺术。
|
18天前
|
设计模式 人工智能 算法
PHP中的设计模式:策略模式的深入解析与实践软件测试中的人工智能革命:提升效率与准确性的新篇章
在PHP开发中,理解并运用设计模式是提升代码质量和可维护性的重要途径。本文聚焦于策略模式(Strategy Pattern),一种行为型设计模式,它允许在运行时选择算法或业务规则。通过本文,我们将深入探讨策略模式的定义、结构、使用场景以及如何在PHP项目中有效地实现和利用策略模式。不同于性能优化等技术性摘要,本文着重于提供对策略模式全面而实用的理解,助力开发者编写出更加灵活和可扩展的应用程序。 本文深入探讨了人工智能在软件测试领域的应用,揭示了其如何显著提高测试过程的效率和准确性。通过实际案例分析,展示了AI技术在自动化测试、缺陷检测及结果分析中的关键作用,并讨论了实施AI测试策略时面临的挑
17 3
|
18天前
|
敏捷开发 安全 测试技术
软件测试的艺术:从代码到用户体验的全方位解析
本文将深入探讨软件测试的重要性和实施策略,通过分析不同类型的测试方法和工具,展示如何有效地提升软件质量和用户满意度。我们将从单元测试、集成测试到性能测试等多个角度出发,详细解释每种测试方法的实施步骤和最佳实践。此外,文章还将讨论如何通过持续集成和自动化测试来优化测试流程,以及如何建立有效的测试团队来应对快速变化的市场需求。通过实际案例的分析,本文旨在为读者提供一套系统而实用的软件测试策略,帮助读者在软件开发过程中做出更明智的决策。
|
9天前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
|
2月前
【Azure App Service】同一个App Service下创建多个测试站点的方式
【Azure App Service】同一个App Service下创建多个测试站点的方式
|
21天前
|
运维 测试技术 持续交付
软件测试的艺术:从代码审查到用户体验的全方位解析
本文将探讨如何通过高效、全面的软件测试策略,确保产品质量和用户体验。我们将深入分析不同类型的测试方法,包括单元测试、集成测试、系统测试、性能测试和用户验收测试(UAT),并介绍每种方法的具体实施步骤和最佳实践。此外,我们还将讨论测试自动化的重要性及其在现代软件开发流程中的应用。通过阅读本文,您将获得一套完整的软件测试解决方案,帮助您提升产品质量和用户满意度。
27 0

推荐镜像

更多
下一篇
无影云桌面