关于Android 应用安全检测常见的中高风险问题

在这里插入图片描述

一:Activity组件导出风险

威胁描述:
Activity的最小化特权是指组件只能自身调用,其他应用无权访问,即组件不导出。Activity组件设置导出权限,则该组件能够被外部的其他组件直接调用,这样就可能导致泄露隐私数据或者应用程序崩溃等风险。Activity被恶意应用调用,可能有以下威胁描述:修改程序的状态或者数据;被调用的Activity可能返回隐私信息给恶意应用,造成数据泄露;可能使应用程序崩溃,造成拒绝服务等漏洞。

解决方法:

开发者自查,设置AndroidManifest.xml文件中Activity组件EXPORTED属性为false,
对于必须导出的组件必须限制于授权用户或者特定应用组件,并且尽量不包含任何的Intent Filter

二:动态注册Receiver风险

威胁描述:
BroadcastReceiver组件可动态注册,即在代码中使用registerReceiver()方法注册BroadcastReceiver,只有当registerReceiver()的代码执行到了才进行注册,取消时则调用unregisterReceiver()方法。但registerReceiver()方法注册的BroadcastReceiver是全局的并且默认可导出的,如果没有限制访问权限,可以被任意外部APP访问,向其传递Intent来执行特定的功能。因此,动态注册的BroadcastReceive可能导致拒绝服务攻击、APP数据泄漏或是越权调用等风险。

解决方案:

1:在 AndroidManifest.xml 文件中使用静态注册 BroadcastReceiver,同时设置 exported="false"2:必须动态注册 BroadcastReceiver时,使用registerReceiver(BroadcastReceiver,IntentFilter,broadcastPermission,android.os.Handle)函数注册。

3Android8.0新特性想要支持静态广播、需要添加intent.setComponent(new ComponentName()),详情可以自行查阅

4:使用registerReceiver(BroadcastReceiver receiver,IntentFilter filter, @Nullable String broadcastPermission,@Nullable Handler scheduler);注册带权限的广播。

三:Webview远程调试风险

威胁描述:
在Android 4.4及以上版本的手机上,可以使用Chrome远程调试手机上原生应用中WebView页面。在应用中开启WebView调试,将WebView类静态方法setWebContentsDebuggingEnabled设置为true,使用Chrome浏览器的开发工具inspect可以直接调试应用中WebView页面。开启Webview远程调试功能,可能会被非法使用者利用此漏洞来获取 js源代码,从而可能造成功能逻辑泄露;如果js被篡改,可能被植入钓鱼页面或者恶意代码,造成用户的敏感信息泄露。

解决方案:

建议开发者将setWebContentsDebuggingEnabled设置为false来关闭WebView的远程调试功能。

四:WebView组件忽略SSL证书验证错误风险

威胁描述:
Android WebView组件加载使用HTTPS协议加密的网页时,如果服务端校验证书错误,客户端应该拒绝加载网页。但是如果发生证书认证错误时,调用WebViewClient类的onReceivedSslError方法,并在该方法实现中调用了handler.proceed()来忽略该证书错误,则客户端会绕过证书校验错误继续加载此网页。这样会导致“中间人攻击”,攻击者可以冒充中间人,在客户端和服务端中间转发信息,窃取账号、密码等敏感信息。

解决方案:

当发生证书认证错误时,采用默认的处理方法handler.cancel(),停止加载问题页面。

.五: 数据越权备份风险

.威胁描述:
Android 2.1以上的系统可为APP提供应用程序数据的备份和恢复功能,该功能由AndroidMainfest.xml文件中的allowBackup 属性值控制,其默认值为true。当该属性没有显式设置为false时,攻击者可通过adb backup和adb restore对APP的应用数据进行备份和恢复,从而可能获取明文存储的用户敏感信息,如用户的密码、证件号、手机号、交易密码、身份令牌、服务器通信记录等。利用此类信息攻击者可伪造用户身份,盗取用户账户资产,或者直接对服务器发起攻击。

解决方案:

AndroidMainfest.xml文件中的allowBackup属性值设置为false来关闭应用程序的备份和恢复功能;
或者使用专业安全加固方案的本地数据保护功能,避免本地数据泄露。

六:StrandHogg漏洞

威胁描述:
StrandHogg是一个存在于Android多任务系统中的应用漏洞。此漏洞利用APP清单文件AndroidManifest.xml中android:taskAffinity的属性设置,使安装在Android设备上的恶意应用可以伪装成该设备上的任意其他应用程序,包括需要特权的任意系统应用程序。当用户点击正常应用图标时,恶意程序可以拦截劫持这个任务,并伪装成正常应用程序的界面,从而窃取用户的敏感数据。同时恶意应用程序还可以冒充正常应用向用户请求权限,包括SMS、照片、麦克风和GPS等,从而允许攻击者访问短信和通讯录、查看相册、窃听并跟踪受害者等。

解决方案:

建议AndroidManifest.xml文件中“android:taskAffinity”属性值设置为空,
即android:taskAffinity=""

.七:截屏攻击风险检测
.
.威胁描述:
截屏攻击是指在APP运行过程中,界面被监控并且截屏或者录屏。截屏攻击主要发生在APP登录、身份认证、资金操作等界面。Android5.0中增加了一个MediaProjection接口,它提供截屏或者录屏的服务,准许APP拥有截取屏幕或者记录系统音频的能力。同时系统允许其他消息窗口覆盖在系统的录制提示上,从而在用户无感知的情况下启动录屏或者截屏工具。通过此方式,攻击者可以获取APP关键界面的截图或者录像,从而获取用户的敏感信息。

解决方案:

Activityoncreate()方法中调用getWindow().setFlags(
LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
或者getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
达到防止截屏攻击的目的。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值