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

2024-08-29 03:08

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

Service组件暴露 - exported属性


一、android:exported


该属性用来标示,其他应用的组件是否可以唤醒Service或者和这个Service进行交互


1. true

表示可以


2. false


【1】表示不可以,只有同一个应用的组件或者有着同样user ID的应用可以启动这个Service或者绑定这个Service


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


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


3. 默认值


【1】 据当前Service是否有intent filter标签来定

-  没有intent filter - 默认值为false

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


-  有intent filter - 默认值为true

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


4. 权限控制


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


【2】android:permission

  指定唤醒Service或与Service交互所需要的权限名称


5. 参考链接


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


二、触发条件


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


【1】对应的特征:<service


2. exported属性的判断


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


【2】exported属性设置为true

  显示设置 android:exported="true"

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


三、漏洞原理


【1】导出的Service组件可以被第三方APP任意调用,导致敏感信息泄露,并可能受到权限提升、拒绝服务等攻击风险


【2】详细的原理&POC


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

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


四、修复建议


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


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


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



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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学