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实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式