Android静态安全检测 - Activity组件暴露

2024-08-29 03:08

本文主要是介绍Android静态安全检测 - Activity组件暴露,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Activity组件暴露 - exported属性


一、android:exported


该属性用来标示,当前Activity是否可以被另一个Application的组件启动


1. true

表示允许被启动


2. false


【1】表示不允许被启动,这个Activity只会被当前Application或者拥有同样user ID的Application的组件调用


【2】关于user ID的参考链接


http://yelinsen.iteye.com/blog/977683


3. 默认值


【1】根据Activity中是否有intent filter标签来定

  -  没有intent filter - 默认值为false

     没有任何的filter意味着这个Activity只有在详细的描述了它的class name后才能被唤醒,这意味着这个Activity只能在应用内部使用,因为其它应用程序并不知道这个class的存在,所以在这种情况下,它的默认值是false


  -  有intent filter - 默认值为true

     如果Activity里面至少有一个filter的话,意味着这个Activity可以被其它应用从外部唤起,这个时候它的默认值是true


4. 权限控制


【1】不只有exported这个属性可以指定Activity是否暴露给其它应用,也可以使用permission来限制外部实体唤醒当前Activity


【2】android:permission  指定启动该Activity所需要的权限名称


5. 参考链接


http://blog.csdn.net/watermusicyes/article/details/46460347


二、触发条件


1. 定位AndroidManifest.xml文件中的Activity组件


【1】对应的特征:<activity


2. exported属性的判断


【1】android:permission 如果设置权限控制,就认为不存在安全风险


【2】exported属性设置为true

  显示设置android:exported="true"

  默认值为true,也就是具有intent filter标签,对应的特征:<intent-filter


3.主Activity(MainActivity)


【1】应用程序需要包含至少一个Activity组件来支持MAIN操作和LAUNCHER种类,即为主Activity

  对应的特征


【2】暴露的Activity组件不包括主Activity


三、漏洞原理


【1】导出的Activity组件可以被第三方APP任意调用,导致敏感信息泄露,并可能受到绕过认证、恶意代码注入等攻击风险


【2】详细的原理&POC


http://www.droidsec.cn/android-activtity-security/

http://drops.wooyun.org/tips/3936


四、修复建议


【1】如果应用的Activity组件不必要导出,或者组件配置了intent filter标签,建议显示设置组件的“android:exported”属性为false


【2】如果组件必须要提供给外部应用使用,建议对组件进行权限控制

这篇关于Android静态安全检测 - Activity组件暴露的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116665

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级